sklearn 中的 OneHotEncoder 用法

使用OneHotEncoder时遇到问题:
sklearn 中的 OneHotEncoder 用法_第1张图片

然后谷歌了一会,说Python可能是32bit的,然后查自己是64bit…没问题。
后来发现是用法不对,在使用fit时

enc.fit([[23423, 1], [4534, 1], [4356, 1]])

此处去fit的变量不能是String,同时也不能大于int的最大值,而我的数据很长
这里写图片描述

则需要先处理成int内的数值,再去fit成OntHot编码。

还有一个问题是如果transform时出现fit时没遇到的数值,默认的会抛异常,这里把 handle_unknown = ‘ignore’ ,再出现未知数值时,则对应的数值均为0,没有OneHot的1了。

enc = OneHotEncoder(handle_unknown = 'ignore') 
# 忽略transform时的未知错误

文档:
这里写图片描述

#  test.py
import numpy as np
from sklearn.preprocessing import OneHotEncoder

enc = OneHotEncoder(handle_unknown = 'ignore')
#enc.fit([[23423, 1], [4534, 1], [4356, 1]])
enc.fit([[0, 0, 3], [0, 1, 2], [2, 2, 2], [2, 0, 2]])
print(enc.n_values_) # 每个特征出现的最大值+1
print("***")
print(enc.feature_indices_) # 累加 enc.n_values_
print("***")
print(enc.transform([[0, 0, 0]]).toarray())

输出:
sklearn 中的 OneHotEncoder 用法_第2张图片

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