本系列以书中源码为主,稍作修改并添加注释,均实际运行可行。为免后来者踩坑,特此公开!欢迎打赏!
转载请注明出处!
from numpy import *
import matplotlib.pyplot as plt
#logistic回归梯度上升优化算法
def loadDataSet():#收集并整理数据
dataMat = []; labelMat = []
fr = open(r'选择你自己的数据集存储路径\testSet.txt')
for line in fr.readlines():
lineArr = line.strip().split()
dataMat.append([1.0,float(lineArr[0]),float(lineArr[1])])
labelMat.append(int(lineArr[2]))
return dataMat,labelMat#返回数据集与标签列表
def sigmoid(inX):#定义sigmoid函数
return 1.0/(1+exp(-inX))
def gradAscent(dataMatIn,classLabels):#定义梯度上升优化算法。问题:计算量大
dataMatrix = mat(dataMatIn)#转换为Numpy矩阵数据类型
labelMat = mat(classLabels).transpose()#转换为Numpy矩阵数据类型,将行向量转换为列向量便于计算
m,n = shape(dataMatrix)#获取数据的行和列
alpha = 0.001#定义步长
maxCycles = 500#迭代的次数
weights = ones((n,1))