【发布时间】:2018-10-24 01:21:28
【问题描述】:
我想在学习模型时使用 k 折交叉验证。到目前为止,我是这样做的:
# splitting dataset into training and test sets
X_train, X_test, y_train, y_test = train_test_split(dataset_1, df1['label'], test_size=0.25, random_state=4222)
# learning a model
model = MultinomialNB()
model.fit(X_train, y_train)
scores = cross_val_score(model, X_train, y_train, cv=5)
在这一步,我不太确定是否应该使用 model.fit(),因为在 official documentation of sklearn 中它们不适合,而是按如下方式调用 cross_val_score(它们甚至不将数据拆分为训练和测试集):
from sklearn.model_selection import cross_val_score
clf = svm.SVC(kernel='linear', C=1)
scores = cross_val_score(clf, iris.data, iris.target, cv=5)
我想在学习模型的同时调整模型的超参数。什么是正确的管道?
【问题讨论】:
-
您不需要拆分为训练+测试,因为这样做是为了评估模型性能。 CV 做的完全一样(性能评估)只是一种更稳健的方式。如果您有更复杂的场景并想要优化超参数或执行其他高级程序,则此评论不适用。
标签: python-3.x scikit-learn cross-validation