LoginSignup
2
0

More than 5 years have passed since last update.

scikit-learnのMLPClassifierで生の出力値を見たいとき

Last updated at Posted at 2018-06-06

やりたいこと

scikit-learnで
clf.predict(X)をすると、ラベルが返ってきて便利ですが、出力層の出力のそのままがほしいときもあります。そういうときに使えるメソッドの紹介です。

生の出力値をみる - _predict()

clf._predict(X)で出来ました1

import numpy as np

from sklearn import neural_network
from sklearn.datasets import load_iris

X, y = load_iris(return_X_y=True)

clf = neural_network.MLPClassifier()
clf.fit(X, y)
_pred      = clf._predict(X)

# _predを出力
print(_pred)
_predの出力
[[0.96 0.04 0.00]
 [0.93 0.07 0.00]
 [0.95 0.05 0.00]
 [0.93 0.07 0.00]
 [0.97 0.03 0.00]
 [0.96 0.04 0.00]
 [0.96 0.04 0.00]
 [0.95 0.05 0.00]
 [0.92 0.08 0.00]
 [0.93 0.07 0.00]
 [0.97 0.03 0.00]
 [0.95 0.05 0.00]
 [0.93 0.07 0.00]
 [0.96 0.04 0.00]
 [0.98 0.02 0.00]
 [0.99 0.01 0.00]
 [0.98 0.02 0.00]
 [0.96 0.04 0.00]
 [0.96 0.04 0.00]
 [0.97 0.03 0.00]
 [0.94 0.06 0.00]
 [0.96 0.04 0.00]
 [0.98 0.02 0.00]
...

predict()の結果はnp.argmax(_pred, axis=1)をしたような感じだと思います2

predict_probaというのもありました

pred_proba = clf.predict_proba(X)

結果は_predict()のときと同じになりました。MLPClassifierのパラメータなどを変えたりすれば変わるかもしれません。

追記

predict_proba()はドキュメントにありますが、_predictはドキュメントになく、呼び出すべきものじゃないかもしれません。


  1. これが本当に出力層の生のなのか、ドキュメントに書いてあったわけではないので100%保証はできません。 

  2. 実際はラベルが文字列なときは、文字列にしてくれるので、厳密には違うとは思いますが。 

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0