1、one-hot encoding
假如多个特征需要独热码编码,那么久按照上面的方法依次将每个特征的独热码拼接起来:
{sex:{male, female,other}}
{grade:{一年级, 二年级,三年级, 四年级}}
此时对于输入为{sex:male; grade: 四年级}进行独热编码,可以首先将sex按照上面的进行编码得到{100},然后按照grade进行编码为{0001},那么两者连接起来得到最后的独热码{1000001};
from sklearn import preprocessing
enc = preprocessing.OneHotEncoder()
enc.fit([[0, 0, 3], [1, 1, 0], [0, 2, 1], [1, 0, 2]])
enc.transform([[0, 1, 3]]).toarray()
one_hot encoding
2、 dummy coding
dummy encoding就是把一个有h个level的变量变成h-1个变量,比如3个level的变量就表示成成10,01,或00。而one-hot encoding就是用h个变量来代表这h个level,比如3个level的变量就表示成100,010,001
download.file("http://archive.ics.uci.edu/ml/machine-learning-databases/statlog/german/german.data",
"./german.data")
data <- read.table("./german.data")
str(data)
library("neuralnet")
NNModelAllNum <- neuralnet(V21 ~ V2 + V5 + V8, data)
NNModelAllNum
NNModel <- neuralnet(V21 ~ V1 + V2 + V5 + V8, data)
## Error: 需要数值/复数矩阵/矢量参数
dummyV1 <- model.matrix(~V1, data)
head(cbind(dummyV1, data$V1))
## (Intercept) V1A12 V1A13 V1A14
## 1 1 0 0 0 1
## 2 1 1 0 0 2
## 3 1 0 0 1 4
## 4 1 0 0 0 1
## 5 1 0 0 0 1
## 6 1 0 0 1 4
modelData <- model.matrix(~V1 + V2 + V5 + V8 + V21, data)
head(modelData)
## (Intercept) V1A12 V1A13 V1A14 V2 V5 V8 V21
## 1 1 0 0 0 6 1169 4 1
## 2 1 1 0 0 48 5951 2 2
## 3 1 0 0 1 12 2096 2 1
## 4 1 0 0 0 42 7882 2 1
## 5 1 0 0 0 24 4870 3 2
## 6 1 0 0 1 36 9055 2 1
NNModel <- neuralnet(V21 ~ V1A12 + V1A13 + V1A14 + V2 + V5 + V8, modelData)
3、 woe(weight of evidence)
WOEi=ln(PyiPni)=ln(#yi/#yT#ni/#nT)=ln(#yi/#ni#yT/#nT)
- Pyi 是这个组中响应客户(风险模型中,对应的是违约客户,总之,指的是模型中预测变量取值为“是”或者说1的个体)占所有样本中所有响应客户的比例,
- Pni 是这个组中未响应客户占样本中所有未响应客户的比例,
- #yi 是这个组中响应客户的数量, #ni 是这个组中未响应客户的数量,
-
#yT
是样本中所有响应客户的数量,
#nT
是样本中所有未响应客户的数量
- 当前分组中,响应的比例越大,WOE值越大;
- 当前分组WOE的正负,由当前分组响应和未响应的比例,与样本整体响应和未响应的比例的大小关系决定,当前分组的比例小于样本整体比例时,WOE为负,当前分组的比例大于整体比例时,WOE为正,当前分组的比例和整体比例相等时,WOE为0。
- WOE的取值范围是全体实数。
- 当前分组中,响应的比例越大,WOE值越大;
4、iv (information value)
IVi=(Pyi−Pni)×WOEi
IV=∑i=1nIVi
- 对于变量的一个分组,这个分组的响应和未响应的比例与样本整体响应和未响应的比例相差越大,IV值越大,否则,IV值越小;
- 极端情况下,当前分组的响应和未响应的比例和样本整体的响应和未响应的比例相等时,IV值为0;
- IV值的取值范围是[0,+∞),且,当当前分组中只包含响应客户或者未响应客户时,IV = +∞。
- n为特征包含的水平数目
http://www.cnblogs.com/daguankele/p/6595470.html
http://iccm.cc/generate-dummy-variable-in-r-language/