2016-05-17 17 views
2

我對機器學習和python非常陌生,我試圖構建一個模型來預測患者(N = 200)與對照(N = 200)形成結構性神經影像數據。最初的預處理是後我重塑了神經影像數據到一個二維數組,我建立以下模型:是否可以向SVM模型添加協變量(對不感興趣的變量的控制)?

from sklearn.svm import SVC 
svc = SVC(C=1.0, kernel='linear') 


from sklearn.grid_search import GridSearchCV 
from numpy import range 
k_range = np.arange(0.1,10,0.1) 
param_grid=dict(C=k_range) 
grid=GridSearchCV(svc, param_grid, cv=10, scoring='accuracy') 
grid.fit(img,labels) 
grid.grid_scores_ 
print grid.best_score_ 
print grid.best_params_ 

這給了我一個體面的結果,但我想,以控制不同的圖像,用所獲得的事實不同的掃描儀(例如用掃描儀1掃描對象1至150,用掃描儀2掃描對象101至300,用掃描儀3掃描對象301至400)。無論如何,這可以添加到上面的模型?

我讀過之前做過的功能選擇可能會有幫助。但是,當這些功能可能與掃描儀相關時,我不想簡單地提取有意義的功能。事實上,我想根據掃描儀對患者和控制進行分類(即控制掃描儀)。

對此有何想法,將不勝感激, 謝謝

+0

只是評論,參數'C'的網格應該是對數間隔的。 'k_range = np.logspace(-1,1,100)' –

+0

謝謝@ZichenWang您的建議,會更新代碼。 –

+0

這聽起來像你正在尋找某種形式的規範化,其中掃描儀錯誤被抽象出來。我不確定這些方法是什麼,但也許更廣泛的術語可能會有所幫助。 –

回答

1

用於診斷,你可以看看你的數據是如何按掃描儀分佈看這個方向你是否追求是有希望的。標準化(例如,每個掃描儀的平均值+差異)可以是人們已經建議的一種選擇。另一種選擇是在您的功能集中添加3個額外的維度,作爲所用掃描儀的一個熱門編碼(即,對於每個示例,您在適當的掃描儀的位置上有1個,其他爲0)

+0

謝謝,這非常有用。我非常喜歡你提到的最後一個選項。我一定會放棄它。 –