机器学习实例---4.1、Logistic回归基础篇之梯度上升算法 一、总结 一句话总结: Logistic回归是众多分类算法中的一员。通常,Logistic回归用于【二分类】问题,例如预测明天是否会下雨。当然它【也可以用于多分类】问题,不过为了简单起见,本文暂先讨论二分类问题。 Logistic回归一种二分类算法,它利用的是【Sigmoid函数阈值在[0,1]这个特性】。Logistic回归进行分类的主要思想是:根据现有数据对分类边界线【建立回归公式,以此进行分类】。其实,Logistic本质上是一个基于条件概率的判别模型(Discriminative Model)。 Sigmoid函数 ,我们也可以称它为【Logistic函数】 1、逻辑回归实例 代码注意? 假设Sigmoid函数的输入记为z,那么【z=w0x0 + w1x1 + w2x2】,即可将数据分割开。其中,【x0为全是1的向量,x1为数据集的第一列数据,x2为数据集的第二列数据】。另z=0,则0=w0 + w1x1 + w2x2。横坐标为x1,纵坐标为x2。这个方程未知的参数为w0,w1,w2,也就是我们需要求的回归系数(最优参数)。 2、本实例逻辑回归梯度上升核心代码? h = sigmoid(dataMatrix * weights) #梯度上升矢量化公式 # 矩阵相乘 (100,3)*(3,1)=(100,1) error = labelMat - h # (100,1)-(100,1) weights = weights + alpha * dataMatrix.transpose() * error # (3,1) = (3,1) + (3,100) * (100,1)
weights = np.ones((n,1)) print(weights) # 结果是3个1 for k in range(maxCycles): # 矩阵相乘 (100,3)*(3,1)=(100,1) h = sigmoid(dataMatrix * weights) #梯度上升矢量化公式 # (100,1)-(100,1) error = labelMat - h # (3,1) = (3,1) + (3,100) * (100,1) weights = weights + alpha * dataMatrix.transpose() * error return weights.getA() #将矩阵转换为数组,返回权重数组