python - 具有分类变量的随机森林分类器的训练/测试格式
问题描述
更新:如何为多个类别的 scikit randomforestclassifier 设置我的训练/测试 df?我如何预测?
我的训练数据集有一个包含 4 个类的分类结果列,我想预测这四个中的哪一个最有可能用于我的测试数据。查看其他问题,我尝试使用 pandas get_dummies 将四个新列编码为原始 df 代替原始 Outcome 列,但不确定如何向分类器指示这四列是类别,所以我使用了y = df_raw['Outcomes'].values
.
然后我将训练集拆分为 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
我应该如何配置我的测试集?
解决方案
您必须从测试数据中删除目标变量,然后将数据框的剩余列作为预测函数的输入。您将能够解决功能不匹配的数量。
尝试这个!
random_forest.predict(df_test.drop('Outcomes',axis=1))
注意:您不必为使用随机森林或任何基于决策树的模型创建目标变量的虚拟变量。
推荐阅读
- c++ - 值被添加到基类而不是派生类对象
- java - 如何在嵌入式 Flink Statefun 模块中路由自定义对象?
- c - 在同一个代码块中使用 printf 和 fprintf 是一个好习惯吗?
- visual-studio-code - VSCode - 更改调试控制台键入颜色
- laravel - 不支持驱动程序 [google]
- reactjs - 我应该在反应本机应用程序中创建一个共享功能,通过在隐藏的应用程序目录中下载一个文本来共享多个图像
- node.js - 如何在 MongoDB 和 NodeJS 中正确使用 $lookup
- html - 重复的字母“S”仅在 ios 设备上
- css - CSS 列和文本换行 - 是否可以设置单独的列宽?
- javascript - 如何确保在执行谷歌应用程序脚本中的下一行之前完成 google.script.run 函数