一个数据集包含超过2500行
和22列
,其中包括age列
。我已经完成了SVR的所有处理步骤,正在进行中。但我仍然面临一个错误。错误是raise ValueError("bad input shape {0}".format(shape)), ValueError: bad input shape (977, 57)
。我的输入是SupportVectorRefModel.fit(X_train, y_train)
。我该如何解决这个问题?
from sklearn.model_selection import train_test_split from sklearn.svm import SVR X_train, y_train = dataset.loc[:1000], dataset.loc[:1000] X_test, y_test = dataset.loc[1001], dataset.loc[1001] train_X, train_y = X_train.drop(columns=['age']), y_train.pop('age')test_X, test_y = X_test.drop(columns=['age']), y_test.pop('age')raise ValueError("bad input shape {0}".format(shape))ValueError: bad input shape (977, 57)
回答:
如果您想删除给定列的前x
行,请使用DataFrame.drop
df = df.drop(range(end))
其中end
是您想要从数据集开头删除的行数。
注意:您无法仅从单个列中删除元素。您必须删除所有行或用NaN或其他替换值替换被删除的值
更新
经过原帖者的进一步澄清,最终结果是从X_*
数据框中删除age
列,并将age
列存储在其自己的数据框*_y
中
from sklearn.model_selection import train_test_split from sklearn.svm import SVR X_train, y_train = dataset.loc[:1000], dataset.loc[:1000] X_test, y_test = dataset.loc[1001], dataset.loc[1001] train_X, train_y = X_train.drop(columns=['age']), y_train.pop('age')test_X, test_y = X_test.drop(columns=['age']), y_test.pop('age')
这应该会给您带来期望的最终结果。