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或隨機梯度下降來優化平方損失。

版本0.18中的新功能。

參數 說明
hidden_layer_sizes tuple, length = n_layers - 2, default=(100,)
第i個元素代表第i個隱藏層中的神經元數量。
activation {‘identity’, ‘logistic’, ‘tanh’, ‘relu’}, default=’relu’
隱藏層的激活函數。

- 'identity',無操作激活,用于實現線性瓶頸,返回f(x)= x
- 'logistic',logistic Sigmoid函數,返回f(x)= 1 / (1 + exp(x))。
- 'tanh',雙曲tan函數,返回f(x)= tanh(x)。
- 'relu',整流線性單位函數,返回f(x)= max(0,x)
solver {‘lbfgs’, ‘sgd’, ‘adam’}, default=’adam’
權重優化的求解器。

- “ lbfgs”是quasi-Newton方法族的優化程序。
- “ sgd”是指隨機梯度下降。
- “ adam”是指Kingma,Diederik和Jimmy Ba提出的基于隨機梯度的優化器

注意:就訓練時間和驗證準確率而言,默認求解器“ adam”在相對較大的數據集(具有數千個訓練樣本或更多)上的效果很好。但是,對于小型數據集,“ lbfgs”可以收斂得更快并且性能更好。
alpha float, default=0.0001
L2懲罰(正則項)參數。
batch_size int, default=’auto’
隨機優化器的小批次的大小。如果求解器為“ lbfgs”,則分類器將不使用小批次處理。設為“自動”時,batch_size=min(200, n_samples)
learning_rate {‘constant’, ‘invscaling’, ‘adaptive’}, default=’constant’
權重更新的學習速率表。

- ' constant '是一個恒定的學習速率,由' learning_rate_init '給出。
- “invscaling”通過使用“power_t”的縮放逆指數,逐步降低在每個時間步長“t”上的學習率learning_rate_。effective_learning_rate = learning_rate_init / pow(t, power_t)
- 只要訓練損失持續減少,‘adaptive’將學習率保持在‘learning_rate_init’不變。每次連續兩個epoch不能減少至少tol的訓練損失,或者如果“early_stop”開啟,不能增加至少tol的驗證分數,則當前學習率要除以5。 僅在solver='sgd'時使用。
learning_rate_init double, default=0.001
使用的初始學習率。它控制更新權重的步長。僅在Solver ='sgd'或'adam'時使用。
power_t double, default=0.5
反比例學習率的指數。當learning_rate設置為“ invscaling”時,它用于更新有效學習率。僅在Solver ='sgd'時使用。
max_iter int, default=200
最大迭代次數。求解器迭代直到收斂(由“ tol”決定)或這個迭代次數。對于隨機求解器(“ sgd”,“ adam”),請注意,這決定時期數(每個數據點將使用多少次),而不是梯度步數。
shuffle bool, default=True
是否在每次迭代中對樣本進行打亂。僅在Solver ='sgd'或'adam'時使用。
random_state int, RandomState instance, default=None
決定用于權重和偏差初始化的隨機數生成,如果使用了提前停止,則切分測試集和訓練集,并在solver ='sgd'或'adam'時批量采樣。在多個函數調用之間傳遞一個int值以獲得可重復的結果。請參閱詞匯表
tol float, default=1e-4
優化公差。當n_iter_no_change連續迭代的損失或分數沒有通過至少tol得到改善時,除非將learning_rate設置為‘adaptive’,否則將認為達到收斂并停止訓練。
verbose bool, default=False
是否將進度消息打印到標準輸出。
warm_start bool, default=False
設置為True時,請重用上一個調用的解決方案以擬合初始化,否則,只需擦除以前的解決方案即可。請參閱詞匯表
momentum float, default=0.9
梯度下降更新的動量。應該在0到1之間。僅在solver ='sgd'時使用。
nesterovs_momentum boolean, default=True
是否使用內Nesterov的動量。僅在Solver ='sgd'且momentum> 0時使用。
early_stopping bool, default=False
當驗證準確率沒有提高時,是否使用提前停止來終止訓練。如果設置為true,它將自動預留10%的訓練數據作為驗證,并在n_iter_no_change連續幾個時期,驗證準確率沒有提高至少tol時終止訓練 。除多標簽設置外,這個切分是分層的。僅在Solver ='sgd'或'adam'時有效
validation_fraction float, default=0.1
預留的訓練數據比例作為提前停止的驗證集。必須在0到1之間。僅當early_stopping為True時使用
beta_1 float, default=0.9
第一矩向量估計的指數衰減率,應在[0,1)范圍內。僅在solver ='adam'時使用
beta_2 float, default=0.999
第二矩向量估計的指數衰減率,應在[0,1)范圍內。僅在solver ='adam'時使用
epsilon float, default=1e-8
adam中數值穩定性的值。僅在solver ='adam'時使用
n_iter_no_change int, default=10
不滿足tol改進的最大時期數。僅在Solver ='sgd'或'adam'時有效 0.20版中的新功能。
max_fun int, default=15000
僅在Solver ='lbfgs'時使用。損失函數調用的最大次數。求解器迭代直到收斂(由“ tol”確定),迭代次數達到max_iter或這個損失函數調用的次數。請注意,損失函數調用的次數將大于或等于MLPClassifier的迭代次數。 0.22版中的新功能。
屬性 說明
loss_ float
用損失函數計算的當前損失。
coefs_ list, length n_layers - 1
列表中的第i個元素表示與第i層相對應的權重矩陣。
intercepts_ list, length n_layers - 1
列表中的第i個元素表示與層i + 1對應的偏差向量。
n_iter_ int,
求解程序已運行的迭代次數。
n_layers_ int
層數。
n_outputs_ int
輸出數量。
out_activation_ string
輸出激活函數的名稱。

