Python RandomForest - 未知标签错误

Python RandomForest - Unknown label Error

我在使用 RandomForest 拟合函数时遇到问题

这是我的训练集

         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。 任何建议都会有很大帮助!

According to , Classifiers need integer or string labels.

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

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())

当您将标签 (y) 数据传递给 rf.fit(X,y) 时,它期望 y 是一维列表。切片 Panda 框架总是会产生一个 2D 列表。因此,您的用例中出现了冲突。您需要将 pandas DataFrame 提供的二维列表转换为适合函数预期的一维列表。

首先尝试使用一维列表:

Y_train = list(train.P1.values)

如果这不能解决问题,您可以尝试MultinomialNB error: "Unknown Label Type"中提到的解决方案:

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)

可能来晚了一点,但我刚收到这个错误并通过使用

确保我的 y 变量是 type(int) 来解决它
 y = df['y_variable'].astype(int) 

在进行火车测试拆分之前,也像其他人所说的那样,您的问题似乎更适合 RFReg 而不是 RF