Python Sklearn SVM在一个明显线性分离的数据集上生成错误的边界线

Python Sklearn SVM在一个明显线性分离的数据集上生成错误的边界线,python,machine-learning,scikit-learn,svm,Python,Machine Learning,Scikit Learn,Svm,我目前正在写一篇关于使用SVM进行故障检测的论文。因此,我使用核fisher判别分析将数据集中的52个特征提取为可绘制的2个特征,然后使用SVM对数据进行分类。我以前使用这个算法将数据集分类为5个类,现在我只想将它们分类为2个类(正常和故障) 训练集用于获得KPCA变换矩阵(KPCA_-mat)、FDA变换矩阵(FDA_-mat)和SVM。在使用支持向量机分类之前,必须使用kernel、KPCA_-mat和FDA_-mat对测试集进行处理。我希望这能很好地解释背景 因此,在我的训练集上使用KFD

我目前正在写一篇关于使用SVM进行故障检测的论文。因此,我使用核fisher判别分析将数据集中的52个特征提取为可绘制的2个特征,然后使用SVM对数据进行分类。我以前使用这个算法将数据集分类为5个类,现在我只想将它们分类为2个类(正常和故障)

训练集用于获得KPCA变换矩阵(KPCA_-mat)、FDA变换矩阵(FDA_-mat)和SVM。在使用支持向量机分类之前,必须使用kernel、KPCA_-mat和FDA_-mat对测试集进行处理。我希望这能很好地解释背景

因此,在我的训练集上使用KFDA后,我会这样绘制它们:

#Training
#dummy function: y1_train = KFDA(X_train)

from sklearn import svm
clf= svm.SVC()
clf = clf.fit(y1_train.T,L) #y1_train is my training set after KFDA, and L is it's labels
colorcode = ['red', 'green']

y1_train = np.array(y1_train.T)
for i, j in enumerate(np.unique(L)):
    plt.scatter(y_train[L == j, 0], y_train[L == j, 1],
                c = colorcode[i], label = j)
plt.title('Classification(Training Set)')
plt.xlabel('LD1')
plt.ylabel('LD2')
plt.legend()
plt.show()
这将产生一个清晰的线性可分离数据图:

之后,我在测试集上运行KFDA,然后绘制它们,如下所示:

K_test = rbf_kernel(X_train,X_test)
#I used KFDA proposed here: https://www.sciencedirect.com/science/article/abs/pii/S0031320303004205
#Where KFDA = KPCA + FDA

y_test = KPCA_mat.T.dot(K_test) #U is my KPCA transofrmation matrix
y1_test = FDA_mat.T.dot(y_test) #U1 is my FDA transofrmation matrix

y1_test = pd.DataFrame.from_records(y1_test)
y1_pred = clf.predict(y1_test.T)

y1_test = np.array(y1_test.T)
for i, j in enumerate(np.unique(y1_test)):
    plt.scatter(y1_test[y1_pred == j, 0], y1_test[y1_pred == j, 1],
                c = colorcode[i],label = j)
plt.title('Classification(Testing Set)')
plt.xlabel('LD1')
plt.ylabel('LD2')
plt.legend()
plt.show()
结果真的出乎意料且令人沮丧,它只将数据集预测为一个类:

如果我改用线性判别分析,我会得到以下令人满意的结果:

哦,是的,当我尝试使用较少的样本时,我对训练集有以下结果: 且SVM分类结果为同一训练集:

SVM显然决定制作两条水平边界线,而不是一条垂直边界线,我不知道这是怎么回事

为了缩小引入的解决方案的范围,该代码在同一个数据集上运行良好,但有5个类。无论是5类还是2类,标签都是整数。 到目前为止,我还没有解决这个问题的运气,有什么帮助或建议吗?非常感谢

这是我的数据集的一部分和它的标签。您可能希望使用此方法训练SVM,然后使用SVM对数据集进行分类。您应该会看到我在下面得到的相同结果:


