对插补数据进行编码,然后解码

2024-06-07 12:42:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我是python的,我有如下结构的数据,其中混合了分类和数字

subject_id hour_measure         urinecolor   blood pressure                  
3          1.00                 red         
           1.15                             high
4          2.00              yellow          low

我想用热板插补法插补,但我发现,我应该编码成数字,然后再插补

  from sklearn.preprocessing import OneHotEncoder
    enc = OneHotEncoder(handle_unknown='ignore')
   df= pd.read_csv('path')
    enc.fit(df)
    enc.transform(df)

当我尝试进行编码时,它要求我首先填充缺失值,那么在进行编码时如何处理缺失值呢?当我对分类数据进行编码时,插补将生成缺失值的值,如何在插补后将其还原为原始数据? 拜托,有人帮我解决这个问题吗?你知道吗


Tags: 数据id编码df分类数字结构subject
1条回答
网友
1楼 · 发布于 2024-06-07 12:42:35

基本上,您需要使用scikit学习管道:

import numpy as np

from sklearn.pipeline import make_pipeline
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import OneHotEncoder

X = np.array(
    [['cat1', 'cat1'],
     ['cat2', np.nan],
     [np.nan, 'cat2']],
    dtype=object
)

encoder = make_pipeline(
    SimpleImputer(strategy="constant", fill_value="missing"),
    OneHotEncoder(sparse=False)
)
print(encoder.fit_transform(X))
print(encoder[-1].categories_)
[[1. 0. 0. 1. 0. 0.]
 [0. 1. 0. 0. 0. 1.]
 [0. 0. 1. 0. 1. 0.]]
[array(['cat1', 'cat2', 'missing'], dtype=object), array(['cat1', 'cat2', 'missing'], dtype=object)]

这里缺少的值由一些np.nan值表示。它们首先被字符串'missing'替换。然后,每个类别将成为一列。因此,“缺失”信息将由编码后的列表示。你知道吗

您可能不想从数据中删除此信息。如果需要,可以删除相应的列。你知道吗

相关问题 更多 >

    热门问题