美文网首页
【TensorFlow基本功】使用OneHotEncoder生成

【TensorFlow基本功】使用OneHotEncoder生成

作者: 安安爸Chris | 来源:发表于2018-08-16 00:54 被阅读0次

    什么是OneHot? 这个大家可以自行百度。 这里的前提是你已经了解了这个概念。

    使用OneHotEncoder需要安装sklearn包以及scipy包。

    使用OneHotEncoder生成OneHot数据总共分为两步

    1. fit
      根据样本适配
    2. transform
      根据适配结果转换

    示例代码如下

    import numpy as np
    from sklearn.preprocessing import OneHotEncoder
    
    ohe = OneHotEncoder()
    b = np.array([[3], [8], [1], [1]])
    ohe.fit(b) # 样本数据
    X = np.array([[0], [0], [1], [0]])
    c = ohe.transform(X).toarray()
    print("c=", c)
    

    fit实际上是对样本做评估, 从样本数据来看一共有三个值:1,3,8. 所以生成的OneHot将有3列,用来分别表示这三个值;样本数据一共是4个数据,所以生成的OneHot将有4行。所以,OneHot结果将是一个(4,3)矩阵。

    结果如下:

    c= [[0. 0. 0.]
     [0. 0. 0.]
     [1. 0. 0.]
     [0. 0. 0.]]
    

    从X数据来看,第一个0不在样本中,所以为[0 0 0].
    第二位0同理
    第三位1,按大小顺序是第一(顺序应该为1,3,8),所以为[1 0 0]
    第四位0同理

    我们称刚才样例中的1,3,8位一种特征,就好比形容一个人,1,3,8分别代表了白,黄,黑三种肤色。那么现在我们再增加一组特征,如性别。 0,1分别代表男和女。
    修改代码如下:

    import numpy as np
    from sklearn.preprocessing import OneHotEncoder
    
    ohe = OneHotEncoder()
    b = np.array([[3, 1], [8, 1], [1, 0], [1, 1]])
    ohe.fit(b)
    X = np.array([[1,0], [0,0], [1,1], [3,1]])
    c = ohe.transform(X).toarray()
    print("c=", c)
    

    样本数据[3,1]代表了黄种女性,[8,1]代表了黑种女性,[1,0]代表了白种男性,[1,1]代表了白种女性。
    特征1刚才我们已经分析过了是(4,3);同理特征2应该是(4,2),那么最终结果应该是(4,5).
    结果如下:

    c= [[1. 0. 0. 1. 0.]#[1 0 0]和[1 0]的联合
     [0. 0. 0. 1. 0.]
     [1. 0. 0. 0. 1.]
     [0. 1. 0. 0. 1.]]
    

    每一行是两组特性的联合。前3列是特性1后2列是特性2.

    如果再增加一组特征就以此类推。 不知道现在你是否看明白了。如果有帮助,请点个赞吧。

    相关文章

      网友评论

          本文标题:【TensorFlow基本功】使用OneHotEncoder生成

          本文链接:https://www.haomeiwen.com/subject/ydngbftx.html