zoukankan      html  css  js  c++  java
  • 几种实现one-hot编码的方式

    方法1

    之前写使用sklearn进行数据挖掘-房价预测(4)—数据预处理一文中处理标签类特征时候已经提到过,使用sklearn中提供的LabelEncoderOneHotEncoder方法

    a = ['A','B','A','C']
    from sklearn.preprocessing import OneHotEncoder,LabelEncoder
    label_value = label_encoder.fit_transform(a)
    >>label_encoder.classes_
    array(['A', 'B', 'C'], dtype='<U1')
    >>label_value 
    array([0, 1, 0, 2], dtype=int64)
    encoder = OneHotEncoder()
    >>one_hot.toarray()
    [[ 1. 0. 0.]
    [ 0. 1. 0.]
    [ 1. 0. 0.]
    [ 0. 0. 1.]]
    

    方法2

    sklearn提供的简单方法,上面两步可以合并为一步

    from sklearn.preprocessing import LabelBinarizer
    encoder = LabelBinarizer()
    one_hot = encoder.fit_transform(a)
    >>one_hot
    array([[1, 0, 0],
           [0, 1, 0],
           [1, 0, 0],
           [0, 0, 1]])
    

    方法3

    这次需要隆重介绍的是这个方法,在TensorFlow代码中看到一个转为one-hot的实现,方法比较的独特,里面一些numpy方法自己之前也没有接触过,就摘抄下来,反复背诵并默写 =。=

    def dense_to_one_hot(labels_dense, num_classes):
       """Convert class labels from scalars to one-hot vectors."""
       num_labels = labels_dense.shape[0]
       index_offset = np.arange(num_labels) * num_classes
       labels_one_hot = np.zeros((num_labels, num_classes))
       labels_one_hot.flat[index_offset + labels_dense.ravel()] = 1
       return labels_one_hot
    
  • 相关阅读:
    CF 1083 A. The Fair Nut and the Best Path
    2434: [Noi2011]阿狸的打字机
    HDU 6086 Rikka with String
    HDU 2825 Wireless Password
    异常处理与补充模块
    面向对象
    初始socket
    面向对象的进阶(组合和继承)
    初始面向对象
    python之其他模块的用法
  • 原文地址:https://www.cnblogs.com/wxshi/p/8645600.html
Copyright © 2011-2022 走看看