本文簡要介紹python語言中 sklearn.neural_network.MLPRegressor
的用法。
用法:
class sklearn.neural_network.MLPRegressor(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, max_fun=15000)
多層感知器回歸器。
該模型使用 LBFGS 或隨機梯度下降優化平方誤差。
- hidden_layer_sizes:元組,長度= n_layers - 2,默認=(100,)
第 i 個元素表示第 i 個隱藏層中的神經元數量。
- activation:{‘identity’, ‘logistic’, ‘tanh’, ‘relu’},默認='relu'
隱藏層的激活函數。
- ‘identity’, no-op 激活,用於實現線性瓶頸,返回 f(x) = x
- ‘logistic’,邏輯 sigmoid 函數,返回 f(x) = 1 /(1 + exp(-x))。
- ‘tanh’,雙曲 tan 函數,返回 f(x) = tanh(x)。
- ‘relu’,整流後的線性單位函數,返回 f(x) = max(0, x)
- solver:{‘lbfgs’, ‘sgd’, ‘adam’},默認='adam'
權重優化的求解器。
- ‘lbfgs’ 是quasi-Newton 方法係列中的優化器。
- ‘sgd’ 指的是隨機梯度下降。
- ‘adam’ 指的是由 Kingma、Diederik 和 Jimmy Ba 提出的基於隨機梯度的優化器
注意:就訓練時間和驗證分數而言,默認求解器 ‘adam’ 在相對較大的數據集(具有數千個訓練樣本或更多)上運行良好。然而,對於小型數據集,‘lbfgs’ 可以更快地收斂並表現更好。
- alpha:浮點數,默認=0.0001
L2 懲罰(正則化項)參數。
- batch_size:整數,默認='自動'
隨機優化器的小批量大小。如果求解器是‘lbfgs’,分類器將不使用小批量。當設置為 “auto”、
batch_size=min(200, n_samples)
時。- learning_rate:{‘constant’, ‘invscaling’, ‘adaptive’},默認='常量'
權重更新的學習率計劃。
- ‘constant’ 是由‘learning_rate_init’ 給出的恒定學習率。
- ‘invscaling’ 在每個時間步 ‘t’ 使用 ‘power_t’ 的逆縮放 index 逐漸降低學習率
learning_rate_
。 effective_learning_rate = learning_rate_init /pow(t, power_t) - ‘adaptive’ 保持學習率恒定為 ‘learning_rate_init’ 隻要訓練損失不斷減少。如果 ‘early_stopping’ 開啟,每次連續兩個 epoch 未能將訓練損失減少至少 tol 或未能將驗證分數增加至少 tol 時,當前學習率除以 5。
僅在solver='sgd'時使用。
- learning_rate_init:浮點數,默認=0.001
使用的初始學習率。它控製更新權重的步長。僅當solver=’sgd’或‘adam’時使用。
- power_t:浮點數,默認=0.5
逆縮放學習率的 index 。當learning_rate設置為‘invscaling’時,它用於更新有效學習率。僅在solver='sgd'時使用。
- max_iter:整數,默認=200
最大迭代次數。求解器迭代直到收斂(由‘tol’ 確定)或此迭代次數。對於隨機求解器 (‘sgd’, ‘adam’),請注意,這決定了 epoch 的數量(每個數據點將被使用多少次),而不是梯度步驟的數量。
- shuffle:布爾,默認=真
是否在每次迭代中打亂樣本。僅在solver='sgd' 或‘adam’ 時使用。
- random_state:int,RandomState 實例,默認=無
確定權重和偏差初始化的隨機數生成,如果使用提前停止則確定 train-test 分割,並在求解器=’sgd’或 ‘adam’ 時進行批量采樣。傳遞 int 以獲得跨多個函數調用的可重現結果。請參閱術語表。
- tol:浮點數,默認=1e-4
優化的容差。當
n_iter_no_change
連續迭代的損失或分數沒有提高至少tol
時,除非將learning_rate
設置為 ‘adaptive’,否則認為達到收斂並停止訓練。- verbose:布爾,默認=假
是否將進度消息打印到標準輸出。
- warm_start:布爾,默認=假
當設置為 True 時,重用之前調用的解決方案作為初始化,否則,隻需擦除之前的解決方案。請參閱詞匯表。
- momentum:浮點數,默認=0.9
梯度下降更新的動量。應介於 0 和 1 之間。僅在solver='sgd' 時使用。
- nesterovs_momentum:布爾,默認=真
是否使用涅斯捷羅夫的動量。僅在求解器 ='sgd' 且動量 > 0 時使用。
- early_stopping:布爾,默認=假
當驗證分數沒有提高時,是否使用提前停止來終止訓練。如果設置為 true,它將自動留出 10% 的訓練數據作為驗證,並在連續
n_iter_no_change
的驗證分數沒有提高至少tol
時終止訓練。僅在solver='sgd' 或‘adam’ 時有效。- validation_fraction:浮點數,默認=0.1
留出作為提前停止驗證集的訓練數據的比例。必須介於 0 和 1 之間。僅在 early_stopping 為 True 時使用。
- beta_1:浮點數,默認=0.9
在 adam 中估計一階矩向量的 index 衰減率應該在 [0, 1) 中。僅在solver='adam'時使用。
- beta_2:浮點數,默認=0.999
在 adam 中估計二階矩向量的 index 衰減率應該在 [0, 1) 中。僅在solver='adam'時使用。
- epsilon:浮點數,默認=1e-8
亞當數值穩定性的值。僅在solver='adam'時使用。
- n_iter_no_change:整數,默認=10
不滿足
tol
改進的最大時期數。僅在solver='sgd' 或‘adam’ 時有效。- max_fun:整數,默認=15000
僅在求解器='lbfgs' 時使用。函數調用的最大數量。求解器迭代直到收斂(由‘tol’ 確定),迭代次數達到max_iter,或此函數調用次數。請注意,函數調用的數量將大於或等於 MLPRegressor 的迭代次數。
- loss_:浮點數
使用損失函數計算的當前損失。
- best_loss_:浮點數
求解器在整個擬合過程中達到的最小損失。
- loss_curve_:形狀列表(
n_iter_
,) 在每個訓練步驟結束時評估的損失值。列表中的第 i 個元素表示第 i 次迭代的損失。
- t_:int
求解器在擬合期間看到的訓練樣本數。數學上等於
n_iters * X.shape[0]
,意思是time_step
,它被優化器的學習率調度器使用。- coefs_:形狀列表 (n_layers - 1,)
列表中的第 i 個元素代表第 i 層對應的權重矩陣。
- intercepts_:形狀列表 (n_layers - 1,)
列表中的第 i 個元素表示對應於第 i + 1 層的偏置向量。
- n_features_in_:int
擬合期間看到的特征數。
- feature_names_in_:ndarray 形狀(
n_features_in_
,) 擬合期間看到的特征名稱。僅當
X
具有全為字符串的函數名稱時才定義。- n_iter_:int
求解器已運行的迭代次數。
- n_layers_:int
層數。
- n_outputs_:int
輸出數量。
- out_activation_:str
輸出激活函數的名稱。
參數:
屬性:
注意:
MLPRegressor 迭代訓練,因為在每個時間步都會計算損失函數相對於模型參數的偏導數以更新參數。
它還可以在損失函數中添加一個正則化項,以縮小模型參數以防止過度擬合。
此實現適用於表示為密集和稀疏 numpy 浮點值數組的數據。
參考:
- 欣頓,傑弗裏·E。
“聯結主義學習程序。”人工智能 40.1(1989):185-234。
- 格洛羅特、澤維爾和約書亞·本吉奧。 “理解困難
訓練深度前饋神經網絡。”人工智能與統計國際會議。 2010 年。
- 他,凱明,等。 “深入研究整流器:超越human-level
imagenet 分類的性能。” arXiv 預印本 arXiv:1502.01852 (2015)。
- Kingma、Diederik 和 Jimmy Ba。 “亞當:一種隨機的方法
優化。” arXiv 預印本 arXiv:1412.6980 (2014)。
例子:
>>> from sklearn.neural_network import MLPRegressor >>> from sklearn.datasets import make_regression >>> from sklearn.model_selection import train_test_split >>> X, y = make_regression(n_samples=200, random_state=1) >>> X_train, X_test, y_train, y_test = train_test_split(X, y, ... random_state=1) >>> regr = MLPRegressor(random_state=1, max_iter=500).fit(X_train, y_train) >>> regr.predict(X_test[:2]) array([-0.9..., -7.1...]) >>> regr.score(X_test, y_test) 0.4...
相關用法
- Python sklearn MLPClassifier用法及代碼示例
- Python sklearn MDS用法及代碼示例
- Python sklearn MultiTaskLasso用法及代碼示例
- Python sklearn MultiTaskLassoCV用法及代碼示例
- Python sklearn MinMaxScaler用法及代碼示例
- Python sklearn MiniBatchSparsePCA用法及代碼示例
- Python sklearn MultiTaskLasso.path用法及代碼示例
- Python sklearn MultiOutputClassifier用法及代碼示例
- Python sklearn MultiTaskElasticNet.path用法及代碼示例
- Python sklearn MultiTaskElasticNetCV.path用法及代碼示例
- Python sklearn MiniBatchKMeans用法及代碼示例
- Python sklearn MultiTaskElasticNetCV用法及代碼示例
- Python sklearn MultiLabelBinarizer用法及代碼示例
- Python sklearn MultiOutputRegressor用法及代碼示例
- Python sklearn MultiTaskLassoCV.path用法及代碼示例
- Python sklearn Matern用法及代碼示例
- Python sklearn MaxAbsScaler用法及代碼示例
- Python sklearn MiniBatchDictionaryLearning用法及代碼示例
- Python sklearn MeanShift用法及代碼示例
- Python sklearn MultiTaskElasticNet用法及代碼示例
- Python sklearn MinCovDet用法及代碼示例
- Python sklearn MultinomialNB用法及代碼示例
- Python sklearn MissingIndicator用法及代碼示例
- Python sklearn jaccard_score用法及代碼示例
- Python sklearn WhiteKernel用法及代碼示例
注:本文由純淨天空篩選整理自scikit-learn.org大神的英文原創作品 sklearn.neural_network.MLPRegressor。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。