我們?cè)谶M(jìn)行建模時(shí),變量中經(jīng)常會(huì)有一些變量為離散型變量,例如性別。這些變量我們一般無法直接放到模型中去訓(xùn)練模型。因此在使用之前,我們往往會(huì)對(duì)此類變量進(jìn)行處理。一般是對(duì)離散變量進(jìn)行one-hot編碼。下面具體介紹通過python對(duì)離散變量進(jìn)行one-hot的方法。
創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、成都外貿(mào)網(wǎng)站建設(shè)公司、特克斯網(wǎng)絡(luò)推廣、小程序設(shè)計(jì)、特克斯網(wǎng)絡(luò)營(yíng)銷、特克斯企業(yè)策劃、特克斯品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們大的嘉獎(jiǎng);創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供特克斯建站搭建服務(wù),24小時(shí)服務(wù)熱線:18982081108,官方網(wǎng)址:www.cdcxhl.com注意:這里提供兩種啞編碼的實(shí)現(xiàn)方法,pandas和sklearn。它們大的區(qū)別是,pandas默認(rèn)只處理字符串類別變量,sklearn默認(rèn)只處理數(shù)值型類別變量(需要先 LabelEncoder )
① pd.get_dummies(prefix=)
pandas的get_dummies()可以直接對(duì)變量進(jìn)行one-hot編碼,其中prefix是為one-hot編碼后的變量進(jìn)行命名。
②LabelEncoder和OneHotEncoder
我們也可以通過sklearn的模塊實(shí)現(xiàn)對(duì)離散變量的one-hot編碼,其中LabelEncoder是將離散變量替換為數(shù)字,
OneHotEncoder則實(shí)現(xiàn)對(duì)替換為數(shù)字的離散變量進(jìn)行one-hot編碼。
注:get_dummies()可以直接對(duì)字符型變量進(jìn)行one-hot編碼,但OneHotEncoder不能直接對(duì)字符型變量編碼,因此我們需要先將字符型變量轉(zhuǎn)換為數(shù)值型變量。這就是為什么在OneHotEncoder之前需要LabelEncoder的原因。
下面我們通過實(shí)例來介紹這兩種方法的具體使用:
①數(shù)據(jù)的導(dǎo)入
import pandas as pd import os os.getcwd() os.chdir('E:\study\kaggle\Titanic') from sklearn.preprocessing import OneHotEncoder from sklearn.preprocessing import LabelEncoder data = pd.read_csv('train.csv')