【发布时间】:2020-06-17 01:16:51
【问题描述】:
我有一个包含 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
我不明白这是如何达到 283 个功能的,我假设在拟合时会找到全为 0 或其他内容的功能并决定放弃它,但我找不到告诉我如何确保这些功能的文档仍然保留。我不是程序员,所以不确定我是否遗漏了其他明显的东西,或者我是否更好地研究另一种方法?
【问题讨论】:
-
是否有任何分类(例如字符串)列?
-
看起来你在 fit 和 transform 调用之间的矩阵索引出了点问题。你能尝试做一个
fit_transform(拟合并返回转换后的数据)
标签: python pandas machine-learning scikit-learn