没有合适的资源?快使用搜索试试~ 我知道了~
-0.017612 14.053064 0 -1.395634 4.662541 1 -0.752157 6.538620 0 -1.322371 7.152853 0 0.423363 11.054677 0 0.406704 7.067335 1 0.667394 12.741452 0 首先把需要处理的数据集的格式张贴一下。 我们先来看第一个函数:导入数据集 from numpy import * def loadDataSet(): dataMat = []; labelMat = [] fr = open('testSet.txt') for line in
资源详情
资源评论
资源推荐
机器学习机器学习 之之 逻辑回归代码解读逻辑回归代码解读
-0.017612 14.053064 0
-1.395634 4.662541 1
-0.752157 6.538620 0
-1.322371 7.152853 0
0.423363 11.054677 0
0.406704 7.067335 1
0.667394 12.741452 0
首先把需要处理的数据集的格式张贴一下。
我们先来看第一个函数:导入数据集我们先来看第一个函数:导入数据集
from numpy import *
def loadDataSet():
dataMat = []; labelMat = [] fr = open('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
在每一行中我们按照 line.strip() 默认分割方式(空格,tab等)进行分割,然后把数据的加上1.0作为开头,这是为了方便计算
的,待会会进行说明;然后把列表加载到矩阵里。并把标签存在另一个矩阵里。
一般在二维平面分类的时候,我们的直线是 ,但是放到矩阵里进行计算的话,就比较麻烦。我们把b移位到
左边,生成新的表示方式: ,注意这里的X0永远是1,这样右边就是0了,在矩阵计算就只需要用
到左边就行了。
然后是第二个函数:然后是第二个函数:sigmoid以及梯度上升函数。以及梯度上升函数。
def sigmoid(inX):
return 1.0/(1+exp(-inX))
def gradAscent(dataMatIn, classLabels):
dataMatrix = mat(dataMatIn) #convert to NumPy matrix
labelMat = mat(classLabels).transpose() #convert to NumPy matrix
m,n = shape(dataMatrix)
alpha = 0.001
maxCycles = 500
weights = ones((n,1))
for k in range(maxCycles): #heavy on matrix operations
h = sigmoid(dataMatrix*weights) #matrix mult
error = (labelMat - h) #vector subtraction
weights = weights + alpha * dataMatrix.transpose()* error #matrix mult
return weights
标签进行一下转置,学习率设为0.001,然后一共学习500轮。注意这里的n打印出来以后是3,代表前面每个样本的三个数
值。
weights的初始值设为了(1,1,1),然后乘出来的结果进入sigmoid函数,sigmoid函数接受一个矩阵,输出也是一个矩阵(而不
仅是一个数值),我们把标签与sigmoid生成的结果相减,得到偏差error,然后通过梯度上升算法来修改weight。
简单说明一下:
对任意Xi进行求偏导,然后就可以得到后面的表达式。注意一个样本的三个数据(X0,X1,X2)在经过了上面的sigmoid函数
后,值会在1——0之间。误差的意义就是判断这个值与样本的标签(二分类的时候要么是0,要么是1)的差距是多少,然后
通过梯度上升进行计算。为什么是梯度上升以及为什么这么求,大家可以看别人的博客,李航的统计学习书也比较详细,李宏
毅的视频里也介绍了。这里我就懒得再写了。
然后再看第三个函数:关于随机梯度上升法。然后再看第三个函数:关于随机梯度上升法。
weixin_38576811
- 粉丝: 6
- 资源: 890
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0