Machine Learning part4---過擬合和欠擬合
阿新 • • 發佈:2019-01-28
這篇部落格主要談談關於過擬合和欠擬合,這是機器學習中很重要的問題。
1.什麼是過擬合???
由於我自己比較清楚這個概念了,這裡就放一張圖。
2.學習曲線(sklearn實現)
learning curve引數說明:
train_sizes, train_scores, test_scores = learning_curve(輸入:
(estimator : 你用的分類器。
X : features
y : labels
cv : 做cross-validation的時候,資料分成的份數,其中一份作為cv集,其餘n-1份作為training(預設為3份)
)
輸出:(train_sizes:訓練樣本數
train_scores:訓練集上準確率
test_scores:交叉驗證集上的準確率)
# encoding:utf-8
from sklearn.model_selection import learning_curve from sklearn.datasets import load_digits from sklearn.linear_model import LogisticRegression import matplotlib.pyplot as plt import numpy as np digits = load_digits() X = digits.data y = digits.target LR = LogisticRegression() train_sizes, train_scores, test_scores=learning_curve( LR, X, y, cv=10, train_sizes=np.linspace(0.1, 1.0, 10)) train_scores_mean = np.mean(train_scores, axis=1) # 因為我們分了10份,所以有10個結果,這裡我們求個平均值 test_scores_mean = np.mean(test_scores, axis=1) plt.plot(train_sizes, train_scores_mean, 'o-', color="r", label="Training") plt.plot(train_sizes, test_scores_mean, 'o-', color="g", label="Cross-validation") plt.xlabel("Training examples") plt.ylabel("scores") plt.show()
結果:
這樣我們就畫出了一條學習曲線了。
to be continued...