利用sklearn进行one-hot 编码

1.什么是one-hot

one-hot编码就是利用n位0,1编码来代表true or false
例如我们有一个标签集合 l a b e l = [ [ d o g ] , [ c a t ] , [ d o g ] , [ t i g e r ] , [ c a t ] , [ d o g ] ] label=[[dog], [cat], [dog], [tiger], [cat], [dog]] label=[[dog],[cat],[dog],[tiger],[cat],[dog]]一共有三类那么每个编码有3位,
那么one-hot 编码之后就是
[[0,1,0],[1,0,0],[0,1,0],[0,0,1],[1,0,0],[0,1,0]]
在众多的工具中我学习了sklearn,这是sklearn的官网one-hot介绍链接,博主太懒,就不介绍了,可以查看链接,如果哪里不理解欢迎留言。

2.代码

利用iris数据集练手,iris数据集链接
我把他整成了csv格式,链接:https://pan.baidu.com/s/1AbqpdkjQctec-5oUaRYcBQ
提取码:wthk

from sklearn.preprocessing import OneHotEncoder
from sklearn.utils import shuffle
import numpy as np
import pandas as pd
def Process_one_hot(data):
    encoder=OneHotEncoder(sparse=False)
    ans=encoder.fit_transform(np.array(data).reshape((-1,1)))
    print(encoder.inverse_transform(ans))#此为反向编码,当你求得最终的结果时候,
    #可以进行反向编码以获得我们原来数据集中的编码形式
    return ans

if __name__ == '__main__':
    data=pd.read_csv('iris.csv')
    data=shuffle(data)
    lable=data['Species']
    lable=Process_one_hot(lable)

欢迎留言交流

你可能感兴趣的:(sklearn)