付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、logistic 回归1 .算法思想根据给定的数据集确定分类的边界.这个分类的边界就是我们所要求的回归函数.所谓的回归其实就是最正确拟合,回归函数就是确定最正确回归参数,然后对不同的特征赋予不同的权重2 .算法根底(1)所采用的映射函数是 sigmoid 函数,sigmoid函数比0-1函数(正方形波)更好的原 因是sigmoid函数在局部上看是平滑的,而在全局上看是接近跳跃的.而 0-1函数它本身是 跳跃的,不够平滑,误差比拟大.(2)根据回归函数计算出了一个结果,然后代入sigmoid 函数,就可以得到一个位于 0与1之间的函数值,然后根据这个函数值得大小就可以判断类别;如果是二类分类问题
2、值大于0.5属于1类,否那么属于0类(3)最正确回归系数确定的方法是梯度上升法:a.梯度上升法是用来求函数的最大值的,常说的梯度下降法是用来求函数的最小值的b.所谓的梯度其实就是数学中的导数,也就是数据变化最大的方向.一般用倒三角符号来表示梯度.c.公式为w= w+ a.tidu(f(w), 其中a是步长,该公式会一直被迭代直到次数到达某一个 值,或者到达某个误差允许的范围.3 .算法的优缺点优点:计算比拟简单,易于理解说明缺点:有可能会欠拟合适用的数据:标称数据和数值数据4 .算法的python 实现 (1)创造简单的数据from numpy import *from math import
3、 *import matplotlib.pyplot as plt# create the datadef createdata (filename):fr = open(filename, r) lines = fr.readlines() dataset = labelset = for each in lines:current_data = each.strip().split()dataset.append(1.0, float(current_data0), float(current_data1) labelset.append(int(current_data2)return
4、dataset, labelset(2)定义sigmoid 函数# define the sigmoid fuctiondef sigmoid (x): return 1.0/(1+ exp(-x)(3)定义梯度上升算法# define the gradascentdef gradascent (dataset, lableset): datamatrix = mat(dataset)y = mat(lableset).transpose() m, n = shape(datamatrix)a = 0.001maxloop = 500w = ones(n, 1) for i in range(
5、maxloop):l = datamatrix*wh = ones(m, 1)j =0 for each in l: hj = sigmoid(each) j += 1error = y - hw += a * datamatrix.transpose()*error return w(4)定义随机梯度下降算法,这是一个改良的算法,之所以它是一个改良的算法是由于他 节省了计算资源# improve the graddef gradimprove(dataset, datalable, times = 150):datamatrix = array(dataset)m,n = shape(dat
6、amatrix)weights = ones(n)for i in range(times): dataindex = range(m)for j in range(m): a = 4/(i + j + 10)+0.01 randindex = int(random.uniform(0, len(dataindex) t = sum(datamatrixrandindex*weights) h = sigmoid(t)error = datalablerandindex - hweights += a*datamatrixrandindex*error del (dataindexrandin
7、dex)return weights(5)绘制logstic函数# plot the regression functiondef plotregression (weights):datamat, datalable =createdata(F:data/machinelearninginaction/Ch05/testSet.txt) datastr = array(datamat) n = shape(datastr)0 x1 = 口 y1 = 口 x2 = 口 y2 = 口for i in range(n):if datalablei = 1:x1.append(datastri, 1
8、) y1.append(datastri, 2) else :x2.append(datastri, 1) y2.append(datastri, 2) fig = plt.figure() ax = fig.add_subplot(111) ax.scatter(x1, y1, s=30, c=red, marker=s) ax.scatter(x2, y2, s=30, c=green) x = arange(-3.0, 3.0, 0.1)y = (-weights0-weights1*x)/weights2ax.plot(x, y)plt.show()(6)对测试向量进行分类# clas
9、sify the vectordef classify (testdata, weights):testsum = sum(testdata*weights)classnum = sigmoid(testsum)if classnum 0.5: return 0else : return 1(7)进行十折交叉验证,这里针对的是判定马是否得病的案例# the multi testdef multitest (times):errorall = 0.0for i in range(times): error = horse() errorall += errorerrorrate = errora
10、ll/float(times)print the %d errorrate is %f % (times, errorrate) return errorrate(8)5.具体应用:判断一匹马是不是得病了# create the horse functiondef horse ():fr1 = open(F:data/machinelearninginaction/Ch05/horseColicTraining.txt)fr2 = open(F:data/machinelearninginaction/Ch05/horseColicTest.txt)lines = fr1.readlines(
11、)dataset = labelset = for each in lines:current_data = each.strip().split(t)vector = for i in range(21):vector.append(float(current_datai)dataset.append(vector)labelset.append(float(current_data21)weights = gradimprove(dataset, labelset, 500)test_lines = fr2.readlines()testdata = testlable = for eac
12、h in test_lines:current_data = each.strip().split(t)vector =for i in range(21):vector.append(float(current_datai)testdata.append(vector)testlable.append(float(current_data21)error = 0.0for i in range(len(testdata):lable = classify(testdatai, weights)if lable != testlablei:error += 1.0errorrate = error/float(len(testdata) p
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年秋季学期三年级上册小学英语(人教精通版三起)教学计划附进度表
- 齐齐哈尔市富裕县2025年数学三年级下学期期中学业质量监测试题含答案
- 黔东南南苗族侗族自治州2025届数学四下期中考试模拟试题含答案解析
- 黑龙江省黑河市嫩江县2025-2026学年数学四年级第二学期期中联考试题含答案解析
- 2025年西咸新区秦汉新城就业见习招聘(50人)笔试历年典型考点题库附带答案详解
- 2025年福建省船舶工业集团有限公司招聘2人笔试历年备考题库附带答案详解
- 2025年甘肃省庆阳市宁县新庄煤矿招聘生产性灵活用工134人笔试历年常考点试题专练附带答案详解
- 2025年浙商银行长沙分行浏阳支行(筹)社会招聘笔试历年典型考题及考点剖析附带答案详解
- 脉搏模拟考试题及答案
- 2026电修工理论考试题及答案
- 2026-2030直升机市场发展现状调查及供需格局分析预测报告
- 剖宫产患者术前皮肤准备与护理
- (2026)高血压性脑出血重症管理专家共识课件
- 施工现场临边洞口防护标准化规范
- 建筑工程材料见证取样手册
- 反恐怖防范安全风险评估工作指南(试行)
- 污染治理和节能减碳专项2024年中央预算内投资备选项目资金申请报告
- 李叔同简介课件
- CMBS业务培训课件
- 球房承包合同协议书
- 河北省科技厅课题申报书
评论
0/150
提交评论