1. 程式人生 > >機器學習——python sklearn MLPClassifier

機器學習——python sklearn MLPClassifier

 

函式說明:https://scikit-learn.org/stable/modules/generated/sklearn.neural_network.MLPClassifier.html#sklearn.neural_network.MLPClassifier

呼叫方法:

sklearn.neural_network.MLPClassifier(hidden_layer_sizes=(100, ), activation=’relu’,
 solver=’adam’, alpha=0.0001, batch_size=’auto’, learning_rate=’constant’, 
learning_rate_init=0.001, power_t=0.5, max_iter=200, shuffle=True, random_state=None, 
tol=0.0001, verbose=False, warm_start=False, momentum=0.9, nesterovs_momentum=True, 
early_stopping=False, validation_fraction=0.1, beta_1=0.9, beta_2=0.999, epsilon=1e-08, 
n_iter_no_change=10)

引數說明:

1.hidden_layer_sizes:

          第i個元素表示第i個隱藏層的神經元的個數;

          例如hidden_layer_sizes=(50,50),表示有兩層隱藏層,第一層隱藏層有50個神經元,第二層有50個神經元;

2.activation:

      啟用函式

       {‘identity’,'logistic','tanh','relu'},預設‘relu‘;

  • 'identity':f(x)=x
  • 'logistic':sigmod函式f(x) =\frac{1}{1+exp(-x))}
  • 'tanh':f(x) = tanh(x)
  • 'relu':f(x)=max(0,x)

3.solver:

          {’lbfgs‘,’sgd‘,’adam‘},預設’adam‘,用來優化權重;

  • 'lbfgs':quasi-Newton方法的優化器;
  • 'sgd':隨機梯度下降;
  • 'adam':kingma,Diederik,and Jimmy Ba提出的機遇隨機梯度的優化器;

        注意:預設solver 'adam'在相對較大的資料集上效果比較好(幾千個樣本或更多),對小資料集來說,lbfgs收斂更快效果也更好。

4.alpha:

        float,可選的,預設0.0001,正則化項引數;

5.batch_size:

       int,可選的,預設'auto',隨機優化的minibatches的大小,如果 solver是'lbfgs',分類器將不使用minibatch,當設定成'auto',batch_size=min(200,n_samples);

6.learning_rate:

          {'constant','invscaling','adaptive'},預設’constant‘,用於權重更新,只有當solver為’sgd‘時使用

  • 'constant':有'learning_rate_init'給定的恆定學習率;
  • 'invscaling':隨著時間t使用'power_t'的逆標度指數不斷降低學習率learning_rate_,effective_learning_rate=learing_rate_init/pow(t,power_t)
  • 'adaptive':只要訓練損耗下降,就保持學習率為'learning_rate_init'不變,當連續兩次不能降低訓練損耗或驗證分數停止升高至少tol時,將當前學習率除以5;

7.max_iter:

      int,可選,預設200,最大迭代次數;

8.random_state:

        int 或RandomState,可選,預設None,隨機數生成器的狀態或種子;

9.Shuffle:

        bool,可選,預設True,只有當solver='sgd'或'adam'時使用,判斷是否在每次迭代時對樣本進行清洗;

10.tol:

      float,可選,預設1e-4,優化的容忍度;

11.learning_rate_int:

      double,可選,預設0.001,初始學習率,控制更新權重的補償,只有當solver='sgd'或'adam'時使用;

12.power_t:

     double,optional,default 0.5,只有solver='sgd'時使用,是逆擴充套件學習率的指數,當learning_rate='invscaling',用來更新有效學習率;

13.verbose:

      bool,optional,default False,是否將過程列印到stdout;

14.warm_stat:

      bool,optional,default False,當設定成True,使用之前的解決方法作為初始你喝,否則釋放之前的解決方法;

15.momentum:

      float,default 0.9,Momentum(動量) for gradient descent update.should be between 0 and 1.Only used when solver='sgd';

16.nesterovs_momentum:

     boolean,default True, Whether to use Nesterov's momentum.Only used when solver='sgd' and momentum>0;

17.early_stopping:

       bool,default False,Only effective when solver='sgd' or 'adam',判斷當前驗證效果不再改善的時候是否終止訓練,當為True 時,自動選出10%的訓練資料用於驗證並在兩步連續迭代改善低於tol時終止訓練;

18.validation_fraction:

        float,optional,default 0.1,用作早期停止驗證的預留訓練資料集的比例,早0-1之間,只當early_stopping=True游泳;

19.beta_1:

   float,optional,default 0.9,only used when solver='adam',估計一階矩向量的指數衰減速率,[0,1)之間;

20.beta_2:

       float,optional,default 0.999,Only used when solver='adam',估計二階矩向量的指數衰減速率[0,1)之間;

21.epsilon:

      float,optional,default 1e-8,only used when solver = 'adam'數值穩定值;

屬性說明:

classes_:每個輸出的類標籤

loss_:損失函式計算出來的當前損失值;

coefs_:列表中的第i個元素表示i層的權重矩陣;

intercepts_:列表中第i個元素代表i+1層的偏差向量;

n_iter_:迭代次數

n_layers_:層數

out_activation_:輸出啟用函式的名稱

方法說明:

fit(X,y):擬合

predict(X):使用MLP進行預測

predic_log_proba(X):返回對數概率估計

predic_proba(X):概率估計

score(X,y[,sample_weight]):返回給定測試資料和標籤上的平均準確度

set_params(**params):設定引數