教你学Python24带你开启机器学习
2023/4/27 来源:不详北京中科白癜风医学研究院 http://www.csjkc.com/
先简单带大家看一些学习机器学习需要哪些东西,大概有什么用,做什么的,具体的内容后面我会一一具体的来和大家说,
所谓“机器学习”就是利用计算机将纷繁复杂的数据处理成有用的信息,这样就可以发掘出数据带来的意义以及隐藏在数据背后的规律。现如今,“机器学习”和“大数据”可以说是IT行业中最热点的两个词汇,而无论是“机器学习”还是“大数据”最终要解决的问题本质上是一样的,用最为直白的话来说就是用现有的数据去预测将来的状况。
按照问题的“输入”和“输出”,我们可以将用计算机解决的问题分为四大类:
输入的信息是精确的,要求输出最优解。
输入的信息是精确的,无法找到最优解。
输入的信息是模糊的,要求输出最优解。
输入的信息是模糊的,无法找到最优解。
在上面的四大类问题中,第1类问题是计算机最擅长解决的,这类问题其实就是“数值计算”和“逻辑推理”方面的问题,而传统意义上的人工智能也就是利用逻辑推理来解决问题(如早期的“人机对弈”)。一直以来,我们都习惯于将计算机称为“电脑”,而基于“冯诺依曼”体系结构的“电脑”实际上只是实现了“人脑”理性思维这部分的功能,而且在这一点上“电脑”通常是优于“人脑”的,而“人脑”在处理输入模糊信息时表现出来的强大的处理能力,在今天看来也不是“电脑”可以完全企及的。所以我们研究人工智能也好,研究机器学习也好,是希望输入模糊信息时,计算机能够给出满意的甚至是最优的答案。
至此,我们可以给“机器学习”下一个定义:机器学习是一门专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身性能的学科。机器学习目前已经广泛的应用到生产生活的各个领域,以下列举了一些经典的场景:
搜索引擎:根据搜索和使用习惯,优化下一次搜索的结果。
电商网站:自动推荐你可能感兴趣的商品。
贷款申请:通过你最近的金融活动信息进行综合评定。
图像识别:自动识别图片中有没有不和谐的内容。
机器学习可以分为监督学习和非监督学习。监督学习是从给定的训练数据集中学习得到一个函数,当新的数据到来时,可以根据这个函数预测结果,监督学习的训练集包括输入和输出,也可以说是特征和目标。监督学习的目标是由人来标注的,而非监督学习的数据没有类别信息,训练集也没有人为标注结果,通过无监督学习可以减少数据特征的维度,以便我们可以使用二维或三维图形更加直观地展示数据信息。
实现机器学习的一般步骤:
数据收集
数据准备
数据分析
训练算法
测试算法
应用算法
为什么机器学习,使用Python,不是java,go,c++?
Python脚本语言,学习成本低有丰富的数学库可以直接使用
人工智能(ArtificialIntelligence,AI)时代,简单易学,同时拥有着丰富模块库的Python成为时代的宠儿,活跃在人工智能的各个领域。我们可以借助Python库执行基本的机器学习任务。常用的Python科学库如下:
矩阵函数操作库(Numpy)
科学计算包(Scipy)
Python绘图库(Matplotlib)
数据分析包(Pandas)
机器学习函数库(Scikit-learn)
统计建模工具包(StatsModels)
深度学习框架(TensorFlow)
下面我们对这些常用算法库,进行讲解和举例
TensorFlow是一个采用数据流图(dataflowgraphs),用于数值计算的开源软件库。节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组,即张量(tensor)。它灵活的架构让你可以在多种平台上展开计算,例如台式计算机中的一个或多个CPU(或GPU),服务器,移动设备等等。TensorFlow最初由Google大脑小组(隶属于Google机器智能研究机构)的研究员和工程师们开发出来,用于机器学习和深度神经网络方面的研究,但这个系统的通用性使其也可广泛用于其他计算领域
一句话总结:一个中队长,将我们用其他类库写的函数,交给tensorflow来管理,运行tensorflow来有计划的执行模型。
statsmodels是一个Python模块,它提供对许多不同统计模型估计的类和函数,并且可以进行统计测试和统计数据的探索。
Numpy是Python的一种开源的数值计算扩展,一个用python实现的科学计算包。它提供了许多高级的数值编程工具,如:矩阵数据类型、矢量处理,以及精密的运算库。专为进行严格的数字处理而产生
约定俗成的导入惯例:
importnumpyasnp
1、python中有集合(list),但是没有数组的概念,Numpy可以帮助我们创建数组
核心代码:
代码通过np.array定义了一个数组[2,0,1,5,8,3],其中min计算最小值,max计算最大值,shape表示数组的形状,因为是一维数组,故6L(6个数字)。
最重要的一个知识点是数组的切片操作,因为在数据分析过程中,通常会对数据集进行80%-20%或70%-30%的训练集和测试集划分,通常采用的方法就是切片。
a[:-2]表示从头开始获取,-2表示后面两个值不取,结果:[]
a[-2:]表示后往前数两个数字,获取数字至结尾,即获取最后两个值[83]
a[:1]表示从头开始获取,获取1个数字,即[2]
2、定义二维数组,二维数组我们也可以理解为x乘y的矩阵
需要注意:
(1)获取二维数组中的某行,如第2行数据[4,5,6,7],采用方法是:c[1][:];
(2)获取二维数组中的某列,如第2列数据[[3][6][9]],c[:,np.newaxis,2]。因为通常在数据可视化中采用获取某列数据作为x或y坐标,同时多维数据也可以采用PCA降低成两维数据,再进行显示。
Pandas是面板数据(PanelData)的简写。它是Python最强大的数据分析和探索工具,因金融数据分析工具而开发,支持类似SQL的数据增删改查,支持时间序列分析,灵活处理缺失数据。
约定俗成的导入惯例:
frompandasimportSeries,DataFrame
importpandasaspd
一维数组Series具备list和dict的特性,可以直接Series[列标签索引或位置索引]访问
二维数组和excel格式相近,所有进行数据分析,数据挖掘的工具最基础的结果:行和列,行表示样本,列表示的是属性
用pandas多层索引,实现excel表格,从此不需要offers
使用pandas进行数据清洗数据分析数据挖掘
有数据情况下:
数据预处理
数据清洗(空数据,异常值)
数据集成(多个数据合并到一起,级联)数据可能存放在多个表中
数据转化
数据规约(属性减少(不重要的属性删除),数据减少去重操作)
sql的功能,增删改查,聚合查询
用pandas进行文件的读取操作csv类型文件呢,文本文件,excel打开,格式化的文件,所以excel可以直接读取成表格
Matplotlib是一个Python的图形框架,类似于MATLAB和R语言。它是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地进行制图。而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中
约定俗成的导入惯例:
importmatplotlib.pyplotasplt
Scipy是一个用于数学、科学、工程领域的常用软件包,可以处理插值、积分、优化、图像处理、常微分方程数值解的求解、信号处理等问题。它用于有效计算Numpy矩阵,使Numpy和Scipy协同工作,高效解决问题。
约定俗成的导入惯例:
importmatplotlib.pyplotasplt
Scikit-learn是专门面向机器学习的Python开源框架,它实现了各种成熟的算法,并且易于安装与使用。
接下来以鸢尾花数据集为例,学习如何在Scikit-learn中调用数据集。鸢尾花数据集采集的是鸢尾花的测量数据及其所属类别,测量数据包括萼片长度、萼片宽度、花瓣长度、花瓣宽度;类别有3类:IrisSetosa,IrisVersicolour,IrisVirginica,该数据集一般用于监督学习中的多分类问题。
2、数据集划分
在Python机器学习概论中曾经提过,在模型训练时,一般会把数据集划分成训练集、验证集和测试集,其中训练集用来估计模型,验证集用来确定网络结构或控制模型复杂程度的参数,而测试集则用于检验最终选择的最优模型的性能优劣。在Scikit-learn中一般采用一下几种方式进行数据划分:
使用train_test_split()对数据集进行划分
Scikit-learn中使用sklearn.model_selection模块对数据集进行划分,而该模块中的train_test_split()时交叉验证中常用的函数,功能是从样本中随机按比例选取train_data和test_data,详情如下:
train_data所要划分的样本特征集
train_target所要划分的样本结果
test_size样本占比,若为整数则为样本的数量
random_state随机数种子,同时也是该组随机数的编号,在需要重复实验时,能生成相同的随机数。为0、为空或不同时,生成不同的随机数;当种子相同时即使实例不同也会产生相同的随机数
X_train生成的训练集的特征
X_test生成的测试集的特征
Y_train生成的训练集的标签
Y_test生成的测试集的特征
通过一个简单的实例来演示如何使用这个函数将数据集快速打乱,形成训练集和数据集。
喜欢点下