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())

输出:
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值