Jim*_*Jim 22 python machine-learning scikit-learn
我正在使用scikit-learn进行一些数据分析,而我的数据集有一些缺失值(由表示NA).我用genfromtxtwith 加载数据dtype='f8'并继续训练我的分类器.
分类很好RandomForestClassifier和GradientBoostingClassifier对象,但使用SVCfrom sklearn.svm会导致以下错误:
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
Run Code Online (Sandbox Code Playgroud)
是什么赋予了?如何使SVM与丢失的数据很好地配合?请记住,丢失的数据适用于随机森林和其他分类器.
小智 24
在使用SVM之前,您可以执行数据插补来处理缺失值.
编辑:在scikit-learn中,有一个非常简单的方法可以做到这一点,如本页所示.
(从页面复制并修改)
>>> 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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11049 次 |
| 最近记录: |