【发布时间】:2020-06-30 20:37:40
【问题描述】:
当我想通过交叉验证评估我的模型时,我应该对原始数据(在训练和测试中未拆分的数据)还是训练/测试数据执行交叉验证?
我知道训练数据用于拟合模型,测试用于评估。如果我使用交叉验证,我是否仍应将数据拆分为训练和测试?
features = df.iloc[:,4:-1]
results = df.iloc[:,-1]
x_train, x_test, y_train, y_test = train_test_split(features, results, test_size=0.3, random_state=0)
clf = LogisticRegression()
model = clf.fit(x_train, y_train)
accuracy_test = cross_val_score(clf, x_test, y_test, cv = 5)
或者我应该这样做:
features = df.iloc[:,4:-1]
results = df.iloc[:,-1]
clf = LogisticRegression()
model = clf.fit(features, results)
accuracy_test = cross_val_score(clf, features, results, cv = 5)), 2)
或者可能有什么不同?
【问题讨论】:
-
test部分不应用于除最终评估之外的任何内容。顺便说一句,您的代码中有错误(在第一个块中)。您使用训练数据拟合clf,然后使用测试数据应用交叉验证。 -
这就是我的问题?哪个代码块更准确?我知道训练数据用于拟合模型,测试用于评估。如果我使用交叉验证,我是否仍应将数据拆分为训练和测试?
-
我已阅读此内容,但我的问题没有答案
-
不清楚你想做什么。无论如何,评估您的模型有两种通用方法,交叉验证和测试部分。你可以使用它们中的任何一个。在第一块中,您将两种方式混合在一起。
标签: python machine-learning scikit-learn cross-validation