- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在分析中使用了分类决策树。首先,我将整个数据分为训练和测试——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()
关于decision-tree - 分类决策树中的学习曲线是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54621429/
我在 Boston 上尝试随机森林算法借助 sklearn 的 RandomForestRegressor 预测房价的数据集 medv . 下面是我的训练/测试数据分割: '''Train Test
我正试图从 Fluxus 中获得一些乐趣,但它的手册和在线文档似乎都假设读者已经是一个以前从未听说过 Scheme 的专家网络程序员。因此,您会得到一些段落,试图解释前缀表示法的基本知识,但假设您知道
就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,visit
我实现了一个模型,在该模型中我使用逻辑回归作为分类器,我想绘制训练集和测试集的学习曲线以决定下一步做什么以改进我的模型。 只是为了给你一些信息,为了绘制学习曲线,我定义了一个函数,它采用一个模型,一个
我是一名 C# 人员,非常了解 Visual Studio IDE 的使用(从 VS2003 开始使用它)。现在,我正在使用 Eclipse 3.4.1 做一个概念验证应用程序。 与 Visual
我使用梯度提升决策树作为分类器实现了一个模型,并绘制了训练集和测试集的学习曲线,以决定下一步做什么以改进我的模型。结果如图: (Y 轴是准确度(正确预测的百分比),而 x 轴是我用来训练模型的样本数。
这个问题在这里已经有了答案: How can I prevent SQL injection in PHP? (27 个答案) 关闭 6 年前。 我目前正在学习 PHP,并且是 OOP 的新手。我正
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
有人可以解释如何使用 python SciKit 随机森林分类器的 oob_decision_function_ 属性吗?我想用它来绘制学习曲线,比较不同训练集大小的训练和验证错误,以识别过度拟合和其
我开发 iPhone 应用程序已有几个月了。我想知道您对 Quartz 与 OpenGL ES 1.x 或 2.0 学习曲线的看法。你可以说出你的观点。我的问题是 *我是一名想成为游戏开发者的人,所以
我是一名优秀的程序员,十分优秀!