使用scikit学习OneHotEncoder时如何处理分类数据中的缺失值(NaN)?

总和22

我最近开始学习python,以使用机器学习方法为研究项目开发预测模型。我有一个包含数字和分类数据的大型数据集。数据集有很多缺失值。我目前正在尝试使用OneHotEncoder对分类功能进行编码。当我读到有关OneHotEncoder的信息时,我的理解是对于缺少值(NaN),OneHotEncoder会将0分配给所有功能类别,例如:

0     Male 
1     Female
2     NaN

应用OneHotEncoder后:

0     10 
1     01
2     00

但是,在运行以下代码时:

    # Encoding categorical data
    from sklearn.compose import ColumnTransformer
    from sklearn.preprocessing import OneHotEncoder


    ct = ColumnTransformer([('encoder', OneHotEncoder(handle_unknown='ignore'), [1])],
                           remainder='passthrough')
    obj_df = np.array(ct.fit_transform(obj_df))
    print(obj_df)

我收到错误ValueError:输入包含NaN

因此,我想我以前对OneHotEncoder如何处理缺失值的理解是错误的。有没有办法让我获得上述功能?我知道在编码之前对缺失值进行插值会解决此问题,但是由于我正在处理医学数据,因此我不愿意这样做,并且担心插值会降低模型的预测准确性。

我发现这个问题很相似,但是答案没有提供有关如何处理NaN值的足够详细的解决方案。

让我知道你的想法,谢谢。

亚图

您需要先估算缺失的值。您可以在OneHot编码之前,Pipeline通过SimpleImputer设置most_frequent策略来使用估算步骤定义a

from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder
from sklearn.impute import SimpleImputer
from sklearn.pipeline import Pipeline

categorical_transformer = Pipeline(steps=[
    ('imputer', SimpleImputer(strategy='constant', fill_value='missing')),
    ('encoder', OneHotEncoder(handle_unknown='ignore'))])

preprocessor = ColumnTransformer(
    transformers=[
        ('cat', categorical_transformer, [0])
    ])

df = pd.DataFrame(['Male', 'Female', np.nan])
preprocessor.fit_transform(df)
array([[0., 1.],
       [1., 0.],
       [1., 0.]])

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何处理房地产数据中的缺失值?

如何处理JSON中的缺失数据

使用分类数据集进行一键编码:如何处理分类数据中的不同值(较少的数字)

使用scikit-learn(sklearn),如何处理缺失数据以进行线性回归?

使用scikit-learn(sklearn),如何处理缺失数据(因变量y)进行线性回归?

使用python绘制boxplot时如何处理NaN值?

如何在Python中为机器学习处理缺失的NaN

在R中使用Hmisc处理缺失值后如何处理“ Impute”数据类型

如何处理熊猫数据帧中特定长度序列中的缺失值?

如何处理熊猫数据框中的缺失数据?

如何处理函数中的Nan值

检查数组中的值时如何处理错误数据?

如何处理KeyRoutedEventArgs e中VirtualKey枚举的缺失值

Python:如何处理CSV中的缺失值?

如何填充分类数据中的缺失值?

Spark如何处理缺失值?

如何处理 Activeloop Hub 数据集中的 NaN 值?

使用特定列在scikit-learn中估算分类缺失值

在scikit-learn中估算分类缺失值

如何处理 Scikit.learn 管道中不平衡的 xgboost 多类分类?

scikit学习管道中的后处理分类器输出

处理缺失的数据,使用数据框值填充nan,进行插值

处理缺失的分类值ML

分类中如何处理低频实例?

使用多个分类器时-如何衡量整体表现?[SciKit学习]

如何处理 R 中逻辑类型列中的缺失值

熊猫-处理分类数据中的NaN

scikit中的分类报告学习

scikit-learn中处理nan / null的分类器