やりたいこと
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
はドキュメントになく、呼び出すべきものじゃないかもしれません。