2016-05-17 2 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_ 

これは私にまともな結果を与えるが、私は別の画像を用いて取得されたという事実をコントロールしたいと思います:最初の前処理の後、私は、私は次のモデルを構築し、2D配列に神経画像データを再形成されました異なるスキャナ(例えば、被験者1〜150はスキャナ1でスキャンされ、被験者101〜300はスキャナ2でスキャンされ、被験者301〜400はスキャナ3でスキャンされた)。とにかく、これは上記のモデルに追加することができますか?

これまでの機能の選択を行うと役立つことがあります。しかし、これらの機能がスキャナに関連している場合、意味のある機能を簡単に抽出することは望ましくありません。実際には、スキャナに基づいていない(すなわち、スキャナを制御している)患者とコントロールを分類したいと思う。

この上の任意の考えをいただければ幸いには、 はあなたのデータはあなたが追求している。この方向は有望であるかどうかを確認するためにスキャナごとにどのように分配されるかを見てみることができ、診断のためにあなた

+0

ただのコメントパラメータ「C」のグリッドは、ログ間隔でなければならない。 'k_range = np.logspace(-1、1、100)' –

+0

@ZichenWangありがとうございました。 –

+0

スキャナエラーが抽象化されている正規化の形式を探しているように思えます。私はその方法が何であるか分かりませんが、より広い用語が助けになるかもしれません。 –

答えて

1

に感謝します。既に提案されているように、正規化(例えば、スキャナ毎の平均+分散)は1つの選択肢となり得る。もう1つの選択肢は、使用するスキャナのワンホットエンコーディングとしてフィーチャセットに3つの次元を追加することです(それぞれの例では、適切なスキャナーの位置に1を、その他には0)。

+0

ありがとう、これは非常に便利です。私はあなたが言及した最後のオプションが大好きです。私は間違いなくそれを与えるだろう。 –

関連する問題