1. 程式人生 > >Machine Learning part4---過擬合和欠擬合

Machine Learning part4---過擬合和欠擬合

這篇部落格主要談談關於過擬合和欠擬合,這是機器學習中很重要的問題。

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...