gpt4 book ai didi

decision-tree - 分类决策树中的学习曲线是什么意思?

转载 作者:行者123 更新时间:2023-12-02 00:23:25 32 4
gpt4 key购买 nike

我在分析中使用了分类决策树。首先,我将整个数据分为训练和测试——60%:40%。然后我在我的训练集上使用 GridSearch 来获得得分最高的模型 (max_depth=7)。然后我绘制了交叉验证集和训练集的学习曲线。这是我得到的图表。两条线似乎重叠了。那它告诉我什么?我的模型没有过度拟合?一般来说,为什么我们需要分析学习曲线?

Link to my learning curve image

非常感谢!

最佳答案

学习曲线显示了不同数量训练样本的估计器的验证和训练分数。它是一种工具,可以了解我们从添加更多训练数据中获益多少,以及估计器是否更容易受到方差误差或偏差误差的影响。

机器学习曲线有很多用途,包括比较不同的算法、在设计期间选择模型参数、调整优化以提高收敛性,以及确定用于训练的数据量。

您没有很好地利用学习曲线工具,因为您从非常高的训练规模开始,它不允许您很好地看到模型的行为。

这是一个示例,其中显示了一个图,其中您开始使用较小的训练量进行分析,而另一个图则从非常大的训练量开始分析(您的案例)。为此,您只需改变 sklearn.model_selection.learning_curve 的 train_sizes 参数。

import numpy as np
import matplotlib.pyplot as plt
from sklearn.svm import SVC
from get_csv_data import HandleData
from sklearn.model_selection import learning_curve
from sklearn.model_selection import ShuffleSplit

def plot_learning_curve(estimator, X, y, ax=None, ylim=(0.5, 1.01), cv=None, n_jobs=4, train_sizes=np.linspace(.1, 1.0, 5)):

train_sizes, train_scores, test_scores = \
learning_curve(estimator, X, y, cv=cv, n_jobs=n_jobs, train_sizes=train_sizes)

train_scores_mean = np.mean(train_scores, axis=1)
train_scores_std = np.std(train_scores, axis=1)
test_scores_mean = np.mean(test_scores, axis=1)
test_scores_std = np.std(test_scores, axis=1)

# Plot learning curve
if ylim is not None:
ax.set_ylim(*ylim)
ax.set_xlabel("Training examples")
ax.set_ylabel("Score")
ax.plot(train_sizes, train_scores_mean, 'o-', color="r", label="Training score")
ax.plot(train_sizes, test_scores_mean, 'o-', color="g", label="Cross-validation score")
ax.legend(loc="best")

return plt

fig, (ax1, ax2) = plt.subplots(1, 2)

data = HandleData(oneHotFlag=False)
#get the data
X, y = data.get_synthatic_data()

cv = ShuffleSplit(n_splits=10, test_size=0.2, random_state=0)
estimator = SVC()
plot_learning_curve(estimator, X, y, ax = ax1, cv=cv, train_sizes=np.linspace(.1, 1.0, 5))
plot_learning_curve(estimator, X, y, ax = ax2, cv=cv, train_sizes=np.linspace(.5, 1.0, 5))

plt.show()

output:

关于decision-tree - 分类决策树中的学习曲线是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54621429/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com