MLPRegressor進行迭代訓練,因為在每個時間步長都計算了損耗函數相對于模型參數的偏導數以更新參數。

它還可以在損失函數中添加正則項,縮小模型參數以防止過擬合。

這個實現適用于表示為浮點值的密集和稀疏numpy數組的數據。

參考文獻

Hinton, Geoffrey E.

“Connectionist learning procedures.” Artificial intelligence 40.1 (1989): 185-234.

Glorot, Xavier, and Yoshua Bengio. “Understanding the difficulty of

training deep feedforward neural networks.” International Conference on Artificial Intelligence and Statistics. 2010.

He, Kaiming, et al. “Delving deep into rectifiers: Surpassing human-level

performance on imagenet classification.” arXiv preprint arXiv:1502.01852 (2015).

Kingma, Diederik, and Jimmy Ba. “Adam: A method for stochastic

optimization.” arXiv preprint 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...

方法

方法 說明
fit(X, y) 根據數據矩陣X和標簽y擬合模型
get_params([deep]) 獲取這個估計器的參數。
predict(X) 使用多層感知器模型進行預測。
score(X, y[, sample_weight]) 返回預測的可決系數
set_params(**params) 設置這個估計器的參數。
__init__(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)

[源碼]

初始化self。詳情可參閱 type(self)的幫助。

fit(X, y)

[源碼]

根據數據矩陣X和標簽y擬合模型

參數 說明
X ndarray or sparse matrix of shape (n_samples, n_features)
輸入數據。
y ndarray of shape (n_samples,) or (n_samples, n_outputs)
目標值(分類中的類別標簽,回歸中的實數)。
返回值 說明
self returns a trained MLP model.
get_params(deep=True)

[源碼]

獲取這個估計器的參數。

參數 說明
deep bool, default=True
如果為True,則將返回這個估計器的參數和所包含的估計器子對象。
返回值 說明
params mapping of string to any
參數名映射到其值
property partial_fit

使用給定數據的單次迭代更新模型。

參數 說明
X {array-like, sparse matrix} of shape (n_samples, n_features)
輸入數據。
y ndarray of shape (n_samples,)
目標值。
返回值 說明
self returns a trained MLP model.
predict(X)

[源碼]

使用多層感知器模型進行預測。

參數 說明
X {array-like, sparse matrix} of shape (n_samples, n_features)
輸入數據。
返回值 說明
y ndarray of shape (n_samples, n_outputs)
預測值。
score(X, y, sample_weight=None)

[源碼]

返回預測的可決系數R ^ 2。

參數 說明
X array-like of shape (n_samples, n_features)
測試樣本。對于某些估計量,這可以是預先計算的面板矩陣或通用對象列表,而不是shape =(n_samples,n_samples_fitted),其中n_samples_fitted是用于估計器擬合的樣本數。
y array-like of shape (n_samples,) or (n_samples, n_outputs)
X的真實值。
sample_weight array-like of shape (n_samples,), default=None
樣本權重。
返回值 說明
score float
self.predict(X)關于y的

score時使用的R2 scoremultioutput='uniform_average'來保持與r2_score的默認值一致。

調用回歸變量上的score時使用的分數,使用0.23版本的multioutput='uniform_average' ,以與默認值r2_score保持一致。這會影響所有多輸出回歸的score方法( MultiOutputRegressor除外)。

set_params(**params)

[源碼]

為這個估計器設置參數

該方法適用于簡單的估計器以及嵌套對象(例如pipelines)。后者具有形式的參數, <component>__<parameter>以便可以更新嵌套對象的每個組件。

參數 說明
**params dict
估計器參數
返回值 說明
self object
估計器實例

sklearn.neural_network.MLPRegressor使用示例?