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

Python RandomForest - 未知标签错误

如何解决《PythonRandomForest-未知标签错误》经验,为你挑选了2个好方法。

我在使用RandomForest fit函数时遇到了麻烦

这是我的训练集

         P1      Tp1           IrrPOA     Gz          Drz2
0        0.0     7.7           0.0       -1.4        -0.3
1        0.0     7.7           0.0       -1.4        -0.3
2        ...     ...           ...        ...         ...
3        49.4    7.5           0.0       -1.4        -0.3
4        47.4    7.5           0.0       -1.4        -0.3
... (10k rows)

感谢使用sklearn.ensemble RandomForest的所有其他变量,我想预测P1

colsRes = ['P1']
X_train = train.drop(colsRes, axis = 1)
Y_train = pd.DataFrame(train[colsRes])
rf = RandomForestClassifier(n_estimators=100)
rf.fit(X_train, Y_train)

这是我得到的错误:

ValueError: Unknown label type: array([[  0. ],
       [  0. ],
       [  0. ],
       ..., 
       [ 49.4],
       [ 47.4],

我没有发现任何有关此标签错误的信息,我使用的是Python 3.5.任何建议都会有很大的帮助!



1> Gurupad Hegd..:

当您将标签(y)数据传递给 rf.fit(X,y)它时,它期望y为1D列表.切片熊猫框架总会产生2D列表.因此,在您的用例中引发了冲突.您需要将pandas DataFrame提供的2D列表转换为fit函数所期望的1D列表.

首先尝试使用1D列表:

Y_train = list(train.P1.values)

如果这不能解决问题,您可以尝试使用MultinomialNB错误中提到的解决方案:"未知标签类型":

Y_train = np.asarray(train['P1'], dtype="|S6")

所以你的代码变成了,

colsRes = ['P1']
X_train = train.drop(colsRes, axis = 1)
Y_train = np.asarray(train['P1'], dtype="|S6")
rf = RandomForestClassifier(n_estimators=100)
rf.fit(X_train, Y_train)



2> N. Wouda..:

根据这篇SO帖子,分类器需要整数或字符串标签.

您可以考虑切换到回归模型(这可能更适合您的数据,因为每个数据看起来都是浮点数),如下所示:

X_train = train.drop('P1', axis=1)
Y_train = train['P1']
rf = RandomForestRegressor(n_estimators=100)
rf.fit(X_train.as_matrix(), Y_train.as_matrix())

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