fit_transform()函数和transform()函数的区别

先来看fit和transform:

enc = OneHotEncoder(sparse=False)
enc.fit([[0, 0, 3],
         [1, 1, 0]])
ans = enc.transform([[0,0,3]])
print(ans)

[[1. 0. 1. 0. 0. 1.]]

我的理解是fit这里就让算法针对数据集中的元素进行一个特征的抽取,类似于给一个小孩起小名前观察他的身高体重等特征
transform就针对你给定的某个元素给出算法对其的编码,类似于给一个小孩起了一个“胖墩”的小名并告诉你


enc = OneHotEncoder(sparse=False)
ans = enc.fit_transform([[0, 0, 3],
                         [1, 1, 0]])
print(ans)

[[1. 0. 1. 0. 0. 1.]
 [0. 1. 0. 1. 1. 0.]]

这里的fit_transform是上面两个过程的一个集合,类似于老师基于班里所有的同学的身高体重等特征,然后给所有人都起了一个小名,最后顺序输出每个人的小名


还有一个点在于这个算法怎么确定用多少个数字来进行“取名”,来看下面的例子:

enc = OneHotEncoder(sparse=False)
ans = enc.fit_transform([[0, 0, 3],
                         [1, 1, 0],
                         [0, 2, 1],
                         [1, 0, 2]])
print(ans)

[[1. 0. 1. 0. 0. 0. 0. 0. 1.]
 [0. 1. 0. 1. 0. 1. 0. 0. 0.]
 [1. 0. 0. 0. 1. 0. 1. 0. 0.]
 [0. 1. 1. 0. 0. 0. 0. 1. 0.]]

我们待起名的目标一共有四个,即[0, 0, 3],[1, 1, 0],[0, 2, 1],[1, 0, 2]。对于处于不同目标同一位置处的特征的种类数即为我们对该特征进行编码的位数,类似于体重有:瘦,正常,胖。
具体来说:
对于各个目标的第一个数即为0,1,0,1,一共有0和1两个类别,即需要2个位来进行编码,10代表0,01代表1
对于各个目标的第二个数即为0,1,2,0,一共有0和1和2三个类别,即需要3个位来进行编码,100代表0,010代表1,001代表2
对于各个目标的第三个数即为3,0,1,2,一共有0和1和2和3四个类别,即需要4个位来进行编码,1000代表0,0100代表1,0010代表2,0001代表3

因此对于这四个目标来说,一共需要2+3+4=9位数字来进行编码(取名)

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值