一、類別變量中“有序”和“無序”的區(qū)分
類別變量轉(zhuǎn)化為數(shù)字喘沿,需要區(qū)分是否是有序類別闸度,如 male和female,就是無序的蚜印,應(yīng)該轉(zhuǎn)化成(1,0)和(0,1)筋岛,但衣服大小,M晒哄,L,XL肪获,則應(yīng)轉(zhuǎn)化為1,2,3
若將無序?qū)傩赃B續(xù)化寝凌,則會(huì)不恰當(dāng)?shù)囊胄蜿P(guān)系,對后續(xù)處理如距離計(jì)算等造成誤導(dǎo)孝赫,具體參加9.3较木。(待補(bǔ)充)
二、類別變量轉(zhuǎn)化的Python實(shí)現(xiàn)
1青柄、有序的類別變量
有序的類別變量轉(zhuǎn)化伐债,一般直接采用賦值预侯、映射的方法即可,可以采用Python帶的map函數(shù)峰锁。
比如size:[X,XL,XXL]萎馅,使用數(shù)值的映射{X:1,XL:2,XXL:3}。
2虹蒋、無序的類別變量
無序的類別變量轉(zhuǎn)化糜芳,一般對應(yīng)的轉(zhuǎn)碼方式為 one-hot編碼,采用pd.get_dummies(df) 就可以魄衅。
具體代碼如下
(1)有序:
import pandas as pd
df = pd.DataFrame([
['green', 'M', 10.1, 'class1'],
['red', 'L', 13.5, 'class2'],
['blue', 'XL', 15.3, 'class1']],
)
df.columns = ['color', 'size', 'prize', 'class label']
# DataFrame相當(dāng)于一個(gè)數(shù)據(jù)表峭竣,DataFrame(data,columns=['a','b','c'],index=['one','two','three']) ,有這些參數(shù)
#上面的代碼可以寫成,data = [
['green', 'M', 10.1, 'class1'],
['red', 'L', 13.5, 'class2'],
['blue', 'XL', 15.3, 'class1']]
# df = pd.DataFrame (data,columns = ['color', 'size', 'prize', 'class label'])
size_mapping = { 'XL': 3, 'L': 2,'M': 1} #建立一個(gè)字典晃虫,構(gòu)建鍵值對皆撩,即數(shù)據(jù)映射。
df['size'] = df['size'].map(size_mapping) # map函數(shù)的使用
將 M,L,XL轉(zhuǎn)化成了1,2,3
(2)無序
pd.get_dummies(df)
將color和class兩列哲银,轉(zhuǎn)化成了one_hot編碼扛吞。