0%

LabelEnconder 和 OneHotEncoder

不得不说 我还是小看了ML的知识涉及的广度
光是ML 100days 的第一天其实涉及的内容就非常多
从Sklearn包到pycharm自带的各种BUG都搞的人头大

总算把这个整的有点明白了

LabelEnconder

1
2
3
4
5
6
7
8
9
from sklearn.preprocessing import LabelEconder
y = data.iloc[:.-1] # 索引所有的行 最后一列
# 三步
le = LabelEnconder() # 实例化
le = le.fit(y) # 导入数据
label = le.transform(y) # trasform就扣调取结果
# 这边fit了之后可以直接用le.classes_ 查看标签中有多少类别
le.classes_
# 输出 array(['No','Unknown','Yes'],dtype=object)
1
2
3
# 也可以直接fit_transform()一步到位
le.fit_transform(y)
# 这样看不到属性
1
2
3
# 从上到下一步到位
data.iloc[: , -1] = LabelEncoder().fit_transform(data.iloc[: , -1])
# 实例化、fit transform 全部完成

OneHotEncoder

遇到互相不相关的属性,为了避免模型训练的时候把欧式距离计算进去,对结果造成影响

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
from sklearn.preprocessing import OneHotEncoder
X = data.iloc[:,1:-1]

enc = OneHotEncoder(categories='auto').fit(X)
result = enc.transform(X).toarray()

# 任然可以一步到位
OneHotEncoder(categories='auto').fit_transform(X).toattay()

# 同时这个数值还可以还原
import pandas as pd
pd.DataFrame(enc.inverse_transform(result))

# 当被哑变量(Onehot)之后,需要一个借口来查看每列的意义
enc.get_feature_names()

# 还有 concat 方法可以将两个表相连