问题标题:
请问SVM如何输出概率值
问题描述:
请问SVM如何输出概率值
姜淑娟回答:
使用Libsvm工具箱的话,在函数svmtrain和svmpredict的输入参数部分加入'-b1'、函数svmpredict的输出参数增加至3个即可(例如[~,~,prob_estimates]=svmpredict(label_test,feature_test,svmStruct,'-b1'),其...
邱卫斌回答:
为什么“b”分别选0和1时得到的accuracy不一样呢?确定prob_estimates为输出概率么?
姜淑娟回答:
README文档当中对于参数b的解释是这样的:"b"probability_estimates:whethertotrainaSVCorSVRmodelforprobabilityestimates,0or1(default0)训练模型模型不一样的话得到的accuracy应该是不同的,如果你在svmtrain和svmpredict的设置均为1的话,"prob_estimates"即为置信概率。
邱卫斌回答:
不太理解,再问,prob_estimates既为输出概率,又为置信概率,两者相同么?如果我就是要得到属于某个类别的概率值,在svmtrain和svmpredict的b均设置均设为1,得到的结果是否就是概率值,万分感谢!
姜淑娟回答:
相同的,我想表达的原意其实是“输出的置信概率”。。当在svmtrain和svmpredict函数中设置"-b1"参数时,假如有N个测试样本、打算分为M类,那么prob_estimates应该是一个N*M的矩阵,矩阵中每个值代表“某个测试样本属于某个类别”的概率值,你可以尝试把每一行的数值相加看看是否等于1来验证。另外提醒一下,prob_estimates矩阵中的M列并不是按照事先设定的标签序号顺序来的(比如从小到大1、2、3……M),svmpredict函数内部会进行调整(比如调整之后为乱序3、2、M……1),矩阵中每个概率值具体“属于哪个类别”,应当参照训练模型(即svmtrain输出的结构体)中的Label参数来确定。
邱卫斌回答:
你好,我程序运行几次,每次得到的prob_estimates并不一样,是根本的不同,原本趋于1的数会变为趋于0
姜淑娟回答:
这个问题我没有遇到过,光听你的描述依然不太清楚。。但如果程序跑相同的数据得到的结果每次都不一样的话,最好还是先确认一下代码有没有bug,或者看看数据里是不是混进去了NaN
点击显示
其它推荐
热门其它推荐