【发布时间】:2016-02-25 14:42:12
【问题描述】:
我正在使用 Python scikit-learn 框架来构建决策树。我目前正在将我的训练数据分成两组,一组用于训练,另一组用于验证(通过 K 折交叉验证实现)。
要交叉验证我的模型,我应该将我的数据分成上面所述的两组还是简单地使用完整的训练集?我的主要目标是防止过度拟合。我在网上看到了关于这两种方法的使用和功效的相互矛盾的答案。
我知道当没有足够的数据用于单独的验证集时,通常使用 K 折交叉验证。我没有这个限制。直观地说,我相信将 K-fold 交叉验证与单独的数据集结合使用将进一步减少过度拟合。
我的假设正确吗?有没有更好的方法可以用来验证我的模型?
拆分数据集方法:
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)
【问题讨论】:
标签: validation machine-learning statistics scikit-learn cross-validation