将标签进行One-hot编码
在利用機(jī)器學(xué)習(xí)或者深度學(xué)習(xí)解決分類問題時(shí),我們需要將標(biāo)簽進(jìn)行編碼,有時(shí)也需要將離散的自變量進(jìn)行分類編碼,特別是做神經(jīng)網(wǎng)絡(luò)或回歸預(yù)測(cè)時(shí),對(duì)離散的自變量也進(jìn)行One-hot編碼擴(kuò)維是一種很好辦法,例如我們預(yù)測(cè)租房市場(chǎng)單個(gè)房源的價(jià)錢時(shí),假設(shè)裝修程度是影響其價(jià)格的因素,有豪裝、精裝、中裝、簡(jiǎn)裝四種,如果我們將其視為一個(gè)變量X1不同的值,即分別編碼維1,2,3,4,那么做神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)時(shí)給予這一個(gè)變量權(quán)重,就不是很合適,除非事先知道這四種對(duì)價(jià)格影響的排序,否則不能給予很好的權(quán)重,此時(shí)應(yīng)該對(duì)其擴(kuò)維,成為X1、X2、X3、X4,對(duì)應(yīng)的豪裝=[1,0,0,0]、精裝=[0,1,0,0]...以此類推。如果視為一個(gè)變量,則豪裝=[1]、精裝=[2]...以此類推,這樣的算法做分類預(yù)測(cè)或者回歸預(yù)測(cè)是不合適的。此時(shí)我們需要對(duì)離散的自變量X或者標(biāo)簽Y進(jìn)行One-hot編碼。
??????? 本文采用Python在Liunx環(huán)境下,安裝Anaconda3的環(huán)境下,進(jìn)行編程實(shí)現(xiàn),值得一提的是Anaconda3包含了numpy、pandas、sklearn等科學(xué)計(jì)算、數(shù)據(jù)分析、機(jī)器學(xué)習(xí)包,也可以在再次基礎(chǔ)上安裝tensorflow框架進(jìn)行深度神經(jīng)網(wǎng)絡(luò)研究。假設(shè)有一組樣本的標(biāo)簽y=[0,1,2,3,1,2,0,1],我們將其進(jìn)行One-hot編碼,則代碼實(shí)現(xiàn)如下
from sklearn.preprocessing import OneHotEncoder import numpy as np y=np.array([0,1,2,3,1,2,0,1]) ohe = OneHotEncoder() ohe.fit([[0],[1],[2],[3]]) print(ohe.transform(y.reshape(-1,1)).toarray())我們會(huì)看到輸出結(jié)果為
/home/ubuntu/anaconda3/bin/python /home/ubuntu/PycharmProjects/Testpycharm/liyang2.py
[[1. 0. 0. 0.]
?[0. 1. 0. 0.]
?[0. 0. 1. 0.]
?[0. 0. 0. 1.]
?[0. 1. 0. 0.]
?[0. 0. 1. 0.]
?[1. 0. 0. 0.]
?[0. 1. 0. 0.]]
Process finished with exit code 0
總結(jié)
以上是生活随笔為你收集整理的将标签进行One-hot编码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 三菱M70仿真系统软件PLC 相似度百分
- 下一篇: 政务大数据系列7:政务大数据的部署结构