版权声明:本文为博主原创文章,转载请附上此地址。 https://blog.csdn.net/qq_36523839/article/details/80405455
发现个很有用的方法——predict_proba
今天在做数据预测的时候用到了,感觉很不错,所以记录分享一下,以后可能会经常用到。
我的理解:predict_proba不同于predict,它返回的预测值为,获得所有结果的概率。(有多少个分类结果,每行就有多少个概率,以至于它对每个结果都有一个可能,如0、1就有两个概率)
举例:
获取数据及预测代码:
-
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 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则是直接获得唯一的预测结果,所以在使用的时候,应该灵活使用。