sklearn的predict proba使用說明

2022-10-03 21:51:27 字數 3473 閱讀 2279

發現個很有用的方法——predict_proba

今天在做資料**的時候用到了,感覺很不錯,所以記錄分享一下,以後可能會經常用到。

我的理解:predict_proba不同於predict,它返回的**值為,獲得所有結果的概率。(有多少個分類結果,每行就有多少個概率,以至於它對每個結果都有乙個可能,如0、1就有兩個概率)

舉例:獲取資料及****:

from sklearn.linear_model imuhohcport 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 = logistuhohcicregression()

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 1 程式設計客棧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]]

可以看出,有四行兩列,每行對應一條**資料,兩列分別對應 對於0、1的**概率(左邊概率大於0.5則為0,反之為1)

我們來看看使用predict方法獲得的結果:

test_y = model.predict(test_x)

print(test_y)

輸出結果:[1,0,0,0]

所以有的情況下predict_proba還是很有用的,它可以獲得對每種可能結果的概率,使用predict則是直接獲得唯一的**結果,所以在使用的時候,應該靈活使用。

補充乙個知識點:關於**結果標籤如何與原來標籤相對應

predict_proba返回所有標籤值可能性概率值,這些值是如何排序的呢?

返回模型中每個類的樣本概率,其中類按類self.classes_進行排序。

其中關鍵的步驟為numpy的unique方法,即通過np.unique(label)方法,程式設計客棧對label中的所有標籤值進行從小到大的去重排序。得到乙個從小到大唯一值的排序。這也就對應於predict_proba的行返回結果。

補充知識:python sklearn decision_function、predict_proba、predict

看**~

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.r**el(), yy.r**el()]) #對座標風格上的點進行**,來畫分介面。其實最終看到的類的分界線就是分介面的邊界線。

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 rightuhohc')

plt.xlabel('x')

plt.ylabel('y')

plt.title('decision boundary')

plt.show()

本文標題: sklearn的predict_proba使用說明

本文位址:

暫存器(RAL)模型中的predict操作

在暫存器模型中,比如讀寫操作,我們是怎麼進行 的,也就是說怎麼更新field的3個值得,即value,mirror value,desired value。核心方法是do predict。我們發現在後門訪問時,會自動呼叫do predict方法進行 而在前門訪問時,是否會進行 是有條件的,必須得設定...

sklearn學習 sklearn學習的相關資料

0 scikit learn官網 1 使用sklearn進行整合學習 理論 2 使用sklearn進行整合學習 實踐 3 sklearn學習筆記之開始 4 誰動了我的特徵?sklearn特徵轉換行為全記錄 5 使用sklearn優雅地進行資料探勘 備註 作者是個大神 6 sklearn多個例項 7 ...

sklearn初探(一) sklearn安裝

scikit learn 要求 警告 scikit learn 0.20是支援python 2.7和python 3.4的最後乙個版本。scikit learn現在需要python 3.5或更新版本。如果你已經有乙個合適的 numpy 和 scipy版本,安裝 scikit learn 最簡單的方法...