Logistic回归为了寻找一个非线性函数Sigmoid的最佳拟合参数,求解过程由最优化算法完成,使用梯度上升算法和随机梯度上升算法
from numpy import *
# Logistic回归梯度上升优化算法
# 打开并读取文件,将数据和类别标签分开存储
def loadDataSet():
dataMat = []
labelMat = []
fr = open('E:\机器学习\machinelearninginaction\Ch05/testSet.txt')
for line in fr.readlines():
lineArr = line.strip().split()
# 每行的第一个值X1和第二个值X2分别是俩个属性,预测函数f(x)= wx + b
# 为了方便计算,将X0的值设为1,[1.0, float(lineArr[0]), float(lineArr[1])]
dataMat.append([1.0, float(lineArr[0]), float(lineArr[1])])
labelMat.append(int(lineArr[2]))
return dataMat, labelMat
# Sigmod函数
def sigmoid(inX):
return 1.0 / (1 + exp(-inX))
# 寻找最优参数,即最适合的权重
def gradAscent(dataMatIn, classLabels):
# 如果使用本书中的数据集,则特征矩阵为100*3,标签矩阵为100*1,为方便计算,将标签矩阵转置
dataM