繁体   English   中英

我们如何使用 k 折交叉验证预测测试样本的目标?

[英]How do we predict target for the test sample using k-fold cross-validation?

我正在尝试使用Spaceship Titanic在 Python 中学习 ML 技术。

我想要做的是执行 3 折交叉验证并使用来自test.csv的功能预测目标变量( Transported )。 我唯一能做的就是在我的训练集上教一个 model,因为它包含我的特征和我的反应。 我想做什么:

from sklearn.model_selection import train_test_split, cross_val_score, cross_val_predict, KFold
from sklearn.neighbors import KNeighborsClassifier

X, y = train_ready.drop('Transported', axis=1), train_ready['Transported']

# 3-Fold Cross-Validation -----

cross_validation = KFold(n_splits=3, random_state=2022, shuffle=True)

classifier = KNeighborsClassifier(n_neighbors=10)

scores = cross_val_score(classifier, X, y, cv=cross_validation)
y_pred = cross_val_predict(classifier, X, y, cv=cross_validation)

y_test_predictions = cross_val_predict(classifier, test_ready, cv=cross_validation)

> TypeError: fit() missing 1 required positional argument: 'y'

而且,显然,我无法从test.csv数据集中预测我的目标,因为它没有此列。 这项任务的正确算法是什么,我做错了什么?

PS 感谢您的耐心等待,因为我是 Python 中的 ML 及其语法的新手; 之前的经验主要是在R。

你可以这样想,交叉验证用于确定最好的 model 和优化超参数。 一旦确定了哪些 model 和超参数,您就可以使用完整数据集再次训练 model 并对未知数据进行预测。 因此,在进行最终预测时,您不应尝试使用任何交叉验证 function。相反,您应该这样做

classifier = KNeighborsClassifier(n_neighbors=10)

classifier.fit(X,y)

y_test_predictions = classifier.predict(test_ready)

在对未知数据集做出最终预测之前,您当然可以保留一些训练数据作为健全性检查 model 不会过度拟合,尽管交叉验证应该让您确信情况不会如此。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM