python - 是否可以向 SVM 模型添加协变量(控制不感兴趣的变量)?

标签 python machine-learning scikit-learn svm

我是机器学习和 Python 的新手,我正在尝试构建一个模型来预测患者 (N=200) 与对照组 (N=200) 形成的结构神经影像数据。在初始预处理之后,我将神经成像数据 reshape 为二维数组,我构建了以下模型:

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,以及受试者 301 到 400 用扫描仪 3) 扫描。无论如何,这可以添加到上面的模型中吗?

我读到之前进行特征选择可能会有所帮助。但是,当这些功能可能与扫描仪相关时,我不想简单地提取有意义的功能。事实上,我想对患者和控制进行分类,而不是基于扫描仪(即控制扫描仪)。

如有任何想法,我们将不胜感激, 谢谢你

最佳答案

对于诊断,您可以查看每个扫描仪的数据分布情况,看看您追求的这个方向是否有前途。正如有人已经建议的那样,标准化(例如,每个扫描仪的均值+方差)可以是一种选择。另一种选择是向您的功能集添加 3 个额外的维度,作为所用扫描仪的单热编码(即,对于每个示例,您在适当的扫描仪的位置有一个 1,而其他的为 0)

关于python - 是否可以向 SVM 模型添加协变量(控制不感兴趣的变量)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37277647/

相关文章:

python - NLTK 是否实现了 TF-IDF?

python - 将函数应用于包含日期时间的数据框列

math - tf.truncated_normal 和 tf.random_normal 有什么区别?

machine-learning - 为什么我会得到一些负值(预测变量)作为回归估计器(Lasso、Ridge、Elastic Net)的输出

python - 值错误 : Number of labels=34866 does not match number of samples=2

python - future 警告 skLearn

scikit-learn - 使用 scikit-learn 从 GridSearchCV 获取进度更新

python - LibreOffice 将 .docx 并行转换为 .pdf 效果不佳

python - 使用 Re.split 从文件构造字典

python - 带正则化的 Numpy 线性回归