我有pandas数据和一些文本类型的列。这些文本列中有一些NaN值。我要做的是用sklearn.preprocessing.Imputer
(用最频繁的值替换NaN)来估算NaN。问题在执行中。
假设有一个Pandas数据框df,它有30列,其中10列是分类性质的。
一旦我跑了:
from sklearn.preprocessing import Imputer
imp = Imputer(missing_values='NaN', strategy='most_frequent', axis=0)
imp.fit(df)
Python生成一个error: 'could not convert string to float: 'run1''
,其中“run1”是具有分类数据的第一列的普通(不缺少)值。
欢迎任何帮助
可以对分类列使用
sklearn_pandas.CategoricalImputer
。详细信息:首先,(从使用Scikit Learn和TensorFlow进行机器学习一书中)您可以有用于数字和字符串/分类特性的子管道,其中每个子管道的第一个转换器是一个选择器,它接受列名称列表(而
full_pipeline.fit_transform()
接受pandas数据帧):然后,可以将这些子管道与
sklearn.pipeline.FeatureUnion
组合,例如:现在,在
num_pipeline
中可以简单地使用sklearn.preprocessing.Imputer()
,但在cat_pipline
中,可以使用sklearn_pandas
包中的CategoricalImputer()
。注意:
sklearn-pandas
包可以与pip install sklearn-pandas
一起安装,但它是作为import sklearn_pandas
导入的复制并修改斯维瑟的答案,我为一只熊猫做了一个输入器
要使用它,您需要:
要对数值列使用平均值,而对非数值列使用最频繁的值,可以执行以下操作。您可以进一步区分整数和浮点数。我想用中位数代替整数列是有意义的。
哪个指纹
相关问题 更多 >
编程相关推荐