您好,您能为这个问题提供一个最小的可复制的代码示例吗?在您的代码中,不清楚您在哪里以及如何使用SVM。我假设“clf”是你的svm?请看这个:嗨,谢谢你的回复。对此我真的很抱歉。我已经为此编辑了这篇文章。是的,“clf”确实是我的SVM,它确实和clf=SVM()一样简单。这导致我不知道从哪里开始修复代码:(感谢您更新它,但例如'y1_train'仍然未定义,这意味着您的代码无法运行以重现您的问题。是的,我有点陷入这种想法之间。问题是注释的虚拟KFDA函数有点长。因此我犹豫是否将其全部放在这里。带下划线的语句是,KFDA函数+SVM works位于同一数据集上,但有5类,线性判别分析能够“正确”或“直观”地对2类数据集进行分类.要知道这一点,你可能对SVM如何决定制作上述水平边界而不是垂直边界有什么想法吗?试着简单地从你的数据创建一个虚拟数据,你可以在这里提供,这样你的问题就可以用你的代码重现。否则,如果没有可重现的代码,很难重现我在这里等你。
0,1,Labels
3.553228913,2919244.025,1
3.223378877,3698228.57,1
3.716576738,28276799.91,1
3.818688029,38432349.38,1
3.334108342,-3340107.004,1
2.42317704,856944.0099,1
3.823220789,38600119.14,1
3.49646761,21942327.79,1
3.380999482,30350085.98,1
3.609854132,6101423.329,1
3.787058988,18513524.28,1
3.065980083,-12382454.97,1
3.496160098,15526495.87,1
2.840583547,27446699.86,1
3.604069836,20067620.19,1
3.071505165,11795892.91,1
3.209584714,6476417.198,1
2.97205153,29557710.6,1
2.899374677,19817430.73,1
3.669208033,15644387.19,1
3.068740276,1260284.263,1
3.063901217,-7497534.523,1
3.31799035,14945441.54,1
3.183425793,29100856.96,1
2.774634674,1122485.168,1
2.707394236,-13468805.33,1
3.517935754,33678125.03,1
3.68810298,23299531.68,1
3.020844304,8969026.657,1
2.359208637,-14122618.74,1
2.588698876,43134990.75,1
2.779307816,39889831.76,1
2.991716289,-12841577.67,1
2.697619578,-4612248.957,1
3.823644915,15792133.64,1
3.744496817,15334030.83,1
3.444225142,17547178.47,1
3.139323032,18080654.5,1
3.332970955,9982626.927,1
3.101179668,14143713.04,1
3.185501617,23381531.99,1
3.368897517,29883832.88,1
3.77536243,29349931,1
3.950664228,25932025.14,1
3.40945779,-19417445.1,1
3.684768515,22368278.8,1
3.949967013,2300505.867,1
3.735718563,1973558.229,1
3.389415162,30424323.86,1
3.744275962,35375791.02,1
3.681084285,10460466.17,1
4.080701669,21381145.33,1
4.0032667,12268602.92,1
3.58398002,2322964.316,1
3.741034387,17075904.36,1
4.201503247,11302866.78,1
3.533658048,52826863.96,1
3.806515585,44111366.42,1
3.902127707,39719296.27,1
3.812873792,29406769.6,1
3.821779054,17044960.31,1
3.741950398,13712669.85,1
2.985308648,14274473.39,1
3.29148911,10071888.63,1
3.482015336,37636918.4,1
3.23356351,45595555.91,1
3.416125942,41920805.21,1
3.940062703,62679318.7,1
4.200859937,55601099.73,1
4.051566173,34334380.19,1
3.193366685,17470226.02,1
2.536406579,18936263.48,1
3.435668864,19078047.58,1
3.159829877,15046920.65,1
3.269595835,19771786.52,1
3.197403747,24016660.3,1
3.878417918,39048455.59,1
2.938778993,31167462.71,1
3.469616826,27280447.88,1
2.910497205,10878193.53,1
3.069773059,32272369.02,1
2.603927406,3827262.997,1
2.615230098,-23734492.39,1
2.907962877,-7393308.522,1
3.327754319,14997163.66,1
3.452463322,10357657.97,1
3.083577372,-15573490.26,1
3.210440204,-23628723.36,1
2.898827183,10479620.42,1
3.054028869,-8520274.966,1
2.881773778,2132237.861,1
3.014938358,8796615.989,1
3.270746874,8827848.137,1
3.256951059,28060704.32,1
3.054982642,-13593440.76,1
2.732409906,-14489554.31,1
3.332972378,-16313231.12,1
3.050729307,-15427087.55,1
2.982385741,1071818.662,1
3.102925917,-26552171.47,1
3.741136781,4412226.733,1
3.749396343,-2705194.787,1
3.448637233,13416279.17,1
3.521931468,2587776.003,1
3.946611418,8013361.468,1
3.020131352,13015831.52,1
3.58829354,27992234.8,1
2.955616396,11764853.2,1
3.254278877,17490728.72,1
3.030120454,-7945033.333,1
3.497027423,17901939.44,1
3.68007556,22596729.7,1
3.549762534,11181336.29,1
3.521980034,-11285958.12,1
3.03631875,24019024.35,1
4.007915614,24641675.61,1
3.526523693,21195764.76,1
3.748938713,7393049.237,1
4.207147018,41837871.46,1
3.993076596,29103711.31,1
3.511322893,38241966.02,1
3.517900772,12353860.46,1
3.392837002,1394155.365,1
3.406008771,5268054.685,1
3.743510132,20131936.32,1
2.950332123,47448720.29,1
3.839271555,30030531.7,1
3.170647786,47005853.34,1
3.445553471,13780765.06,1
3.571773339,11354675.45,1
3.862347321,43854362.03,1
3.611605696,62556.42001,1
2.870385863,45969108.7,1
3.342068101,37259016.92,1
3.074472072,14515182.46,1
3.485911447,137793.857,1
3.984245047,45454168.12,1
3.824460011,52306602.53,1
3.785593499,3499535.921,1
3.962261738,15088672.92,1
3.039061814,25052648.57,1
3.443241437,30520587.7,1
3.657241878,21506506.85,1
4.072878549,17177802.8,1
3.505283321,13517850.04,1
3.526808794,11741167.25,1
3.591865346,39323590.46,1
3.750272292,15651712.66,1
4.258482956,50940231.5,1
4.087269313,56126135,1
4.386697652,51820965.03,1
3.440454966,23443550.64,1
4.528384928,42705991.77,1
4.099245005,45303259.03,1
4.105317426,43752994.63,1
3.681487891,27623434.77,1
3.687778948,35766583.44,1
3.614605141,14301619.91,1
4.021837027,8997579.769,1
3.344575843,4339300.988,1
3.314377806,-5320081.795,1
3.015562047,-11602826.82,1
2.64203582,8570037.275,1
3.446672972,20673340.05,1
3.467901188,26466476.44,1
3.287902775,21759630.74,1
3.64246169,9542759.914,1
3.319296801,3496745.42,1
3.662688387,48034127.46,1
3.172038427,20233885.76,1
3.701292481,-7619589.126,1
3.424238489,-1402424.608,1
3.156049789,-6103578.039,1
3.219097728,-5710870.258,1
2.765958713,3087825.924,1
2.888227845,13911236.37,1
2.633173877,-12614523.65,1
2.548631215,-30267519.28,1
2.543092202,-26406006.67,1
3.009558586,22785392.46,1
3.080924417,-10755770.1,1
3.737736984,10924558.28,1
3.447619488,10773991.53,1
2.963019275,7689912.223,1
3.153506139,-20594868.09,1
2.878955008,29231170.62,1
3.087086267,12347138.67,1
3.107825104,27729501.17,1
2.891606228,-12039724.88,1
2.803128403,4896812.239,1
3.151139413,-16385802.17,1
2.681273034,-28808725.54,1
2.527343617,-1284679.474,1
2.243411551,-14021320.89,1
2.608116853,-13522626.97,1
2.444513372,4224689.372,1
2.93488514,-25875464.83,1
3.070678547,-14331113.64,1
3.200569604,18448766.11,1
3.041766951,-4796543.743,1
4.001175253,-25760489.11,2
4.418063529,-5805154.42,2
5.115801828,3499631.796,2
5.295685096,-5373603.715,2
4.726248107,-23946431.83,2
4.581869096,-14248729.14,2
5.108444511,4168858.481,2
4.829287584,-1922178.405,2
5.241699069,-3901768.377,2
5.481647228,-24841613.36,2
6.030982291,-10415145.45,2
5.600162275,-1906380.269,2
5.538437592,22738043.31,2
5.768213382,27513657.59,2
5.890889539,4466233.751,2
5.686334333,21072963.1,2
5.371262664,38987533.52,2
5.652396464,5459984.599,2
5.297690911,-5464601.161,2
5.583487473,-1886926.071,2
6.017678097,24117886.1,2
5.854431388,23519831.23,2
5.945624236,12088353.25,2
5.148553726,-22523086.38,2
5.432166886,16753466.03,2
5.462867668,-8347388.408,2
5.798267347,1139410.466,2
6.355480618,10857015.17,2
6.142339581,24345815.51,2
5.97257871,21774060.96,2
4.751841455,-14963907.39,2
5.515585633,-7531373.353,2
5.306212458,34156521.25,2
4.9164911,24185591.17,2
5.493347601,27641575.23,2
5.415264556,38974337.17,2
6.026729962,35420751.78,2
6.081210524,47932048.35,2
6.172041194,19015312.98,2
6.028744892,8921558.636,2
5.302570941,2681291.902,2
5.935657068,14993456.09,2
5.671558452,43762248.48,2
5.980681841,73991988.64,2
5.892808409,31022059.37,2
6.143973404,39005358.28,2
6.597681328,63007772.34,2
5.885757092,52620583.86,2
5.975814018,16670571.69,2
6.482183401,46092335.83,2
5.766015645,38790243.03,2
5.741821036,53576375.39,2
4.879191857,21965094.53,2
5.334212964,29366016.42,2
5.683683265,39798337.08,2
5.850368893,54269323.01,2
6.869270028,44410405.45,2
5.831132777,25017332.88,2
6.65985176,30719621.69,2
6.749542604,59235105.41,2
6.133851547,60864212.07,2
6.142943016,48453185.24,2
6.210843969,52080287.52,2
5.544545164,54280670.08,2
6.425415782,59274649.59,2
5.750703701,35087973.86,2
6.205166878,47169196.57,2
5.638458297,75055698.44,2
5.325977743,20880243.4,2
6.233705249,27255581.73,2
5.405699551,31387107.55,2
6.550842637,42605262.37,2
6.274213959,49355176.91,2
6.390231328,81274307.78,2
5.848394946,39016667.31,2
5.862251592,16947992.44,2
5.700203175,19318199.49,2
6.212682108,37016308.49,2
6.576637468,57602902.24,2
6.827133391,49784352.3,2
6.169729947,49642934.17,2
6.471437049,34733673.16,2
5.728366796,26680700.35,2
5.446699339,3265360.992,2
6.226715031,26275982.39,2
6.159318796,16146291.08,2
6.632247793,16704948.71,2
6.668349394,28573866.83,2
6.690083664,40925466.71,2
7.249452567,27640480.1,2
6.454383887,47491716.78,2
6.974657476,51355293.32,2
6.321454815,42656583.32,2
6.801239108,33256436.13,2
6.627392232,50478459.39,2
6.461820046,61817446.12,2
7.335742137,58062639.93,2
7.398130963,69876511.9,2
6.276486971,52100423.91,2
6.726317308,59562512.4,2
6.851858499,76356310.28,2
7.051028098,67830368.43,2
6.953239001,73447871.7,2
7.621957559,59651706.2,2
6.998873461,69482393.09,2
6.738587142,43734907.26,2
7.25095493,52546354.98,2
7.23864016,58420746.7,2
7.433460411,42721986.58,2
7.418987521,53213337.12,2
6.687302432,50288883.77,2
6.219808308,53569149.34,2
6.470663737,45635102.84,2
7.194048264,34740469.37,2
7.591257536,63146058.09,2
7.454257239,57508286.44,2
6.756688194,42817308.5,2
7.033352097,51149325.92,2
7.256733141,41538162.36,2
7.118063024,49169585.4,2
6.629253239,30978674.73,2
6.529623883,29018247.91,2
6.59264715,59060510.82,2
6.929568607,44737559.3,2
6.48812861,11844005.39,2
6.718177617,16391915.71,2
6.082187587,2846652.97,2
6.298579947,1187703.357,2
6.718219791,27732053.95,2
7.291596104,595617.8814,2
6.82801739,-696288.8684,2
6.79819973,-3262543.561,2
6.623407323,-2180973.673,2
6.602635889,15101538.57,2
6.548826556,9896153.206,2
7.038066751,16975941.22,2
6.868920218,15998317.36,2
6.617009722,9788671.962,2
7.165822981,55318468.2,2
7.515150664,33885385.73,2
7.748503827,20620215.86,2
7.860953326,13819190.26,2
7.165742129,-10750403.6,2
7.264077555,-19463846.9,2
7.961258634,29336350.72,2
7.657262403,22222463.53,2
6.97400566,-15171273.82,2
6.985184463,-11637163.3,2
7.049911622,17699094.48,2
6.71432548,9260422.296,2
7.578722796,-10938918.01,2
7.157337822,-34206775.43,2
7.63790338,1618780.768,2
6.947144555,19760236.37,2
7.259060257,-25354442.71,2
6.201018793,-32562663.55,2
6.615037561,-9655821.914,2
6.699685448,-18958614.87,2
5.734442646,-31906331.8,2
6.321051159,-52127193.24,2
7.280449431,-11048866.54,2
6.891618144,-8803551.629,2
6.989631564,-26996948.81,2
7.808043663,-18291620.68,2
7.417919826,-31054317.66,2
7.372159728,-29648226.32,2
7.626852989,-15082445.76,2
7.349335689,-34424689.98,2
6.965648468,-43340181.24,2
7.117652687,-29890963.59,2
6.347651466,2290407.857,2
6.482477024,-32935282.16,2
6.900529229,-21373007.13,2
7.14510909,-10669731.44,2
6.949514541,-36703352.77,2
6.216513334,-32401759.18,2
7.006058886,-21032879.44,2
6.433040652,-46740948.53,2
6.646303229,-36762306.73,2
7.015561634,-19897470.69,2
6.428254672,-60896684.46,2
6.292196932,-47398508.74,2
6.744765768,-35987789.98,2
6.940687641,-30481109,2
6.595533187,-40183549.15,2
6.252549613,-29561422.85,2
6.310925413,-36229646.32,2
6.320073308,-31423542.15,2
6.930051571,-36856614.72,2
6.290121879,-22000253.63,2
6.824774069,-52437163.74,2
6.40359095,-37324956.6,2
6.874800798,-28716175.07,2
6.494900205,-17523000.17,2
6.385512661,-32704461.99,2
6.653061033,-48644014.51,2
5.943817589,-33455610.16,2
5.921086039,-26486444.68,2
6.077362467,-24486331.52,2
5.634420068,-64633618.75,2