pandas 中對特征進行硬編碼和onehot編碼的實現(xiàn)
首先介紹兩種編碼方式硬編碼和onehot編碼,在模型訓練所需要數(shù)據(jù)中,特征要么為連續(xù),要么為離散特征,對于那些值為非數(shù)字的離散特征,我們要么對他們進行硬編碼,要么進行onehot編碼,轉(zhuǎn)化為模型可以用于訓練的特征
初始化一個DataFrame
import pandas as pd df = pd.DataFrame([ ['green', 'M', 20, 'class1'], ['red', 'L', 21, 'class2'], ['blue', 'XL',30, 'class3']]) df.columns = ['color', 'size', 'weight', 'class label']
硬編碼:
將feature的值從0(或者1)開始進行連續(xù)編碼,比如color進行硬編碼,color的值有三個,分別為編碼為1,2,3
可以用如下操作,對color字段下的值進行硬編碼
colorMap = {elem:index+1 for index,elem in enumerate(set(df["color"]))} df['color'] = df['color'].map(colorMap)
這樣可以進行硬編碼了,之前我的寫法是,先生成map,然后對每一行進行apply,顯然沒有上述代碼簡便
onehot編碼:
將某個字段下所有值橫向展開,對于每條數(shù)據(jù),其在對應展開的值上的值就是1,聽起來比較繞口,看下面的例子就知道了,python中,pandas 用get_dummies()方法即可
data1 = pd.get_dummies(df[["color"]])
如果要對多個feature 進行onehot,這樣即可df[[fea1,fea2..]]
對于onehot以后的數(shù)據(jù),如果需要原有的數(shù)據(jù)合并,直接拿原來的join onehot的數(shù)據(jù)即可
res = df.join(data1)
join操作默認是根據(jù)index來進行join的,而get_dummies()不會改變index
以上這篇pandas 中對特征進行硬編碼和onehot編碼的實現(xiàn)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
簡單掌握Python的Collections模塊中counter結構的用法
counter數(shù)據(jù)結構被用來提供技術功能,形式類似于Python中內(nèi)置的字典結構,這里通過幾個小例子來簡單掌握Python的Collections模塊中counter結構的用法:2016-07-07python中json操作之json.loads、json.load、json.jumps及json.jump用法
最近在python里面用json讀取json文件,可是老是不成功,特此記錄一下,下面這篇文章主要給大家介紹了關于python中json操作之json.loads、json.load、json.jumps及json.jump用法的相關資料,需要的朋友可以參考下2022-08-08