【发布时间】:2015-08-15 13:32:57
【问题描述】:
我有一个缺失值 NaN 的特征矩阵,所以我需要先初始化那些缺失值。但是,最后一行抱怨并抛出以下错误行:
Expected sequence or array-like, got Imputer(axis=0, copy=True, missing_values='NaN', strategy='mean', verbose=0)。
我查了一下,似乎原因是 train_fea_imputed 不是 np.array 格式,而是 sklearn.preprocessing.imputation.Imputer 格式。我应该如何解决这个问题?
顺便说一句,如果我使用 train_fea_imputed = imp.fit_transform(train_fea),代码可以正常工作,但 train_fea_imputed 返回一个比 train_fea 小一维的数组
import pandas as pd
import numpy as np
from sklearn.ensemble import RandomForestClassifier
from sklearn.preprocessing import Imputer
imp = Imputer(missing_values='NaN', strategy='mean', axis=0)
train_fea_imputed = imp.fit(train_fea)
# train_fea_imputed = imp.fit_transform(train_fea)
rf = RandomForestClassifier(n_estimators=5000,n_jobs=1, min_samples_leaf = 3)
rf.fit(train_fea_imputed, train_label)
更新:我改成
imp = Imputer(missing_values='NaN', strategy='mean', axis=1)
现在尺寸问题没有发生。我认为插补函数存在一些固有问题。我完成项目后会回来。
【问题讨论】:
-
你能用虚拟值制作
train_fea和train_label的样本,以便我可以在我的计算机上运行它吗?例如像这样stackoverflow.com/a/30319249/238639 -
@bakkal 我认为您可以使用 numpy 生成随机矩阵并用 NaN 对其进行掩码尝试。
标签: python machine-learning scikit-learn