slearnのpredicat_proba使用説明
非常に有用な方法を発見しました。proba
今日はデータの予測をする時に使いました。いい感じです。記録を共有して、後でよく使うかもしれません。
私の理解:predcat_probaはpredicatとは違って、その帰りの予測値は、すべての結果を得る確率です。いくつかの分類結果があります。各行にはいくつの確率があります。そのために、各結果に一つの可能性があります。例えば、0、1には2つの確率があります。
例:
データおよび予測コードの取得:
[1 1 1 0 1 0 1 0 0 0 0 1]
テストデータ:
predicat法を用いて得られた結果を見てみましょう。
test_y=model.predict(test_)X)
print(test_)y)
出力結果:[1,0,0,0]
だからpredicat_という場合もあります。probaはやはりとても役に立ちます。可能な結果に対して確率を得ることができます。predicatを使うと、直接に唯一の予測結果を得ることができますので、使う時には、柔軟に使うべきです。
もう一つの知識点を追加します。予測結果について、ラベルはどうやって元のラベルに対応しますか?
predicat_プロバはすべてのラベルの可能性の確率値を返します。これらの値はどのように並べられていますか?
モデル内の各クラスのサンプル確率を返します。クラスはクラス別にself.classes_です。並べ替えを行います。
ここで重要なステップはnumpyのunique方法であり、np.unique(Label)方法によってLabelのすべてのラベル値を小さいから大きいまで並べ替える。小さいときから大きいときまでの一意の値の並べ替えが得られます。これはpredcat_にも対応しています。probaの行は結果に戻ります。
補足知識:python slearn decision_function、predicat_proba、predicat
コードを見ます
以上のSKlearnのpredicat_probaは説明書を使って、編集して皆さんに全部の内容を共有しました。参考にしていただければと思います。よろしくお願いします。
今日はデータの予測をする時に使いました。いい感じです。記録を共有して、後でよく使うかもしれません。
私の理解:predcat_probaはpredicatとは違って、その帰りの予測値は、すべての結果を得る確率です。いくつかの分類結果があります。各行にはいくつの確率があります。そのために、各結果に一つの可能性があります。例えば、0、1には2つの確率があります。
例:
データおよび予測コードの取得:
from sklearn.linear_model import LogisticRegression
import numpy as np
train_X = np.array(np.random.randint(0,10,size=30).reshape(10,3))
train_y = np.array(np.random.randint(0,2,size=10))
test_X = np.array(np.random.randint(0,10,size=12).reshape(4,3))
model = LogisticRegression()
model.fit(train_X,train_y)
test_y = model.predict_proba(test_X)
print(train_X)
print(train_y)
print(test_y)
トレーニングデータ
[[2 9 8]
[0 8 5]
[7 1 2]
[8 4 6]
[8 8 3]
[7 2 7]
[6 4 3]
[1 4 4]
[1 9 3]
[3 4 7]]
訓練の結果、トレーニングデータと一対一で対応します。[1 1 1 0 1 0 1 0 0 0 0 1]
テストデータ:
[[4 3 0] #
[3 0 4]
[2 9 5]
[2 8 5]]
テスト結果は、テストデータと一対一で対応します。
[[0.48753831 0.51246169]
[0.58182694 0.41817306]
[0.85361393 0.14638607]
[0.57018655 0.42981345]]
4行の2列があり、1行に1つの予測データが対応し、2列にそれぞれ0、1に対する予測確率(左の確率が0.5より大きいと0、逆に1)が対応していることが分かります。predicat法を用いて得られた結果を見てみましょう。
test_y=model.predict(test_)X)
print(test_)y)
出力結果:[1,0,0,0]
だからpredicat_という場合もあります。probaはやはりとても役に立ちます。可能な結果に対して確率を得ることができます。predicatを使うと、直接に唯一の予測結果を得ることができますので、使う時には、柔軟に使うべきです。
もう一つの知識点を追加します。予測結果について、ラベルはどうやって元のラベルに対応しますか?
predicat_プロバはすべてのラベルの可能性の確率値を返します。これらの値はどのように並べられていますか?
モデル内の各クラスのサンプル確率を返します。クラスはクラス別にself.classes_です。並べ替えを行います。
ここで重要なステップはnumpyのunique方法であり、np.unique(Label)方法によってLabelのすべてのラベル値を小さいから大きいまで並べ替える。小さいときから大きいときまでの一意の値の並べ替えが得られます。これはpredcat_にも対応しています。probaの行は結果に戻ります。
補足知識:python slearn decision_function、predicat_proba、predicat
コードを見ます
import matplotlib.pyplot as plt
import numpy as np
from sklearn.svm import SVC
X = np.array([[-1,-1],[-2,-1],[1,1],[2,1],[-1,1],[-1,2],[1,-1],[1,-2]])
y = np.array([0,0,1,1,2,2,3,3])
# y=np.array([1,1,2,2,3,3,4,4])
# clf = SVC(decision_function_shape="ovr",probability=True)
clf = SVC(probability=True)
clf.fit(X, y)
print(clf.decision_function(X))
'''
n , n , , , , decision_function() , , n*(n-1)/2 。
, 。
, , , , 。
decision_function_shape="ovr" 4 , ovo 6 。
'''
print(clf.predict(X))
clf.predict_proba(X) # , , 。
#
plot_step=0.02
x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, plot_step),
np.arange(y_min, y_max, plot_step))
Z = clf.predict(np.c_[xx.ravel(), yy.ravel()]) # , 。 。
Z = Z.reshape(xx.shape)
cs = plt.contourf(xx, yy, Z, cmap=plt.cm.Paired)
plt.axis("tight")
class_names="ABCD"
plot_colors="rybg"
for i, n, c in zip(range(4), class_names, plot_colors):
idx = np.where(y == i) #i 0 1,
plt.scatter(X[idx, 0], X[idx, 1],
c=c, cmap=plt.cm.Paired,
label="Class %s" % n)
plt.xlim(x_min, x_max)
plt.ylim(y_min, y_max)
plt.legend(loc='upper right')
plt.xlabel('x')
plt.ylabel('y')
plt.title('Decision Boundary')
plt.show()
以上のSKlearnのpredicat_probaは説明書を使って、編集して皆さんに全部の内容を共有しました。参考にしていただければと思います。よろしくお願いします。