Scikit-learn数据预处理分类变量编码之标签二值化
1 声明
本文的数据来自网络,部分代码也有所参照,这里做了注释和延伸,旨在技术交流,如有冒犯之处请联系博主及时处理。
2 名义变量编码简介
名义变量(特征)是(nominal features)分类变量的一种,变量间没用次序和等级之分。比如性别的男、女;民族的汉族、回族、傣族等。标签二值编码(LabelBinarizer)可以将该类型的变量以二值的形式表示。
注:这里主要针对原始分类变量是字符串的情况。
3 名义变量标签二值编码
import numpy as np
import pandas as pd
from sklearn.preprocessing import LabelBinarizer, MultiLabelBinarizer
# 1 创建一个特征,它有如下的数据,总共4类。
course = np.array([["Math"],
["Chinese"],
["English"],
["Math"],
["Physics"]])
one_hot = LabelBinarizer()
one_hot_cource=one_hot.fit_transform(course)
print(one_hot_cource)
print(one_hot.classes_)
#还原原始数据
print(one_hot.inverse_transform(one_hot_cource))
print(pd.get_dummies(course[:,0])) #取其中一列,当前仅一列