Sklearn学习笔记7 Preprocessing

Sklearn.preprocessing模块

Sklearn学习笔记7 Preprocessing_第1张图片

2.1 LabelEncoder()

使用 0 和 n_classes-1 之间的值对目标标签进行编码。这个转换器应该用于编码目标值,即 y,而不是输入X。

(1)常用方法

方法 说明
fit(y) 训练编码器
fit_transform(y) 训练编码器并返回编码后的标签
get_params([deep]) 获取参数
inverse_transform(y) 将编码还原为原始标签
set_params(**params) 设置参数
transform(y) 将标签转化为标准化编码

(2)示例

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()

Sklearn学习笔记7 Preprocessing_第2张图片

df1 = df[["Sex","Embarked"]]
labelenc = LabelEncoder()  
df1["labeledSex"] = labelenc.fit_transform(df1["Sex"])  # 将Sex列进行编码
print(df1.head())

Sklearn学习笔记7 Preprocessing_第3张图片
原来的Sex列[“male”, “female”,“female”,“female”,“male”],经过编码后转化为[1,0,0,0,1],即将“male”转化为1,“female”转化为0。

2.2 OneHotEncoder()

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')
  • categories:‘auto’或列表, 默认’auto’,表示每个特征的类别(唯一值)
    – ‘auto’ : 根据训练数据自动确定类别。
    – list : categories[i]保存第 i 列中预期的类别。传递的类别不应在单个特征中混合字符串和数值,并且应在数值的情况下进行排序。使用的类别可以在categories_属性中找到。
  • sparsebool, 默认为True,如果设置为 True 将返回稀疏矩阵,否则将返回一个数组。
  • handle_unknown{‘error’, ‘ignore’}, 默认为’error’,如果在转换期间存在未知的分类特征,是否引发错误或忽略(默认为引发)。当此参数设置为 ‘ignore’ 并且在转换过程中遇到未知类别时,此功能的生成的 one-hot 编码列将全为零。在逆变换中,未知类别将表示为无。

(1)参数

  • categories_:每个特征的类别(按照 X 中特征的顺序并与 的输出相对应transform)
  • n_features_in_:拟合期间看到的特征数
  • feature_names_in_:拟合期间看到的特征名称。仅当X 具有全为字符串的特征名称时才定义。

(2)常用方法

方法 说明
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。

(3)示例

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()

Sklearn学习笔记7 Preprocessing_第4张图片

你可能感兴趣的:(机器学习,机器学习)