數據分析-虛擬變量的設定(python、R、STATA)

虛擬變量(dummy variables)

虛擬變量,也叫啞變量和離散特徵編碼,可用來表示分類變量、非數量因素可能產生的影響。

python設置虛擬變量
① 離散特徵的取值之間有大小的意義
例如:尺寸(L、XL、XXL)
離散特徵的取值有大小意義的處理函數map
pandas.Series.map(dict)
參數 dict:映射的字典

② 離散特徵的取值之間沒有大小的意義

pandas.get_dummies

例如:顏色(Red,Blue,Green)

處理函數:

get_dummies(data,prefix=None,prefix_sep="_",dummy_na=False,columns=None,drop_first=False)

① data 要處理的DataFrame
② prefix 列名的前綴,在多個列有相同的離散項時候使用
③ prefix_sep 前綴和離散值的分隔符,默認爲下劃線,默認即可
④ dummy_na 是否把NA值,作爲一個離散值進行處理,默認爲不處理
⑤ columns 要處理的列名,如果不指定該列,那麼默認處理所有列
⑥ drop_first 是否從備選項中刪除第一個,建模的時候爲避免共線性使用

-- coding: utf-8 --

import pandas

data = pandas.read_csv(
‘D:\PDA\4.18\data.csv’,
encoding=‘utf8’
)

data[‘Education Level’].drop_duplicates()

“”"
博士後 Post-Doc
博士 Doctorate
碩士 Master’s Degree
學士 Bachelor’s Degree
副學士 Associate’s Degree
專業院校 Some College
職業學校 Trade School
高中 High School
小學 Grade School
“”"
educationLevelDict = {
‘Post-Doc’: 9,
‘Doctorate’: 8,
‘Master’s Degree’: 7,
‘Bachelor’s Degree’: 6,
‘Associate’s Degree’: 5,
‘Some College’: 4,
‘Trade School’: 3,
‘High School’: 2,
‘Grade School’: 1
}

data[‘Education Level Map’] = data[
‘Education Level’
].map(
educationLevelDict
)

data[‘Gender’].drop_duplicates()

dummies = pandas.get_dummies(
data,
columns=[‘Gender’],
prefix=[‘Gender’],
prefix_sep="_",
dummy_na=False,
drop_first=False
)

dummies[‘Gender’] = data[‘Gender’]

原文:https://blog.csdn.net/lll1528238733/article/details/75107729

R設置虛擬變量
在R語言中對包括分類變量(factor)的數據建模時,一般會將其自動處理爲虛擬變量或啞變量(dummy variable)。但有一些特殊的函數,如neuralnet包中的neuralnet函數就不會預處理。如果直接將原始數據扔進去,會出現”requires numeric/complex matrix/vector arguments”需要數值/複數矩陣/矢量參數錯誤。
這個時候,除了將這些變量刪除,我們只能手動將factor variable轉換爲取值(0,1)的虛擬變量。所用的函數一般有model.matrix(),nnet package中的class.ind()。
將數據設置爲分類變量可用 as.factor()

STATA設置虛擬變量
STATA的設置最簡單,打出命令時在變量名前加"i."即可
例:

regress nameA  i.nameB

如果要將新建虛擬變量,則可用IX命令

 xi I.fincome, prefix(_I)    #fincome是變量名稱 _I是虛擬變量名前綴
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章