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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了当期望1d阵列时,传递列向量y相关的知识,希望对你有一定的参考价值。

我需要适应RandomForestRegressorsklearn.ensemble

forest = ensemble.RandomForestRegressor(**RF_tuned_parameters)
model = forest.fit(train_fold, train_y)
yhat = model.predict(test_fold)

这段代码一直有效,直到我对数据进行了一些预处理(train_y)。错误消息说:

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

model = forest.fit(train_fold,train_y)

以前train_y是一个系列,现在它是numpy数组(它是一个列向量)。如果我应用train_y.ravel(),那么它就变成了一个行向量,并且没有出现错误信息,通过预测步骤需要很长时间(实际上它永远不会完成......)。

RandomForestRegressor的文档中,我发现train_y应该定义为y : array-like, shape = [n_samples] or [n_samples, n_outputs]任何想法如何解决这个问题?

答案

改变这一行:

model = forest.fit(train_fold, train_y)

至:

model = forest.fit(train_fold, train_y.values.ravel())
另一答案

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

在这条线之前,我使用了import numpy as np

另一答案

使用下面的代码:

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)
另一答案

我有同样的问题。问题是标签是一种列格式,而它预计会连续排列。使用np.ravel()

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

希望这能解决它。

另一答案

另一种方法是使用ravel

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

以上是关于当期望1d阵列时,传递列向量y的主要内容,如果未能解决你的问题,请参考以下文章

线性代数笔记:标量向量矩阵求导

通过opengl中的纹理传递数组数据

将继承的类对象的向量传递给期望基类向量的函数

在片段着色器问题中读取 image1d

在 CG 和 openGL 中使用统一的 1D 纹理参数时出错

如何优化C ++代码的以下片段 - 卷中的零交叉