李航《统计学习方法》感知机代码

import numpy as np
import timedef loadData(filename):'''加载minist训练集数量:60000测试集数量:10000'''print('start to read data')#存放数据及标记的listdataArr = []labelArr= []#打开文件,只读形式打开fr = open(filename,'r')#将文件逐行读取for line in fr.readlines():#line.strip()删除换行符,line.split(',')以','分割curLine = line.strip().split(',')#Mnist有0-9个标记,由于是二分类任务,所以将>=5的作为1,<5的作为-1if int(curLine[0]) >= 5:labelArr.append(1)else:labelArr.append(-1)#存放标记dataArr.append([int(num)/255 for num in curLine[1:]])return dataArr,labelArrdef perceptron(dataArr,labelArr,iter = 50):'''感知机训练过程可以理解为将mnist数据集中28*28=784大小的像素值看做是不同维度的数值相当于在784维空间中寻找一个超平面,可以将>=5和<5进行很好的分类输入:dataArr训练集labelArr训练集标签iter迭代循环次数,默认为50输出:训练权重w和偏置b'''print('start to train')#将数据转换为矩阵形式dataMat = np.mat(dataArr)           #m行n列labelMat = np.mat(labelArr).T    #m行1列m,n = np.shape(dataMat)#w为1行n列w = np.zeros((1,n))b = 0h = 0.0001for k in range(iter):for i in range(m):xi = dataMat[i]  #1行n列yi = labelMat[i] #1行1列#"-yi * (w * xi.T + b)"就是感知机的导数if -1 * yi * (w * xi.T + b) >= 0:#w和b的更新w = w + h * yi * xib = b + h * yiprint('Round %d:%d training' %(k, iter))return w, bdef model_test(dataArr,labelArr,w,b):'''测试准确率输入:dataArr测试数据集labelArr测试集标签w 训练得到的权重wb 训练得到的偏置b返回:准确率'''print('start to test')dataMat = np.mat(dataArr)    #m*nlabelMat = np.mat(labelArr).T # n* 1m,n = np.shape(dataMat)#errorCnt记录错误样本数errorCnt = 0for i in range(m):xi = dataMat[i]yi = labelMat[i]result = -1 * yi * (w * xi.T + b)if result >= 0:errorCnt += 1accruRate = 1 - (errorCnt / m)return accruRateif __name__ == '__main__':#获取当前时间start = time.time()#获取训练集及标签trainData,trainLabel = loadData('./mnist_train.csv')testData,testLabel = loadData('./mnist_test.csv')w,b = perceptron(trainData,trainLabel,30)accruRate = model_test(testData,testLabel,w,b)end = time.time()print('accuracy rate is:',accruRate)print('time span:',end - start)

