Python 如何获取scikit学习SVM分类器的所有alpha值?
我需要的阿尔法值,这是拉格朗日乘数的支持向量机对偶问题,训练后的支持向量机分类器与scikit学习。根据该文件,scikit learn似乎只提供了Python 如何获取scikit学习SVM分类器的所有alpha值?,python,machine-learning,scikit-learn,svm,Python,Machine Learning,Scikit Learn,Svm,我需要的阿尔法值,这是拉格朗日乘数的支持向量机对偶问题,训练后的支持向量机分类器与scikit学习。根据该文件,scikit learn似乎只提供了svm.dual_coef_,它是拉格朗日乘数α和数据点标签的乘积 我试图通过将svm.dual_coef_的元素除以数据标签来手动计算alpha值,但由于svm.dual_coef_仅存储支持向量的系数,我不确定是否迭代此数组,支持向量的顺序将与原始训练数据中的顺序相同 那么,有没有可靠的方法来获取支持向量的α值呢?因为α值根据定义是正的,所以可以
svm.dual_coef_
,它是拉格朗日乘数α和数据点标签的乘积
我试图通过将svm.dual_coef_
的元素除以数据标签来手动计算alpha值,但由于svm.dual_coef_
仅存储支持向量的系数,我不确定是否迭代此数组,支持向量的顺序将与原始训练数据中的顺序相同
那么,有没有可靠的方法来获取支持向量的α值呢?因为α值根据定义是正的,所以可以通过获取双系数的绝对值来获得:
alphas = np.abs(svm.dual_coef_)
whis是以下事实的直接结果:
svm.dual_coef_[i] = labels[i] * alphas[i]
其中,标签[i]
为-1
或+1
和字母[i]
始终为正。此外,您还可以通过
labels = np.sign(svm.dual_coef_)
使用相同的观察结果。这也是scikit learn不存储字母的原因——它们唯一地由双字母和标签表示
一旦分析了所有可能的情况,就很容易理解:
和labels[i]=-1
alphas[i]>0
和dual-coef[i]<0
dual-coef[i]==labels[i]*alphas[i]
和标签[i]=-1
=>不可能(字母是非负的)字母[i]<0
和标签[i]=-1
=>它不是支持向量字母[i]==0
和labels[i]=+1
alphas[i]>0
和dual-coef[i]>0
dual-coef[i]==alphas[i]==labels[i]*alphas[i]
和标签[i]=+1
=>不可能(字母是非负的)字母[i]<0
和标签[i]=+1
=>它不是支持向量字母[i]==0
dual_coef_[i]
为正,则为alphas[i]
系数,属于正类;如果为负,alphas[i]==-dual_coef[i]
则属于负类