如何将SelectKBest的输出传递给cross_val_score函数?

时间:2018-06-24 08:25:02

标签: python machine-learning scikit-learn

我在这里有以下代码:

我正在尝试从数据集中检索20个最佳特征,然后使用随机森林分类器测试交叉验证的分数,但是一旦执行SelectKBest,我就会收到输出:X_train_selected和X_test_selected,但对我而言,立即实现的方法并不立刻显而易见我将其传递给cross val评分功能。

1 个答案:

答案 0 :(得分:-1)

您不需要为cross_val_score分开训练和测试数据。函数本身只是在照顾它。传递功能集时,您需要传递完整的功能集,而不是X_trainX-test

首先分隔目标变量

target = df['result']

然后运行selectKbest并像您一样获取列名,但是这次不是将X拆分为训练和测试,而是像这样将它们作为单个数据集传递

X = clean_df[colnames_selected]

然后将Xtarget传递到cross_val_score

scores = cross_val_score(forest, X, target, cv=10)
print("Reduced features: mean of the scores: {:.2f}".format(scores.mean()))

该函数的重点是对数据集执行交叉验证,并使用提供的估算器返回分数。

您还可以使用管道来简化like this example的整个过程。