激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - sklearn的predict_proba使用說明

sklearn的predict_proba使用說明

2020-06-29 10:06不論如何未來很美好 Python

這篇文章主要介紹了sklearn的predict_proba使用說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

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

今天在做數據預測的時候用到了,感覺很不錯,所以記錄分享一下,以后可能會經常用到。

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

舉例:

獲取數據及預測代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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)

訓練數據

?
1
2
3
4
5
6
7
8
9
10
[[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]

測試數據:

?
1
2
3
4
[[4 3 0#測試數據
 [3 0 4]
 [2 9 5]
 [2 8 5]]

測試結果,與測試數據一一對應:

?
1
2
3
4
[[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

看代碼~

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
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的predict_proba使用說明

以上這篇sklearn的predict_proba使用說明就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/qq_36523839/article/details/80405455

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 看免费一级毛片 | 久久久入口 | 精品亚洲在线 | 日韩av有码在线 | 日韩高清影视 | 亚洲精品一区中文字幕 | 免费大香伊蕉在人线国产 | 亚洲精华液久久含羞草 | 欧美三级欧美成人高清www | 久久视频在线免费观看 | 史上最强炼体老祖动漫在线观看 | 久久精品.com | 麻豆视频观看 | 国产亚洲精品视频中文字幕 | 久久久久久中文字幕 | 一区二区三区日韩精品 | 综合网天天射 | 久久草草亚洲蜜桃臀 | 毛片成人网 | 爽爽视频免费看 | 色视频在线播放 | 亚洲福利在线免费观看 | 亚洲第一精品在线 | 亚洲码无人客一区二区三区 | 亚洲第一激情网 | 91在线视频免费观看 | 国产在线欧美日韩 | 99爱精品在线 | 久夜tv | 在线观看中文字幕av | 欧美视频在线一区二区三区 | 国产午夜精品久久久久久免费视 | 夜夜夜精品视频 | 午夜视频播放 | 中文字幕在线免费看 | 成人电影毛片 | 九九精品视频观看 | 欧美精品一级片 | 欧美性a视频 | 久久国产一二三 | 韩国一级免费视频 |