1 LR模型与算法
LR模型与算法原理参见上一篇博客。
2 模型场景
注:疝气:描述马胃肠病的术语。
得到一批数据集,包含了368个样本,大部分有tag,每个样本的特征28个,通过这些训练出一个模型。下次我们只要输入一些特征,就能预测马屁是否会死亡。
3 准备数据
数据收集已经完成,接下来准备数据,主要处理数据的类型,数据是否缺失,异常。
对于缺失的数据:
1. 可用特征均值代替;
2. 特殊值,如-1;
3. 删去;
4. 相似样本的均值;
5. 使用别的Machine Learning方法预测缺失值;
具体到本次:
1. 缺失值必须是数值,用0代替
优点:
1) 0不会影响模型系数的更新;
2) sigmoid(0)=0.5,所以0对结果预测没有倾向性;**
3) 由于该数据集一般特征不为0,所以0有特殊值的含义。
- 若数据集中tag丢失,则丢弃该样本。
4 代码
from numpy import *
#sigmoid函数
def sigmoid(inX):
return 1.0/(1+exp(-inX))
def stocGradAscent1(dataMatrix, classLabels, numIter=150):
m,n = shape(dataMatrix)
weights = ones(n) #initialize to all ones
for j in range(numIter):
dataIndex = range(m)
for i in r