回归:对于数据点,利用直线对其拟合的过程
Sigmoid函数:from度娘
特点:在x=0处像阶跃函数
输入 z =w0x0+w1x1+…+wnxn
优化方法:梯度上升(下降)法:
沿梯度方向找极值
原理:由于我们的任务是求得经验损失函数的最小值,所以实际上是一个“下坡”的过程。在每一个点上,我们希望往下走一步(假设一步为固定值0.5米),使得下降的高度最大,那么我们就要选择坡度变化率最大的方向往下走,这个方向就是经验损失函数在这一点梯度的反方向。每走一步,我们都要重新计算函数在当前点的梯度,然后选择梯度的反方向作为走下去的方向。随着每一步迭代,梯度不断地减小,到最后减小为零。这就是为什么叫“梯度下降法”。
核心:每走一步,迭代一次,计算当前的梯度,选择梯度最大(最小)的方向走
图上的γ 是一个系数,我们这里用0.001,迭代次数设置为500次
训练算法和画图的方法代码如下
import numpy as np
import matplotlib.pyplot as plt
import random
def loadDataSet():
"""
测试用例的加载,设有x1,x2,补上x0的常数系数为1方便计算
:return:
"""
dataMat=[];
labelMat=[];
fr =open("testSet.txt")
for line in fr.readlines():
lineArr=line.strip().split()
dataMat.append([1,float(lineArr[0]),float(lineArr[1])])
labelMat.append(int(lineArr[-1]))
return dataMat,labelMat
def sigmoid(inX):
return 1.0/(1+np.exp(-inX))
def gradAscent(dataMatIn,classLabels):
"""
梯