这个例子是《机器学习实战》(<machine learning in action>)逻辑回归的一个实例:从疝气病症预测病马的死亡率。
疝病是描述马胃肠痛的术语。该数据集中包含了医院检查马疝病的一些指标,我们的目标是通过这些指标(特征),来预测马是否会死亡。
数据集包括229个训练样本和67各测试样本,特征数量为22。数据集中包含缺失值,采取的措施是用0替换所有缺失值,这样做的原因是,我们在更新theta值时使用下式(具体参考上一篇),当某个特征值缺失时,我们如果用0来替代,则对应的theta值不会被更新(公式右边第二项=0),即缺失值不会对参数造成影响。
以下为python代码,由于训练数据比较少,这边使用了批处理梯度下降法,没有使用增量梯度下降法。
##author:lijiayan ##data:2016/10/27 ##name:logReg.py from numpy import * import matplotlib.pyplot as plt def loadData(filename): data = loadtxt(filename) m,n = data.shape print 'the number of examples:',m print 'the number of features:',n-1 x = data[:,0:n-1] y = data[:,n-1:n] return x,y #the sigmoid function def sigmoid(z): return 1.0 / (1 + exp(-z)) #the cost function def costfunction(y,h): y = array(y) h