使用 0 和 n_classes-1 之间的值对目标标签进行编码。这个转换器应该用于编码目标值,即 y,而不是输入X。
方法 | 说明 |
---|---|
fit(y) | 训练编码器 |
fit_transform(y) | 训练编码器并返回编码后的标签 |
get_params([deep]) | 获取参数 |
inverse_transform(y) | 将编码还原为原始标签 |
set_params(**params) | 设置参数 |
transform(y) | 将标签转化为标准化编码 |
import pandas as pd
from sklearn.preprocessing import LabelEncoder,OneHotEncoder
df = pd.read_csv("./datasets/train.csv",sep=",",header=0,index_col=0)
df["Embarked"] = df["Embarked"].fillna("S")
df.head()
df1 = df[["Sex","Embarked"]]
labelenc = LabelEncoder()
df1["labeledSex"] = labelenc.fit_transform(df1["Sex"]) # 将Sex列进行编码
print(df1.head())
原来的Sex列[“male”, “female”,“female”,“female”,“male”],经过编码后转化为[1,0,0,0,1],即将“male”转化为1,“female”转化为0。
OneHotEncoder()用于将分类数据进行独热编码。
这个转换器的输入应该是一个类似数组的整数或字符串,表示分类(离散)特征所采用的值。使用 one-hot(又名“one-of-K”或“dummy”)编码方案对特征进行编码。这将为每个类别创建一个二进制列并返回一个稀疏矩阵或密集数组(取决于sparse 参数)
默认情况下,编码器根据每个特征中的唯一值派生类别。或者,您也可以categories 手动指定。
将分类数据提供给许多 scikit-learn 估计器需要这种编码,特别是线性模型和具有标准内核的 SVM。
注意:y 标签的 one-hot 编码应该使用 LabelBinarizer。
class sklearn.preprocessing.OneHotEncoder(*, categories='auto', drop=None, sparse=True, dtype=<class 'numpy.float64'>, handle_unknown='error')
方法 | 说明 |
---|---|
fit(X[, y]) | 将 OneHotEncoder 拟合到 X。 |
fit_transform(X[, y]) | 将 OneHotEncoder 拟合到 X,然后变换 X。 |
get_feature_names([input_features]) | 已弃用:get_feature_names 在 1.0 中已弃用,并将在 1.2 中删除。 |
get_feature_names_out([input_features]) | 获取转换的输出特征名称。 |
get_params() | 获取此估算器的参数。 |
inverse_transform(X) | 将数据转换回原始表示。 |
set_params(**params) | 设置此估计器的参数。 |
transform(X) | 使用 one-hot 编码转换 X。 |
df3 = df[["Sex","Embarked"]]
enc = OneHotEncoder()
enc.fit(df3)
df4 = pd.DataFrame(data = enc.transform(df3).toarray(), columns=enc.get_feature_names_out())
print(enc.get_feature_names())
print(enc.get_feature_names_out())
df4.head()