首页 > 解决方案 > 如何在 sklearn make_column_transformer 中使用 LabelEncoder?

问题描述

如何在 sklearn 管道中使用 LabelEncoder?

注意 以下代码适用于“OneHotEncoder”,但适用于“LabelEncoder”,在这种情况下如何使用LabelEncoder?

MWE

import numpy as np
import pandas as pd
import seaborn as sns
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
from sklearn.compose import make_column_transformer
import sklearn

print(sklearn.__version__) # 0.22.2.post1

df = sns.load_dataset('titanic').head()

le = OneHotEncoder() # this success
# le = LabelEncoder() # this fails

ct = make_column_transformer(
    (le, ['sex','adult_male','alone']),
    remainder='drop')

ct.fit_transform(df)

$$\begin{align}\mathsf P(N\mid E)&=\dfrac{\mathsf P(N\cap E)}{\mathsf P(E)}\[2ex]&=\dfrac{\mathsf P(N\cap E\mid F),\mathsf P(F)+\mathsf P(N\cap E\mid F^{\small\complement}),\mathsf P(F^{\small\complement} )}{\mathsf P(E\mid F),\mathsf P(F)+\mathsf P(E\mid F^{\small\complement}),\mathsf P(F^{\small\complement}) }\end{对齐}$$

标签: pythonscikit-learn

解决方案


从文档中,OneHotEncoder可以获取数据框并将分类列转换为您看到的向量。LabelEncoder接受一个系列(你的 y / 因变量)并生成新标签。

OnHotEncoder 的用法:fit_transform(X,[y])

LabelEncoder 的用法:fit_transform(y)

这就是为什么它会告诉你:“ fit_transform() takes 2 positional arguments but 3 were given

LabelEncoder fit_transform如果您真的想使用它,只需直接调用y 即可。这是一个类似的问题:How to use sklearn Column Transformer?

以下是文档:

  1. https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.OneHotEncoder.html
  2. https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.LabelEncoder.html

推荐阅读