sklearn 中的 OneHotEncoder 用法
使用OneHotEncoder时遇到问题:
然后谷歌了一会,说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())
输出:
上一篇:
通过多线程提高代码的执行效率例子
下一篇:
linux中利用环境变量PATH提权