执行K-fold交叉验证:使用相同的训练集与单独的验证集

时间:2015-11-23 13:10:42

标签: validation machine-learning statistics scikit-learn cross-validation

我正在使用Python scikit-learn框架来构建决策树。我目前正在将我的培训数据分成两组,一组用于培训,另一组用于验证(通过K-fold交叉验证实现)。

要交叉验证我的模型,我应该将数据分成两组,如上所述,还是只使用完整的训练集?我的主要目标是防止过度拟合。我在网上看到了有关这两种方法的使用和功效的相互矛盾的答案。

据我所知,当单独的验证集没有足够的数据时,通常会使用K-fold交叉验证。我没有这个限制。直观地说,我认为将K折叠交叉验证与单独的数据集结合使用将进一步减少过度拟合。

我的假设是否正确?有没有更好的方法可以用来验证我的模型?

拆分数据集方法:

x_train, x_test, y_train, y_test = train_test_split(df[features], df["SeriousDlqin2yrs"], test_size=0.2, random_state=13)

dt = DecisionTreeClassifier(min_samples_split=20, random_state=99)
dt.fit(x_train, y_train)

scores = cross_val_score(dt, x_test, y_test, cv=10)

培训数据集方法:

x_train=df[features]
y_train=df["SeriousDlqin2yrs"]

dt = DecisionTreeClassifier(min_samples_split=20, random_state=99)
dt.fit(x_train, y_train)

scores = cross_val_score(dt, x_train, y_train, cv=10)

0 个答案:

没有答案