sklearn 利用LabelBinarizer, LabelEncoder,OneHotEncoder来处理文本和分类属性
对于分类和文本属性,需要将其转换为离散的数值特征才能喂给机器学习算法,常用的是转化为 one-hot编码格式。
df = pd.DataFrame({
'ocean_proximity':["<1H OCEAN","<1H OCEAN","NEAR OCEAN","INLAND", "<1H OCEAN", "INLAND"],
'population': [339.0, 113.0, 462.0, 353.9,1463.9, 570.0]})
1. LabelEncoder
将文本属性转化为离散的数值属性
from sklearn.preprocessing import LabelEncoder
encoder = LabelEncoder()
df_cat = df["ocean_proximity"]
df_cat_encoder = encoder.fit_transform(housing_cat)
df_cat_encoder
out: 返回的是一个numpy的数组
array([0, 0, 2, 1, 0, 1], dtype=int64)
可以使用encoder.classes_
来查看类别
encoder.classes_
out:
array([’<1H OCEAN’, ‘INLAND’, ‘NEAR OCEAN’], dtype=object)
注意:
机器学习算法通常认为两个相差较小的值要比两个相差较大的值更相似,但是 0和2(<1H OCEAN 和