数据分析-虚拟变量的设定(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()。

# lasso回归
library(glmnet)
modeldata <- model.matrix(Price~.,data = car)[,-1]
lasso.fit <-glmnet(modeldata,car$Price)

将数据设置为分类变量可用 as.factor()

STATA设置虚拟变量
STATA的设置最简单,打出命令时在变量名前加"i."即可
例:

regress nameA  i.nameB

如果要将新建虚拟变量,则可用IX命令

 xi I.fincome, prefix(_I)    #fincome是变量名称 _I是虚拟变量名前缀

你可能感兴趣的:(数据分析)