sklearnでニューラルネット(多層パーセプトロン)がしたい

データを探索的にモデリングしたいときに、単純なデータの組み合わせでは表現できない関係があるかを少しでも把握したいときがあります。

そういうときにニューラルネットを試すことで、把握がしたいのですが、PyTorchやTensorFlowでは手がかかりすぎるため、sklearnのMLP(多層パーセプトロン)を使うと、他のモデルと同じように使えるので便利です。ディープなニューラルネットはつくれませんが、簡易に使えます。

基本の使い方

完全に他のsklearnのモデルと同じです。

from sklearn.neural_network import MLPClassifier

mlp = MLPClassifier()
mlp.fit(X,y)

mlp.predict(X)

mlp.score

## 種類

- MLPClassifier : 分類
- MLPRegressor : 回帰
- BernoulliRBM : 教師なし

## よく使いそうなパラメータ

RBMは`n_componets`くらいだけど、分類と回帰は下記がある

- hidden_layer_sizes : 隠れ層の大きさ
- activation : 活性化関数。デフォルトは`relu`。探索ではいじらなくていいかな、、、
- solver:デフォルトは`adam`。これも探索ではいじらなくていいかな。。。
-  batch_size,learning_rate_int,max_iter,early_stopping : 学習速度を弄りたい時に
- alpha:L2正則化

## よく使いそうな変数とかメソッド
回帰と分類
- predict,predict_proba,predict_log_proba : 予測
- coef_,intercepts_,loss_:モデルの感じをつかみたいとき

RBM
- intercept_hidden,intercept_visible_,components_:モデルの感じをつかみたい時