李航《统计学习方法》感知机代码相关推荐

  1. 李航统计学习方法----感知机章节学习笔记以及python代码

    目录 1 感知机模型 2 感知机学习策略 2.1 数据集的线性可分性 2.2 感知机学习策略 3 感知机学习算法 3.1 感知机学习算法的原始形式 3.2 感知机算法的对偶形式 4 感知机算法pyth ...

  2. 【李航统计学习方法】感知机模型

    目录 一.感知机模型 二.感知机的学习策略 三.感知机学习算法 感知机算法的原始形式 感知机模型的对偶形式 参考文献 本章节根据统计学习方法,分为模型.策略.算法三个方面来介绍感知机模型. 首先介绍感 ...

  3. 李航统计方法——感知机

    李航统计学习方法--感知机 文章目录 李航统计学习方法--感知机 1.数据集的线性可分性 2.感知机学习策略 3.感知机学习算法 3.1感知机学习算法原始形式 3.2感知机学习算法的对偶形式 1.数据 ...

  4. 机器学习:李航-统计学习方法-代码实现

    <统计学习方法>的代码实现分享 <统计学习方法>这本书,附件里并没有代码实现,于是许多研究者复现了里面算法的代码,并放在github里分享,这里介绍几个比较热门的<统计学 ...

  5. 统计学习方法 pdf_李航统计学习方法(第三章)

    第3章 k 近邻法 k 近邻法(k-NN)是一种基于实例的学习方法,无法转化为对参数空间的搜索问题(参数最优化问题).它的特点是对特征空间进行搜索.除了k近邻法,本章还对以下几个问题进行较深入的讨论: ...

  6. 统计学习方法|感知机原理剖析及实现

    欢迎直接到我的博客查看最近文章:www.pkudodo.com.更新会比较快,评论回复我也能比较快看见,排版也会更好一点. 原始blog链接: http://www.pkudodo.com/2018/ ...

  7. 《统计学习方法》代码更新了-(github的star数5300+)

    李航老师的<统计学习方法>可以说是机器学习的入门宝典,许多机器学习培训班.互联网企业的面试.笔试题目,很多都参考这本书.2019年5月1日,<统计学习方法第二版>出版了!本人的 ...

  8. 手机上的机器学习资源!Github标星过万的吴恩达机器学习、深度学习课程笔记,《统计学习方法》代码实现!...

    吴恩达机器学习.深度学习,李航老师<统计学习方法>.CS229数学基础等,可以说是机器学习入门的宝典.本文推荐一个网站"机器学习初学者",把以上资源的笔记.代码实现做成 ...

  9. 新建网站了!Github标星过万的吴恩达机器学习、深度学习课程笔记,《统计学习方法》代码实现,可以在线阅读了!...

    吴恩达机器学习.深度学习,李航老师<统计学习方法>,可以说是机器学习入门的宝典.本文推荐一个网站"机器学习初学者",把以上资源的笔记.代码实现做成了网页版,可以在线阅读 ...

  10. 吴恩达深度学习笔记_Github标星过万的吴恩达机器学习、深度学习课程笔记,《统计学习方法》代码实现,可以在线阅读了!...

    吴恩达机器学习.深度学习,李航老师<统计学习方法>,可以说是机器学习入门的宝典.本文推荐一个网站"机器学习初学者",把以上资源的笔记.代码实现做成了网页版,可以在线阅读 ...

最新文章

  1. 一文理解Ranking Loss/Margin Loss/Triplet Loss
  2. 上传功能(前后端代码)
  3. Jquery判断单选框是否选中和获取选中的值
  4. Android应用点击两次back退出
  5. 电脑有回声_电脑麦克属性调整(用于回声消除)
  6. IA-32 Intel手册学习笔记(一)系统架构概述
  7. python if 跳出_Python保留字简单释义
  8. 机器人辅助的符文天赋_10.5版本T1辅助盘点 进攻型辅助主宰下路
  9. Java实现回形数,只利用数组、循环和if-else语句
  10. 需求更大的--if条件判断
  11. 安卓 原生okhttp使用get与post获取网络数据
  12. java变量传递给asp,我应该如何将多个参数传递给ASP.Net Web API GET?
  13. zabbix3.4配置钉钉机器人报警
  14. 快速图像增强的简便大法来了,英伟达开源新库代号“DALI”| CVPR 18
  15. HTML的语义化和一些简单优化
  16. 大三寒假--算法复习
  17. selenium2.0处理case实例(二)
  18. cygwin下载可以用的服务器
  19. 主板检测卡c5_电脑主板检测卡代码大全
  20. linux无线网卡信道,linux如何列出网卡支持的wifi信道?

热门文章

  1. 计算机论文图表,核心方法:自动生成毕业论文标题目录和图表目录的方法
  2. notepad++ 配置自己的notepad++的界面风格
  3. 2021秋季《数据结构》_EOJ 1091.六度空间
  4. 13 Django之中间件
  5. UIlabel调整行间距
  6. BLAS 1级例程(向量-向量操作)
  7. 从游戏服务端角度分析移动同步(状态同步)
  8. Linux面试指令---nl指令
  9. mysql5.7.10 二进制包_mysql 32 位安装教程mysql5.7 二进制包安装
  10. 湖南独立学院计算机排名2015,2015年湖南独立学院高校名单