莫煩python教程學習筆記——總結篇


一、機器學習算法分類:

監督學習:提供數據和數據分類標簽。——分類、回歸

非監督學習:只提供數據,不提供標簽。

半監督學習

強化學習:嘗試各種手段,自己去適應環境和規則。總結經驗利用反饋,不斷提高算法質量

遺傳算法:淘汰弱者,留下強者,進行繁衍和變異穿產生更好的算法。

二、選擇機器學習算法和數據集

  sklearn中有很多真實的數據集可以引入,也可以根據自己的需求自動生成多種數據集。對於數據集可以對其進行歸一化處理

  sklearn中的有着多種多樣的算法,每一種算法都有其適用的場合、不同的屬性和功能,按需選擇。

三、評價機器學習算法:

1、算法效果不好:在訓練過程中,可能因為數據集問題,學習效率,參數問題可能導致算法效果不好。

2、評價學習算法:將數據集分為訓練集測試集,根據算法在測試集上的表現評價算法,隨着訓練時間變長,網絡層數變多,誤差變小,精確度變高,但是變化的速度都是減緩的。

不同的模型有着是個自己的不同的評分方法:

R2-score:衡量回歸問題的精度。最大精度也是100%

F1-score:用於測量不均衡數據的精度。

3、交叉驗證用於調參(手動寫循環):用於算法的調參(不同的參數也就是不同的模型)。

用交叉驗證的方法進行調參或者模型選擇時不需要手動划分用於k折驗證的數據集,只需要將X和Y,還有k作為參數傳進去即可:

#for regreesion
losss=-cross_val_score(knn,X,y,cv=10,scoring=’mean_squared_error’)
#for classification
scores=cross_val_score(knn,X,y,cv=10,scoring=’accuracy’)

交叉驗證時,對於模型的評分,分類時用精確度accuracy來衡量模型表現,回歸時用損失值mean_squard_error來衡量模型表現。

losss和 scores是兩個數組,數組的長度為交叉驗證的分割份數。

可使用scores.mean()來得到交叉驗證的平均分數。

改變Knn中的參數值,根據交叉驗證的得分高低來選擇合適的模型參數。

4、learn_curve曲線用於過擬合問題橫軸數據量,縱軸模型得分

過擬合:對於樣本的過度學習,過分關注樣本的細節。

解決過擬合:L1/L2 regularization,dropout(留出法)

為了找出欠擬合和過擬合的節點我們可以繪制learn_curve曲線,這是一個根據數據量不同顯示算法性能的圖。顯示了過擬合問題的兩種誤差:藍色是traindata的算法表現,紅色是testdata的算法表現。因為模型是基於traindata進行訓練的,所以其在traindata上的表現更好一些。

 

train_sizes,train_loss,test_loss=learning_curve(
  SVC(gramma=0.001),
  X,
  y, 
  Cv=10.
  Scoring=’mean_squard_error’,
  Train_sizes=[0.1,0.25,0.5,0.75,1])
Train_loss_mean=-np.mean(train_loss,axis=1)  #10次交叉驗證結果取平均
Test_loss_mean=-np.mean(test_loss,axis=1)

train_loss,test_loss是二維數組,長度為5,即為Train_sizes的步數

train_loss[0]是一個數組,存放0.1數據量時10個交叉驗證的結果。

 

如上圖所示,黃色警告處即為欠擬合和過擬合的分界點處。

5、使用交叉驗證validation_curve自動調參:橫坐標是模型參數,縱坐標是模型交叉驗證得分

param_range = np.logspace(-6, -2.3, 5)
train_loss, test_loss = validation_curve(
        SVC(), X, y, param_name='gamma', param_range=param_range, cv=10,
        scoring='mean_squared_error')
train_loss_mean = -np.mean(train_loss, axis=1)
test_loss_mean = -np.mean(test_loss, axis=1)
plt.plot(param_range, train_loss_mean, 'o-', color="r",
             label="Training")
plt.plot(param_range, test_loss_mean, 'o-', color="g",
             label="Cross-validation")
plt.xlabel("gamma")
plt.ylabel("Loss")
plt.legend(loc="best")
plt.show()

 

train_loss,test_loss是二維數組,長度為參數的取值個數

train_loss[0]是一個數組,存放參數為某一個值時10個交叉驗證的結果。

以模型參數為橫坐標,以模型交叉驗證得分為縱坐標繪圖,最低點即為最佳參數。

6、訓練好的模型可以保存至本地以方便下次調用


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM