python - 如何让 SVM 很好地处理 scikit-learn 中的缺失数据?

标签 python machine-learning scikit-learn

我正在使用 scikit-learn 进行一些数据分析,我的数据集有一些缺失值(由 NA 表示)。我用 genfromtxtdtype='f8' 加载数据,然后开始训练我的分类器。

RandomForestClassifierGradientBoostingClassifier 对象的分类很好,但使用 sklearn.svm 中的 SVC 会导致以下错误:

    probas = classifiers[i].fit(train[traincv], target[traincv]).predict_proba(train[testcv])
  File "C:\Python27\lib\site-packages\sklearn\svm\base.py", line 409, in predict_proba
    X = self._validate_for_predict(X)
  File "C:\Python27\lib\site-packages\sklearn\svm\base.py", line 534, in _validate_for_predict
    X = atleast2d_or_csr(X, dtype=np.float64, order="C")
  File "C:\Python27\lib\site-packages\sklearn\utils\validation.py", line 84, in atleast2d_or_csr
    assert_all_finite(X)
  File "C:\Python27\lib\site-packages\sklearn\utils\validation.py", line 20, in assert_all_finite
    raise ValueError("array contains NaN or infinity")
ValueError: array contains NaN or infinity

什么给了?我怎样才能让 SVM 很好地处理丢失的数据?请记住,丢失的数据适用于随机森林和其他分类器。

最佳答案

您可以在使用 SVM 之前进行数据插补以处理缺失值。

编辑:在 scikit-learn 中,有一种非常简单的方法可以做到这一点,在 this page 上进行了说明。 .

(从页面复制并修改)

>>> import numpy as np
>>> from sklearn.preprocessing import Imputer
>>> # missing_values is the value of your placeholder, strategy is if you'd like mean, median or mode, and axis=0 means it calculates the imputation based on the other feature values for that sample
>>> imp = Imputer(missing_values='NaN', strategy='mean', axis=0)
>>> imp.fit(train)
Imputer(axis=0, copy=True, missing_values='NaN', strategy='mean', verbose=0)
>>> train_imp = imp.transform(train)

关于python - 如何让 SVM 很好地处理 scikit-learn 中的缺失数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11441751/

相关文章:

python - pandas:如何进行多个 groupby-apply 操作

python - 打印由位列表表示的列表中的项目

machine-learning - 文档向量中的哪些“信息”使情感预测起作用?

python - 是否可以从 shell (vim + tmux) 编程并为 matplotlib 图托管 python 服务器?

python - KNN算法实现

python - 如何将 Python 包 pip 安装到虚拟环境中并在普通 shell 中访问 CLI 命令

python - 需要删除列表中的所有重复值

Python在一行代码上运行速度极慢

matlab - 根据不同的窗口宽度(非对称窗口宽度)将局部最大值附近的值分配给局部最大值的值

python - Gunicorn/flask API 暴露 sklearn 模型不工作