DN1*_*DN1 3 python machine-learning pandas scikit-learn
我有一个包含 284 个特征的数据集,我尝试使用 scikit-learn 进行插补,但是出现错误,特征数量更改为 283:
imputer = SimpleImputer(missing_values = np.nan, strategy = "mean")
imputer = imputer.fit(data.iloc[:,0:284])
df[:,0:284] = imputer.transform(df[:,0:284])
X = MinMaxScaler().fit_transform(df)
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-150-849be5be8fcb> in <module>
1 imputer = SimpleImputer(missing_values = np.nan, strategy = "mean")
2 imputer = imputer.fit(data.iloc[:,0:284])
----> 3 df[:,0:284] = imputer.transform(df[:,0:284])
4 X = MinMaxScaler().fit_transform(df)
~\Anaconda3\envs\environment\lib\site-packages\sklearn\impute\_base.py in transform(self, X)
411 if X.shape[1] != statistics.shape[0]:
412 raise ValueError("X has %d features per sample, expected %d"
--> 413 % (X.shape[1], self.statistics_.shape[0]))
414
415 # Delete the invalid columns if strategy is not constant
ValueError: X has 283 features per sample, expected 284
Run Code Online (Sandbox Code Playgroud)
我不明白这是如何达到 283 个功能的,我假设在拟合时会找到全为 0 或其他内容的功能并决定放弃它,但我找不到告诉我如何确保仍然保留这些功能的文档。我不是程序员,所以不确定我是否遗漏了其他明显的东西,或者我是否更好地研究另一种方法?
小智 6
如果您的特征没有任何值,则可能会发生这种情况,来自https://scikit-learn.org/stable/modules/ generated/sklearn.impute.SimpleImputer.html :\n\'仅包含拟合时缺失值的列是如果策略不是 \xe2\x80\x9cconstant\xe2\x80\x9d\',则在转换时丢弃。\n您可以在构造输入器时使用较高的 \'verbose\' 值来判断这是否确实是问题所在:
\nsklearn.impute.SimpleImputer(..., verbose=100,...)
\n它会吐出类似的内容:\nUserWarning: 删除没有观察到的值的特征: [ ... ]
\n| 归档时间: |
|
| 查看次数: |
1880 次 |
| 最近记录: |