Python 如何找到模型将输入分类为[0,1]的概率

Python 如何找到模型将输入分类为[0,1]的概率,python,machine-learning,scikit-learn,svm,Python,Machine Learning,Scikit Learn,Svm,我正在研究一个分类问题,我想找出一个输入被分类为[1,0]而不是[1,0]的概率 我尝试使用SVC的predict_proba方法,它给出了我不寻找的类的概率 from sklearn.svm import SVC model = SVC(probability=True) model.fit(final_data,foreclosure_y) results = model.predict_proba(final_data_test)[0] 我希望我的输出是这样的 index,y ----

我正在研究一个分类问题,我想找出一个输入被分类为[1,0]而不是[1,0]的概率

我尝试使用SVC的predict_proba方法,它给出了我不寻找的类的概率

from sklearn.svm import SVC

model = SVC(probability=True)
model.fit(final_data,foreclosure_y)
results = model.predict_proba(final_data_test)[0]
我希望我的输出是这样的

index,y
---------    
0,0.45
1,0.62
2,0.43
3,0.12
4,0.55
注:以上输出为.csv格式,其中y为测试值

这里y列是索引范围为0到4的每个实例的概率,可以分类为0或1

例如:-指数0被归类为0或1的概率为0.45请注意

sum([0.58502114, 0.41497886])
# 1.0
predict_proba给出了两个类的概率,因此数组元素的总和为1,按它们在model.classes_u中出现的顺序排列;引用了在这种情况下你最好的朋友的话:

返回模型中每个类的样本概率。这个 列按排序顺序对应于类,如中所示 属性类为

下面是一个玩具数据的例子来说明这个想法:

from sklearn.svm import SVC
model = SVC(probability=True)
X = [[1,2,3], [2,3,4]] # feature vectors
Y = [0, 1] # classes
model.fit(X, Y)
现在让我们获得训练集中第一个实例的预测概率[1,2,3]:

好的,顺序是什么,也就是说,哪个概率属于哪个类

model.classes_
# array([0, 1])
因此,这意味着属于类0的实例的概率是数组的第一个元素0.39097541,而属于类1的概率是第二个元素0.60902459;同样,它们的总和为1,正如预期的那样:

sum([0.39097541, 0.60902459])
# 1.0
更新

现在,在您需要的输出中,我们不会同时考虑两种概率;按照惯例,对于二进制分类,我们只包括属于类1的每个实例的概率;下面是我们如何对上面显示的玩具数据集X执行此操作的方法,其中只有2个实例:

pred = model.predict_proba(X)
pred
# array([[ 0.39097541,  0.60902459],
#        [ 0.60705475,  0.39294525]])

import pandas as pd
out = pd.DataFrame(pred[:,1],columns=['y']) # keep only the second element of the arrays in pred, i.e. the probability for class 1
print(out)
结果:

          y
0  0.609025
1  0.392945

1你是什么意思,给出了我不寻找的类的概率?2请校对-我使用了错误的方法计算??你再说一遍是什么意思。。。错误的方法?4你说的[1,0]是什么意思而不是[1,0]-请出示你的Ytank you的样本以供参考,很抱歉你不能理解我想问的问题。让我澄清一下,我想找出数据集的每个实例的概率,它可以被分类为1或0,而不是类本身的概率。忘记预测问题功能吧,你听起来有点困惑;在您的示例中,除了0或1之外,索引0还有其他选项吗?或者您的输出实际上是长度为2的数组吗?请注意,自从你开始提问以来,我已经要求你提供一份真实y的样本。请注意,发帖问题并不是一件容易忘记的事情,最好的发帖时间不是在去吃午饭/喝咖啡/什么之前。如果你想回答问题,前20-30分钟非常重要,你可以回答评论和澄清请求;发帖人:发帖后,将问题在浏览器中保留一段时间,看看是否有人发表评论。如果你错过了一条明显的信息,准备好通过编辑你的问题来回答它。
          y
0  0.609025
1  0.392945