機器學習 學習曲線

2022-03-22 01:17:08 字數 2088 閱讀 3000

檢視模型的學習效果;

通過學習曲線可以清晰的看出模型對資料的過擬合和欠擬合;

len(x_train) 個訓練樣本,訓練出 len(x_train) 個模型,第一次使用乙個樣本訓練出第乙個模型,第二次使用兩個樣本訓練出第二個模型,... ,第 len(x_train) 次使用 len(x_train) 個樣本訓練出最後乙個模型;

每個模型對於訓練這個模型所使用的部分訓練資料集的**值:y_train_predict = 模型.predict(x_train[ : i ]);

每個模型對於訓練這個模型所使用的部分訓練資料集的均方誤差:mean_squared_error(y_train[ : i ], y_train_predict);

每個模型對於整個測試資料集的**值:y_test_predict = 模型.predict(x_test)

每個模型對於整個測試資料集的**的均方誤差:mean_squared_error(y_test, y_test_predict);

繪製每次訓練模型所用的樣本數量與該模型對應的部分訓練資料集的均方誤差的平方根的關係曲線:plt.plot([i for i in range(1, len(x_train)+1)],np.sqrt(train_score), label="train")

繪製每次訓練模型所用的樣本數量與該模型對應的測試資料集的**的均方誤差的關係曲線:plt.plot([i for i in range(1, len(x_train)+1)],np.sqrt(test_score), label="test")

1)模擬資料集

2)使用線性回歸擬合資料集並繪製學習曲線

相對於訓練資料集的均方誤差在逐漸增大:因為隨著資料集的增大,樣本點的增多,模型越難擬合住所有的資料,相應的均方誤差會逐漸的累積,越來越大,但隨著訓練資料集的增大,均方差的逐漸累積量越來越小,模型相應的會越來越穩定;

相對於測試資料集的測試誤差逐漸減小,當資料量增大到一定程度,測試誤差趨於相對穩定;

最終的訓練誤差和測試誤差幾乎接近,相當於乙個級別,不過測試誤差比訓練誤差相對較大一點,因為訓練資料集訓練出的模型對訓練資料集擬合的程度較好,相對的模型對應訓練資料集的均方誤差相對較小;

3)將繪製學習曲線的方法封裝成乙個函式

當使用該函式時傳入演算法,該演算法的變數要進行例項化,如:

plot_learning_curve(polynomialregression(degree=2), x_train, x_test, y_train, y_test)
可以直接傳承例項化後的變數,如:lin_reg = linearregression(),

對於欠擬合情況,和最佳的情況相比較,相對的 train 和 test 兩根曲線趨於穩定的位置,比最佳的兩個曲線趨於穩定的位置較高:說明,無論對於訓練資料集還是測試資料集,相應的誤差都比較大,這是因為本身模型選的不正確,即使在訓練資料集上,誤差也比較大;

對於過擬合情況,在訓練資料集上,相應的誤差和最佳時的誤差差不多,甚至當 degree 取值更大時,過擬合的誤差比最佳時的誤差小;

對於過擬合情況,測試資料集的誤差相比較大,並且從圖上看出,測試資料集的誤差曲線距離訓練資料集的誤差曲線較遠:說明,此時模型的泛化能力不夠好,對於新的資料**誤差較大;

機器學習筆記5 學習曲線

sklearn中的學習曲線函式可以幫到我們。它可以讓我們通過資料點來了解模型表現的好壞。可以先引入這個模組 from sklearn.learning curve import learning curve sklearn 0.17 from sklearn.model selection impo...

sklearn機器學習之 學習曲線

本文精髓源自b站 莫煩python 系列教程 適用於python3版本,相應第三方庫建議公升級至最新版本 下面展示兩種學習曲線的繪製方法 sklearn.learning curve 中的 learning curve學習曲線 可以很直觀的看出我們的 model 學習的進度,對比發現 有沒有over...

機器學習筆記 學習曲線的繪製

重點總結 來看看在神經網路上的應用 如何你要檢查演算法執行是否正常或者希望優化演算法的表現那麼就需要一款工具來實現,學習曲線就是乙個很好的工具。同樣的,使用學習曲線可以檢查出演算法是處於偏差問題還是方差問題,或者是二者皆有!先來看看資料樣本數量與誤差之間的關係,通過下圖看一下 在右側,可以看到,當樣...