简单的逻辑回归二分类问题
from sklearn.linear_model import LogisticRegression
import numpy as np
x_train = np.array([[1,2,3],
[1,3,4],
[2,1,2],
[4,5,6],
[3,5,3],
[1,7,2]])
y_train = np.array([0,1,0,1,1,0])
x_test = np.array([[2,2,2],
[3,2,6],
[1,7,4]])
clf = LogisticRegression()
clf.fit(x_train, y_train)
predict
print(clf.predict(x_test))
'''
[0 1 1]
'''
predict_pro
print(clf.predict_proba(x_test))
'''
[[0.78593022 0.21406978]
[0.0458577 0.9541423 ]
[0.26488952 0.73511048]]
'''
可以看到predict_pro就是每个类别的概率,而predict是将predict_pro中概率最大类别返回。其实不用predict的话,可以使用:
np.argmax(clf.predict_proba(x_test),axis=1)
'''
array([0, 1, 1], dtype=int64)
'''
可以达到同样的效果:
-
这时候有人就会问了,为啥可以用predict 还要用这种麻烦的操作啊,这是因为啊,一般我们做交叉验证的时候我们保存的都是每一折概率,然后取平均,这时候按概率大小取索引就是我们的分类结果啦
-
这个argmax 就是按轴取最大值的索引,这个地方有点小绕,例如上面的axis=1表示在列上取索引,那么就是取出每一行最大值得列号,即该行的类别。
-
axis=0(行) axis=1(列)