2016-08-23 50 views
0

我試圖構建一個非常簡單的SVM預測器,我可以通過基本的Python知識來理解它。由於我的代碼與這個question以及這個question看起來有很大的不同,我不知道如何在我的示例中找到SVM預測的最重要特徵。從非常簡單的scikit-learn SVM分類器中獲取最豐富的功能

我有一個包含功能和類(狀態)下面 '樣本':

A B C D E F status 
1 5 2 5 1 3 1 
1 2 3 2 2 1 0 
3 4 2 3 5 1 1 
1 2 2 1 1 4 0 

我保存的功能名稱爲 '特徵':

A B C D E F 

特徵 'X':

1 5 2 5 1 3 
1 2 3 2 2 1 
3 4 2 3 5 1 
1 2 2 1 1 4 

和狀態 'Y':

1 
0 
1 
0 

然後,我從樣本中構建X和y陣列,對一半樣本進行列車&測試並計算正確的預測值。

import pandas as pd 
import numpy as np 
from sklearn import svm 

X = np.array(sample[features].values) 
X = preprocessing.scale(X)  
X = np.array(X) 
y = sample['status'].values.tolist() 
y = np.array(y) 

test_size = int(X.shape[0]/2) 

clf = svm.SVC(kernel="linear", C= 1) 
clf.fit(X[:-test_size],y[:-test_size]) 

correct_count = 0 

for x in range(1, test_size+1): 
    if clf.predict(X[-x].reshape(-1, len(features)))[0] == y[-x]: 
     correct_count += 1 
accuracy = (float(correct_count)/test_size) * 100.00 

我的問題是,現在,我不知道,我怎麼會從上面,這樣我也能看到的問題,哪些是最重要的功能實現代碼。

如果你能告訴我,我將不勝感激,如果這對我的簡單版本來說甚至是可能的?如果是的話,如何做到這一點的任何提示都會很棒。

回答

0

從所有的功能設置,設定的變量產生的最低值必須選擇爲非常重要的變量向量的模的平方爲了

+0

不幸的是我真的不明白你的意思是我的問題是,我怎麼能找到這些變量? – Don

+0

要構建訓練集X,可以針對每次迭代運行具有不同變量組合的SVM分類器迭代,並選擇產生最佳分類的X.產生最佳擬合的X,Y組合是您最佳的變量選擇。不幸的是,沒有直接的方法來確定只有SVM(或SVC) – raunakjhawar

+0

ok的高重要性的變量集合,所以我需要做一個循環,使得以下內容:1.隨機選擇特徵2.運行svm 3。通過這些功能節省精確度。然後我循環很多次,試圖找到與最高精度相關的特徵?功能之間的相互作用是不是太高,我可以像這樣確定它? – Don

相關問題