本节将使用逻辑回归来预测患有疝病的马的存活问题。这里的数据包含368个样本和28个特征,其中有两个样本的类别标签缺失,所以将这两个样本剔除,另外有大量数据的许多特征缺失,对于缺失较多的特征,将该特征删除,最后剩有366个样本,保留有21个特征。分为训练集299个样本,测试集67个样本,最后一列为类别标签,表示存活和未能存活。
上面对缺失数据的处理可以说是很简单暴力,实际上更科学的可选的作法有:
- 使用可用特征的均值来填补缺失值
- 使用特殊值来填补缺失值,如-1
- 忽略有缺失值的样本
- 使用相似样本的均值填补缺失值
- 使用另外的机器学习算法预测缺失值
1.导入sigmoid函数和随机梯度下降函数
import numpy as np
#sigmoid函数
def sigmoid(inX):
return 1.0/(1+np.exp(-inX))
#随机梯度下降
def stocGradDesc2(dataSet,classLabels):
a = np.array(dataSet)
b = np.array(classLabels)
m,n = a.shape
weight3 = np.ones((1,n))
for j in range(500):