当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《当期望1d阵列时,传递列向量y》经验,为你挑选了4个好方法。

我需要适应RandomForestRegressorsklearn.ensemble.

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

这段代码一直有效,直到我对data(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] 任何想法如何解决这个问题?



1> 小智..:

改变这一行:

model = forest.fit(train_fold, train_y)

至:

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


有人可能会解释它实际发生的变化.
@ rahulParashar`ravel()`的作用是:当你有`y.shape ==(10,1)`时,使用`y.ravel().shape ==(10,)`.用语言来说......它会使数组变平.
如果你有一个numpy.ndarray,那么请改用train_y.ravel().

2> 小智..:

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

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

在我使用的这条线之前import numpy as np.



3> Coral..:

使用下面的代码:

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)



4> mohammad has..:

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

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

希望这能解决。

推荐阅读
保佑欣疼你的芯疼
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有