我对机器学习和Python非常新手,正在尝试构建一个模型来预测患者(N=200)与对照组(N=200)的结构性神经影像数据。在初始预处理中,我将神经影像数据重塑为一个二维数组后,构建了以下模型:
from sklearn.svm import SVCsvc = SVC(C=1.0, kernel='linear')from sklearn.grid_search import GridSearchCVfrom numpy import rangek_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到150号受试者使用扫描仪1扫描,101到300号受试者使用扫描仪2扫描,301到400号受试者使用扫描仪3扫描)。有没有什么方法可以将这个因素加入到上面的模型中?
我读到过,先进行特征选择可能会有帮助。然而,我不希望简单地提取有意义的特征,因为这些特征可能与扫描仪有关。实际上,我希望对患者和对照组的分类不是基于扫描仪(即控制扫描仪的影响)。
任何建议都会受到欢迎,谢谢
回答:
为了诊断,你可以查看每个扫描仪的数据分布情况,以判断你所追求的方向是否有前景。正如有人已经建议的,标准化(例如,每个扫描仪的均值和方差标准化)可以是一个选项。另一个选项是向你的特征集添加3个额外的维度,作为扫描仪的独热编码(即,对于每个示例,你在相应扫描仪的位置上有一个1,其他位置为0)