【发布时间】:2019-01-15 18:26:10
【问题描述】:
更新:如何为多个类别的 scikit randomforestclassifier 设置我的训练/测试 df?如何预测?
我的训练数据集有一个包含 4 个类别的分类结果列,我想预测这四个类别中的哪一个最有可能用于我的测试数据。查看其他问题,我尝试使用 pandas get_dummies 将四个新列编码为原始 df 代替原始 Outcome 列,但不确定如何向分类器指示这四列是类别,所以我使用了 @987654322 @.
然后我将训练集拆分为 80/20,并使用这些 x_train、x_valid 和 y_train、y_valid 调用 fit():
def split_vals(a,n): return a[:n].copy(), a[n:].copy()
n_valid = 10000
n_trn = len(df_raw_dumtrain)-n_valid
raw_train, raw_valid = split_vals(df_raw_dumtrain, n_trn)
X_train, X_valid = split_vals(df_raw_dumtrain, n_trn)
y_train, y_valid = split_vals(df_raw_dumtrain, n_trn)
random_forest = RandomForestClassifier(n_estimators=10)
random_forest.fit(X_train, y_train)
Y_prediction = random_forest.predict(X_train)
我尝试运行 fit() 为:
test_pred = random_forest.predict(df_test)
但我得到一个错误:
ValueError:模型的特征数量必须与输入匹配。 模型 n_features 为 27,输入 n_features 为 28
我应该如何配置我的测试集?
【问题讨论】:
-
当你说你“虚拟编码”你的目标时,这是什么意思?一键编码?在这种情况下,您是手动完成的,使用 pandas get_dummies,还是使用 sklearn labelencoder?
-
通过 pandas get_dummies 进行一次热编码。 df_raw_dum = pd.get_dummies(df_raw['Outcome']) df_raw_dumtrain = pd.concat([df_raw, df_raw_dum], axis=1) df_raw_dumtrain.drop('Outcome', axis=1, inplace=True)
-
实际的错误信息是什么? (注意:请在问题本身中编辑此评论和之前的评论,因为代码格式在 cmets 中表现不佳)
-
您示例中的代码使用 RandomForestRegressor 而不是 RandomForestClassifier
标签: python pandas scikit-learn