栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

机器学习识别手写数字 - 谁是好人,谁是坏人?【1】

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

机器学习识别手写数字 - 谁是好人,谁是坏人?【1】

本项目使用到svm算法,本质上,不仅将一组问题和对应的答案同时提供给 svm 算法,还得提供很多组问题和对应的答案,让该算法学习“什么样的问题究竟对应什么样的答案”,并且把答案进行最大化二分,即:是 or 否,对 or 错。可以理解为网上跟人对线时的二极管思想,非黑即白;又或者小孩子看电影时最喜欢问的问题:“谁是坏人?谁是好人?”

不知道大家是否了解一个 python 常用的处理工具——jupyter notebook,就我所知,我女朋友所在的金融行业广泛应用,我觉得python的代码岗位应该用的更多(不过稳定性和实时性欠佳,有更好的平替工具),本案例就是用这个工具作为python的处理工具,该工具可以图形化显示矩阵和函数图线。

这个小项目就是基于 anaconda 的库,利用 jupyter 这个处理平台来做的,课程内容不多,大概学一上午就学完了,但是还远不能达到拿出去吹比的程度,后面还有一些硬骨头要啃,但是可以给简历多一条内容。

简历项目经历喜加一,谁不喜欢呢?

首先安装Anaconda。什么是Anaconda?看看百科——

anaconda:(开源的Python发行版本)

Anaconda 包括 Conda、Python 以及一大堆安装好的工具包,比如:numpy、pandas 等180多个科学包及其依赖项。

相信很多小伙伴是久闻 numpy 和 pandas 的大名的,这两个包我们在这个项目中都要用到。

#  导入处理矩阵和数组的包
#  import proccessing matrix model
import numpy as np

· numpy——貌似是 “Numerical” 和 “Python” 的合体,顾名思义,是“python 中用来算 number”的包,一般我们用于处理数组和矩阵(这俩可以说是一回事儿);

· pandas——Pandas的名称来自于面板数据(panel data)和python数据分析(data analysis),跟熊猫没有一毛钱关系。它是基于 numpy 的一种工具,该工具是为解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法。可以理解为在处理数字矩阵的基础上,进行更进一步逻辑处理的包。

听起来很复杂,其实还好,你就把他想象成java的库就好了,里面有很多函数,还有很多比函数更高级的包,实现远比函数更为复杂的功能,比如我们今天会用到的一个名为“sklearn”的包,这个包从名字就能看出来,他是跟“学习”有关的,很明显, 并不是让人学习,

那就只能是让机器学习了——机器学习。

正片开始。

#  import the training sets
#  导入训练集
from sklearn import datasets

#  svm - Support Vector Machine
#  导入‘支持向量机’,本质上是个‘二分类器’
from sklearn import svm

· sklearn——Scikit-learn(旧称scikits.learn,也称为sklearn)是 “Science kit”(科学组件)和 “Learn”(学习)的合体,是针对Python 编程语言的免费软件机器学习库。它具有各种分类,回归和聚类算法,包括支持向量机,随机森林,梯度提升,k均值和DBSCAN,并且旨在与Python数值科学库NumPy和SciPy联合使用。

· datasets——sklearn包中的数据集。该数据集包含了很多二维矩阵的信息,以及类似 xml 文件中的 title 信息。矩阵代表了一块画布,矩阵的长宽代表了画布的长款像素点数,矩阵中每一个数值代表了他所在方格的黑度,最黑是255,最白是0,后面的例子中可以看到具体呈现。

· svm——sklearn包中的算法,主要用于小样本下的二分类、多分类以及回归分析,是一种有监督学习的算法。基本思想是寻找一个超平面来对样本进行分割,把样本中的正例和反例用超平面分开,其原则是使正例和反例之间的间隔最大。

相关文章:

机器学习算法与Python实践之(二)支持向量机(SVM)初级_zouxy09的专栏-CSDN博客_支持向量机python

用人话说就是,将问题和对应的答案同时提供给 svm 算法,还得提供很多组问题和对应的答案,让该算法学习“什么样的问题究竟对应什么样的答案”,并且把答案进行最大化二分,即:是 or 否,对 or 错。可以理解为网上跟人对线时的二极管思想,非黑即白;又或者小孩子看电影时最喜欢问的问题:“谁是坏人?谁是好人?”

当算法知道了谁是坏人、谁是好人的时候,我们这时候再给它提一个新的问题,比如把蜘蛛侠的脸给算法看,问他:“这个是不是好人?”,算法应该很干脆的回复:“是好人。”那么模型就算是初步训练成功了。

有的同学可能会问:万一我把毒液的脸给算法看呢?问这种问的同学出门左转,去找章鱼博士看看脑子。像漫威这种黑白反复洗,正邪不分家的设定,确实给人工智能的二分算法们添了不少堵,后面我们就要引入新的算法,现在仅仅是个开端,让大家体验一下。

我们继续。

#  导入可视化工具
#  import visualization tools
import matplotlib.pyplot as plt

· matplotlib——是一个 Python 的 2D绘图库,开发者可以仅需要几行代码,便可以生成绘图,直方图,功率谱,条形图,错误图,散点图等。

· pyplot——Pyplot 是 Matplotlib 的子库,提供了和 MATLAB 类似的绘图 API。Pyplot 是常用的绘图模块,能很方便让用户绘制 2D 图表。Pyplot 包含一系列绘图函数的相关函数,每个函数会对当前的图像进行一些修改,例如:给图像加上标记,生新的图像,在图像中产生新的绘图区域等等。使用的时候,我们可以使用 import 导入 pyplot 库,并设置一个别名 plt(代码中的“as” 是设置别名的操作)。

相关文章:

Matplotlib Pyplot | 菜鸟教程 (runoob.com)

同学会问,我就不把这个库设置为“plt”,我想让他叫别的名字可不可以呢?可以,但是是会累死的,因为大家的库名都叫“plt”……

我的意思是,别人读你的代码会累死。

#  导入图片并处理
#  import loading pic and proccess
from PIL import Image

· PIL——Python Imaging Library,是 Python 平台一个功能非常强大而且简单易用的图像处理库。

· image——Image类是PIL中的核心类,你有很多种方式来对它进行初始化,比如从文件中加载一张图像,处理其他形式的图像,或者是从头创造一张图像等。Image模块操作的基本方法都包含于此模块内。如open、save、conver、show…等方法。

相关文章:

Python图像库PIL的类Image及其方法介绍_leemboy的博客-CSDN博客_pil

至此,我们这个小项目的主要库就都导入完毕了,接下来要做的,就是“出题”和“解题”了,即:如何让这些库(包)生成题目以及对应的答案?如何让机器学习这些答案和问题之间的对应关系?在遇到新问题时如何让机器自己给出答案?

OK,马上回来。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/753648.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号