当期望1d阵列时,传递列向量y

时间:2015-12-08 20:47:30

标签: python pandas numpy scikit-learn

我需要适应function DisableMonths(valid_months) { var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; $('.month').each(function() { var month = $(this).html() , index = +months.indexOf(month) + 1; var index_valid = valid_months.indexOf(index.toString()); if (index_valid >= 0) { $(this).addClass('available').removeClass('disabled'); } else { $(this).addClass('disabled').removeClass('available'); } }); } 的{​​{1}}。

RandomForestRegressor

此代码始终有效,直到我对数据进行了一些预处理(sklearn.ensemble)。 错误消息显示:

  

DataConversionWarning:当期望1d数组时,传递了列向量y。请将y的形状更改为(n_samples,),例如使用ravel()。

     

model = forest.fit(train_fold,train_y)

以前forest = ensemble.RandomForestRegressor(**RF_tuned_parameters) model = forest.fit(train_fold, train_y) yhat = model.predict(test_fold) 是一个系列,现在是它的numpy数组(它是一个列向量)。如果我应用train_y,那么它将成为行向量并且不会显示任何错误消息,通过预测步骤需要很长时间(实际上它永远不会完成......)。

train_y的文档中,我发现train_y.ravel()应定义为RandomForestRegressor 知道如何解决这个问题吗?

8 个答案:

答案 0 :(得分:99)

更改此行:

model = forest.fit(train_fold, train_y)

为:

model = forest.fit(train_fold, train_y.values.ravel())

答案 1 :(得分:12)

当我尝试训练 KNN 分类器时,我也遇到过这种情况。但似乎在我改变后警告消失了:
knn.fit(X_train,y_train)

knn.fit(X_train, np.ravel(y_train,order='C'))

在这一行之前,我使用了import numpy as np

答案 2 :(得分:8)

使用以下代码:

model = forest.fit(train_fold, train_y.ravel())

如果你仍然因为错误而得到以下相同的打击?

Unknown label type: %r" % y

使用此代码:

y = train_y.ravel()
train_y = np.array(y).astype(int)
model = forest.fit(train_fold, train_y)

答案 3 :(得分:3)

我有同样的问题。问题在于标签是按列格式的,而它却希望连续显示。 使用np.ravel()

knn.score(training_set, np.ravel(training_labels))

希望这可以解决。

答案 4 :(得分:2)

使用neuraxle,您可以轻松解决此问题:

p = Pipeline([
   # expected outputs shape: (n, 1)
   OutputTransformerWrapper(NumpyRavel()), 
   # expected outputs shape: (n, )
   RandomForestRegressor(**RF_tuned_parameters)
])

p, outputs = p.fit_transform(data_inputs, expected_outputs)

Neuraxle是类似于sklearn的框架,用于深度学习项目中的超参数调整和AutoML!

答案 5 :(得分:2)

Y = y.values [:,0]

Y-formated_train_y

y-train_y

答案 6 :(得分:1)

另一种方法是使用ravel

model = forest.fit(train_fold, train_y.values.reshape(-1,))

答案 7 :(得分:1)

format_train_y=[]
for n in train_y:
    format_train_y.append(n[0])