大家好机器学习专家,我对机器学习主题很天真。我的数据有六个功能(6个常规属性)和2个标签(1个特殊属性)(真和假)(希望我使用正确的术语)。我想结合必须由SVM训练的那些功能。数据看起来像这样: -
ZDis ZAnch ZSurf Zval ZDom ZEntropy Top5
0.48659 -0.20412 1.19243 0.15374 0.59667 1.34151 False
-0.10067 4.89898 -0.73677 0.22506 0.59667 1.34151 True
2.24837 -0.20412 -2.02291 0.22455 0.59667 1.34151 False
0.48659 -0.20412 1.19243 -0.06352 0.59667 1.34151 False
-0.68793 -0.20412 1.19243 0.12405 0.59667 1.34151 False
-2.02698 -0.40825 1.86371 0.07348 1.3272 -0.1242 False
-0.1807 2.44949 0.17865 0.07345 0.9401 0.1505 False
1.66557 2.44949 -1.50641 0.07381 0.9401 1.30135 False
1.11169 -0.40825 0.34716 0.07381 0.9401 -0.20225 True
1.5337 -0.40825 -0.01393 0.07381 -0.9954 0.53144 False
-0.01945 -0.48348 -1.16128 0.11035 2.02339 0.90237 False
-1.52944 3.23556 0.23428 0.11093 1.22613 -0.12973 False
0.43354 -0.48348 -2.20795 0.11093 1.22613 2.25734 False
2.84953 -0.48348 -2.20795 0.11093 1.49189 3.07609 True
所以我想在这里做总计= X1 * ZDis + X2 * ZAnch + X3 * ZSurf + X4 * Zval + X5 * ZDom + X6 * ZEntropy 其中X1..X6是应该来自SVM的加权值。我使用rapidminner为我的40个训练集示例获得此权重值,结果如下: -
Total number of Support Vectors: 40
Bias (offset): -1.055
w[ZDis] = 0.076
w[ZAnch] = -0.058
w[ZSurf] = 0.057
w[Zval] = 0.010
w[ZDom] = 0.073
w[ZEntropy] = 0.077
我不确定我是否采取了正确的做法,所以我需要你的帮助。提前致谢。另外,如果有人指导我如何在python中编写有关此SVM问题的代码,这对我也有帮助。
由于 Pallab
在得到你的反馈后,我再次对我的问题进行了一些分析,其中我有277个数据集,8个是正数,269个是负数,有8个特征所以它清楚地显示了我的不平衡数据集。正如我之前所说,我希望使用SVM按SVM权重同等重视我的所有功能,然后想要( w1*x1+w2*x2+...+w8*x8)
,这将帮助我从我的数据集中提取真实结果。数据如下: -
`NameOfMotif eval_Zscore dis_Zscore abind_Zscore surf_Zscore pfam_Zscore ptm_Zscore coil_Zscore entropy_Zscore TrueVsFalse
ptk_9 0.77428 0.2387 -0.39736 1.48274 0.61237 -0.21822 0.49111 0.44599 False
ptk_8 0.77494 -0.97317 -0.39736 -0.27357 -1.63299 -0.21822 0.6181 -0.04028 False
ptk_3 0.77591 1.45058 -0.39736 -0.1139 0.61237 4.58258 0.74509 -0.85069 True
ptk_6 0.77583 -2.18505 -0.39736 -0.27357 0.61237 -0.21822 -0.3343 -0.92281 False
ptk_22 0.55932 1.45058 -0.39736 0.70216 0.61237 -0.21822 1.25303 -2.17556 False
ptk_23 0.51159 -0.97317 -0.39736 1.05697 -1.63299 -0.21822 1.25303 0.77021 False
ptk_20 0.62907 0.2387 -0.39736 1.05697 0.61237 -0.21822 -0.22848 -1.21702 False
..............................................................................
scf-trcp1_1 0.17425 2.23675 -0.92125 -0.03478 1.20877 5.13288 1.31262 2.27655 True
scf-trcp1_3 0.17425 -1.068 -0.92125 -0.82472 -2.43745 -0.43743 0.48341 -0.59339 False
scf-trcp1_5 0.17425 0.41914 0.24523 -1.05041 0.23644 -0.43743 -0.02919 1.68523 False
scf-trcp1_7 0.17425 -1.63453 -0.92125 -1.25354 -1.82975 -0.43743 -2.0193 0.95051 False`
我的svm out put是
kernel type polynomial
cross fold validation =5
c=100000.0
kernal degree = 1.0E-4
L-pos =2.0
L-neg =2.0
PerformanceVector:
accuracy: 84.60% +/- 23.58% (mikro: 84.48%)
ConfusionMatrix:
True: False True
False: 228 2
True: 41 6
precision: 31.08% +/- 25.51% (mikro: 12.77%) (positive class: True)
ConfusionMatrix:
True: False True
False: 228 2
True: 41 6
recall: 70.00% +/- 40.00% (mikro: 75.00%) (positive class: True)
ConfusionMatrix:
True: False True
False: 228 2
True: 41 6
AUC (optimistic): 0.793 +/- 0.184 (mikro: 0.793) (positive class: True)
AUC: 0.793 +/- 0.184 (mikro: 0.793) (positive class: True)
AUC (pessimistic): 0.793 +/- 0.184 (mikro: 0.793) (positive class: True)
我的问题在这里,我的方法现在已经足够好了吗?我用来优化SVM的所有参数都很好吗?我在这个问题上非常天真! 谢谢 Pallab
答案 0 :(得分:0)
您正在使用线性模型,您假设存在一组参数,只需计算sign( w1*x1+w2*x2+...+w5*x5 - b)
即可为您提供答案。低维空间很少出现这种假设。在您的特定示例中,您只有5个维度和非常小的训练集。如此小的数据 - 几乎没有任何机器学习方法能够取得好成绩的机会,因为它们都是统计方法。很难谈论30个要素的统计数据。
问题:
scikit-learn
SVM
并测试剩余的1个块(7分),重复5次,因此每个块使用完全一次作为测试。计算结果准确度的平均值C
参数 - C
越大,您越强制“强制”SVM正确分类数据(最小化错误分类的数量)。使用内核时 - 你会得到另一个参数(除C
外,你在多项式中得到d
,在rbf得到gamma
。可以使用网格搜索来执行最佳参数的选择(scikit-learn有自动化程序,阅读文档)答案 1 :(得分:0)
您提到通过提取5条记录,您获得了5个错误分类,其中4个是正确的,1个是不正确的。这还不足以让人知道模型是否有用。如前面的答案所述,通过交叉验证来估计SVM对看不见的数据的性能(RapidMiner运算符称为X-Validation)。这将使您了解模型是否具有任何值。要将参数调整为SVM运算符以改进模型,请使用“循环参数”运算符并将其与交叉验证结合使用以获得估计的性能。