【发布时间】:2018-06-22 20:09:39
【问题描述】:
我在同一个 SKlearn 决策树中使用了两种方法,一种方法使用验证集,另一种方法使用 K-Fold。但是,我不确定我是否真的通过使用 KFold 实现了任何目标。从技术上讲,交叉验证确实显示出 5% 的准确性提高,但我不确定这是否只是这个特定数据的特殊性导致了结果的偏差。
对于我的 KFold 实现,我首先使用以下方法将训练集拆分为多个部分:
f = KFold(n_splits=8)
f.get_n_splits(data)
然后使用
从中获取数据帧y_train, y_test = y.iloc[train_index], y.iloc[test_index]
在一个循环中,正如许多关于如何做到这一点的在线教程所见证的那样。然而,棘手的部分来了。我看到的教程有一个 .train() 函数,我认为这个决策树分类器没有。相反,我只是这样做:
tree = tree.DecisionTreeClassifier()
tree.fit(X_train, y_train)
predictions = tree.predict(X_test)
获得的准确度分数是:
Accuracy score: 0.79496591505
Accuracy score: 0.806502359727
Accuracy score: 0.800734137389
... and so on
但我不确定这样做是否真的让我的分类器变得更好,因为分数会上下波动。这不只是比较 9 个独立的结果吗? K-fold 的目的不是为了把分类器训练得更好吗?
我读过类似的问题,发现 K-fold 旨在提供一种在“独立实例”之间进行比较的方法,但我想确保情况确实如此,而不是我的代码在某些方面存在缺陷。
【问题讨论】:
标签: python pandas validation scikit-learn