版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
人工智能通识(理工科)北京科技大学主要内容机器学习概述机器学习的分类机器学习的训练过程机器学习的模型评测机器学习案例7.1机器学习概述
通俗来说,机器学习就是从数据中发现规律或模式,并将其用于预测或决策任务。米切尔(TomMitchell)给出了机器学习的形式化定义:对于任务T(Task)和性能度量P(Performance),如果一个计算机程序在任务T上的性能P随着经验E(Experience)的提高而改善,则称该程序从经验E中学习。MessureImproveProcess机器学习概述
案例一:猫狗图像分类。假设所有图像中仅有一只猫或一只狗:任务T:识别出图像中是猫还是狗性能P:识别的准确率经验E:数据。一些已经收集的多样化的猫狗图像并给出分类标记(文件夹名隐含标签,将猫和狗图像分成两个文件夹保存)。MessureImproveProcess机器学习概述
MessureImproveProcess机器学习的发展历程机器学习(MachineLearning)的发展总体可以分为三个阶段:早期理论奠基、统计学习时代、深度学习时代。早期理论奠基(1940s–1960s):探索机器如何从数据中学习规律1943年:McCulloch&Pitts提出人工神经元模型。1957年:Rosenblatt发明感知机(Perceptron),成为首个可训练的神经网络模型。局限:算力不足,理论未成熟,感知机无法解决非线性问题。线性可分线性不可分统计学习时代(1970s–2000s):基于概率与统计的模型成为主流,依赖特征工程1980s:决策树(ID3算法)等学习方法出现。1990s:支持向量机(SVM)在分类任务中表现优异。1990s~2000s:集成学习(如AdaBoost、随机森林)提升模型鲁棒性。深度学习革命(2010s–至今):大数据、GPU算力提升、算法突破1986年:辛顿团队验证并推广了反向传播算法,证明多层感知机可以解决非线性问题。2012年:AlexNet在ImageNet竞赛中夺冠(CNN的里程碑)。2014年:生成对抗网络(GAN)提出,推动生成式AI技术的发展(生成器+判别器)。2016年:强化学习崭露头角,AlphaGo击败人类围棋冠军。2017年,Transformer架构出现,奠定大语言模型的基础。当前趋势:大语言模型推动通用人工智能(AGI)探索,多模态学习(文本、图像、视频联合建模)机器学习的分类当前,机器学习是人工智能最重要、最具有热度的研究分支。机器学习的研究范畴很广,从发展过程来看,既包含以统计学习为基础的传统算法(如线性回归、决策树、支持向量机、聚类、主成分分析等),也涵盖以深度学习和强化学习为核心的现代方法(如卷积神经网络、深度强化学习)。学习范式:有监督学习:有标签无监督学习:无标签强化学习:环境交互获取奖励信号人工智能机器学习深度学习强化学习深度强化学习线性回归决策树支持向量机聚类LLM7.2机器学习算法概述线性回归决策树支持向量机聚类K近邻人工神经网络深度学习强化学习(1)线性回归假设因变量和自变量之间是线性关系,其目标是找到最优的系数和截距,使得线性模型的预测值和实际值之间的差值最小。例:若已有关于收入和上学年限的训练数据集,使用一元线性回归建模收入与上学年限之间的线性关系。使用一元线性回归,训练集中的每个样本数据对应着二维空间中的一个点。线性回归的目的是在众多可能的直线中找到一条最优直线:使得这条直线到所有数据点的垂直距离(即残差)的平方和最小==》最小二乘法。y=wx+b
(2)决策树决策树是一种常用的基于概率的分类方法,在已知各种情况发生概率的基础上,通过构成决策树来求进行分类决策。例:要判断是否去打篮球,可以根据“天气”
“温度”
“湿度”
“刮风”几个条件判断,最后得到结果:去、不去。算法关键:如何选择最优特征和分割点(用最少的分裂、最大化数据纯度)日期天气温度(华氏度)湿度起风打球否1晴8585FNo2晴8090TNo3阴8378FYes4雨7096FYes5雨6880FYes6雨6570TNo7阴6465TYes8晴7295FNo9晴6970FYes10雨7580FYes11晴7570TYes12阴7290TYes13阴8175FYes14雨7180TNo天气温度晴打雨刮风打<=75不>75打否不是(2)决策树决策树的构建有许多经典的算法:ID3、C4.5、CART等。信息熵:信息越混乱,信息熵越大信息增益:按属性分支后,信息熵下降最多的(3)支持向量机(SupportVectorMachines)2000年代至2010年代初,SVM在许多任务(小样本、高维数据分类)上表现优异,被认为是传统机器学习时代的“标杆算法”之一。支持向量机是一种对数据进行二元分类的广义线性分类器,其基本想法是求解能够正确划分训练数据集并且几何间隔最大的分离超平面。(3)支持向量机寻找一个最优超平面(在特征空间中的决策边界)最大化不同类别数据之间的间隔,如果以后有了新的数据,这个超平面也能做出很好的分类(泛化能力强)(3)支持向量机可解释性:决策边界计算得到,能够可视化泛化能力强:通过最大化分类间隔,提升泛化能力强大的非线性处理能力:通过核函数实现特征到高维空间的非线性映射核函数无需显式计算高维映射,计算效率高常见的核函数有多项式核函数、高斯核函数等。(4)聚类(Clustering)聚类是传统机器学习领域实现无监督分类的经典方法按照一定的方式度量样本之间的相似度,将一个数据集分割成不同的簇,使得同一个簇内的数据对象的相似性尽可能大,不在同一个簇中的数据对象的差异性也尽可能大。通过这样的划分,每个簇对应于一个潜在的类别,实现分类。应用举例:电商平台根据用户的购买行为、浏览历史将客户分为不同群体(如高消费群体、折扣敏感群体),制定差异化营销策略。(4)聚类(Clustering)类别边界聚类中心(5)K近邻KNN是有监督学习算法找到当前样本的K个最近邻样本,然后通过投票实现分类或通过平均实现回归使用距离来衡量各个样本之间的相似性(6)人工神经网络—神经元人脑神经元是大脑中互相连接的、参与化学和电信号处理和传输的神经细胞。多个信号到达树突后整合到细胞体累加起来,当累积信号量超过一定的阈值时,神经元被激活、产生输出信号,并通过轴突传送出去。人脑中有数百亿个神经元,这些神经元之间互相连接,以动态的方式相互通信,使人体能够正常运作。(6)人工神经网络—神经元人工神经元由人脑神经元进行简化、抽象得到,神经元接收n个其他神经元传递过来的输入信号;每个输入信号有对应的连接权重权值,表示相互连接的两个人工神经元间相互作用的强弱;神经元接收到的总输入值与神经元的阈值θ进行比较,然后通过激活函数f处理以产生神经元的输出。(6)人工神经网络—神经元θ为神经元的阈值,
时,利用激活函数产生输出。
…
偏置b
权重………激活函数
(6)人工神经网络人工神经网络:将许多个人工神经元按照一定的层次结构连接起来
每个神经元都有自己的权重和偏置参数全连接神经网络(多层感知机)输入层隐藏层输出层特点:每个神经元都与前一层和后一层的所有神经元相连(6)人工神经网络优点:结构简单、理论上可以逼近任意连续函数,拟合复杂非线性关系缺点:参数多,计算量大、训练耗时久;可解释性差(6)人工神经网络传统神经网络方法的特点:对于原始的输入信号只经过较少层次的线性或者非线性处理来达到信号与信息处理的目的优点:结构简单、易于学习,在数学上有比较完善的算法缺点:对于复杂的信号,浅层结构模型的表达能力具有一定的局限性,并不能充分地学习到信号中复杂的结构信息。(6)人工神经网络—深度神经网络深度神经网络:通过多个隐藏层(通常≥2层)对输入数据进行层级化特征提取,从而自动学习复杂的非线性关系。模型层数结构错误率AlexNet(2012)8层16.4%VGGNet(2014)19层7.3%GoogLeNet(2014)22层6.7%ResNet(2015)152层3.57%ImageNet大规模视觉识别挑战赛层数增加模块创新结构优化(7)深度学习复杂神经网络模型(8)强化学习模拟人类的学习过程7.3机器学习的训练过程机器学习过程,特别是有监督学习,可以通过误差损失来观察模型训练情况,即模型在训练数据上的表现。为了保证模型更好的训练效果和泛化能力,需要将数据集划分为训练集、验证集和测试集。机器学习过程代表性的学习算法是梯度下降法和反向传播算法。机器学习经常要面对的任务有两大类:分类和回归。分类问题的输出为有限个离散值。回归问题的输出为无限个连续值。对于分类和回归损失函数,深度学习中经常使用交叉熵损失和均方误差损失来进行描述。数据算法评测机器学习的训练过程-损失函数1)均方误差损失:当模型的输出有M个类别,设这M个输出为,分别是每个类别的预测输出概率。例如,当识别的字符是0~9的10个字符的其中一个字符时,如果=,则在输出概率中,字符“1”对应的概率0.8为最大值,输出的分类结果为字符“1”,即识别出来的字符为“1”。这里,假设对于字符分类任务。对于识别字符0~9的其中一个字符问题,如果真实的字符为“1”,则均方误差损失(MSE):如果真实标签为类别p,,则均方误差损失为:可以看出,预测类别p的均方误差损失,不仅与类别p的预测概率有关,还有其他类别的预测概率有关。均方误差损失是一种主要用于回归任务的损失函数,具有非负、放大误差特性等。
机器学习的训练过程-损失函数2)交叉熵损失(CE):如果真实标签为类别p,,则交叉熵损失为:可以看出,预测类别p的交叉熵损失,只与类别p的预测概率有关,与其他类别的预测概率无关。大多数情况下,深度学习选择交叉熵作为分类损失函数。深度学习的训练过程就是多次反复输入、特征提取、计算损失和调整参数的过程,目标是降低损失函数的值,以获得高精度或误差较小的模型。为了保证机器学习模型更好的训练效果和泛化能力,通常需要将数据集划分为训练集、验证集和测试集训练集是模型学习的主要数据源,模型通过遍历训练集中的数据,不断调整内部参数,以最小化损失函数,从而学习到数据的潜在规律和特征验证集主要用于在训练过程中评估模型的性能,以便进行模型选择、参数调整等测试集用于在模型训练完成后,评估模型的最终性能机器学习的训练过程-数据集划分1)留出法留出法直接将数据集划分为两个互斥的集合,其中一个作为训练集,一个作为测试集。留出法对训练集和测试集进行比例分配时,如果训练集过大会导致模型更倾向于训练集,评估结果不够准确;如果测试集过大则评估的结果差异较大,降低了评估的真实性,所以通常的做法是将2/3~4/5的样本用于训练,剩余样本用于测试。留出法仅适用于数据集样本量较大的情况。当训练样本量较小时,机器学习算法缺少充分的训练样本,可能导致训练不充分,模型欠拟合。机器学习的训练过程-数据集划分2)K折交叉验证法K折交叉验证首先将数据集随机近似等分为不相交的K份,称为K折;其后,令其中的K-1份作为训练集,剩余的一份作为测试集。与留出法相似,为了减小因为样本划分不同而引入的差别,K折交叉验证通常要随机重复K次,获得K组训练集和测试集,进行K次训练和测试,最终计算K个测试结果的平均。实际应用中一般采取10次10折交叉验证。机器学习的训练过程-数据集划分损失函数提供了预测值与实际值之间的差异,但是这个差异如何指导模型参数的更新呢?训练的目标是找到最小的误差值,从而得到与实际值误差最小的预测值。1)梯度下降的原理梯度下降的基本思想是:沿着损失函数关于模型参数的梯度的反方向移动,可找到损失函数的最小值。梯度是一个向量,指向损失函数增长最快的方向。对于多元损失函数来说,梯度的每个分量是损失函数对每个参数的偏导数。当损失函数是一元函数时,可认为梯度就是斜率,即函数的导数。机器学习的训练过程-梯度下降梯度下降的示例机器学习的训练过程-梯度下降
机器学习的训练过程-梯度下降
机器学习的训练过程-梯度下降算法工作过程:梯度更新代码:机器学习的训练过程-梯度下降我们来看一个具体的通过梯度下降来训练线性模型的案例。可以看出:从一开始误差很大的绿色拟合线,不断在梯度下降的过程优化参数并缩小误差损失,红色的拟合线表现了缩小误差的运动过程前馈神经网络的参数优化过程主要分为两个阶段:正向计算和反向传播。正向计算指的是输入数据从输入层依次经过隐藏层的各层神经元进行逐层计算,通过输出层进行输出,实现神经网络的预测。反向传播指的是根据神经网络的预测值以及实际值(标签)计算损失函数值,将损失函数值对于神经网络的连接权重(参数)的梯度沿着正向计算路径进行反向传递,并对各个神经元之间的连接权重按照梯度进行调整和优化。经过多次正向计算预测值和反向传播误差值,优化神经网络的连接权重(参数),最终实现误差尽可能最小,拟合复杂的输入数据和输出数据之间的映射关系。机器学习的训练过程-反向传播算法1)
正向计算下面以一个含两个输入、三个神经元组成的隐藏层和两个输出的简单前馈神经网络为例,详细说明BP反向传播算法的工作过程。对于隐藏层的神经元h1,输入来自于x1和x2,输出给O1和O2。输入和输出分别如下列公式所示。
神经元h1的输入输出示意,如图所示。机器学习的训练过程-反向传播算法隐藏层的神经元h2,输入同样来自于X1和X2,输出给O1和O2。输入和输出分别如下:隐藏层的神经元h3,输入同样来自于X1和X2,输出给O1和O2。输入和输出分别如下:输出层神经元O1,输入来自于h1、h2和h3,输出即为模型的一个输出。输入和输出分别如下:
神经元O1的输入输出,如图所示。1)
正向计算机器学习的训练过程-反向传播算法输出层神经元O2,输入同样来自于h1、h2和h3,输出即为模型的另一个输出。输入和输出分别为:为计算简单,损失函数采用均方误差损失MSE,
,其中,yi为真实输出(标签数据),Oi为神经网络的预测输出。设输入X1和X2分别为0.5和0.3,相应的真实输出为0.23和-0.07。当各个神经元之间的连接权重确定之后,即可进行正向计算。一般来说,神经元之间的连接权重可初始化为(0,1)之间的小数,大多使用随机函数生成。1)
正向计算机器学习的训练过程-反向传播算法1)
正向计算隐藏层神经元和输出层神经元的输出分别如下:则均方误差损失MSE计算如下,真实输出为0.23和-0.07,预测输出为0.50和0.58。机器学习的训练过程-反向传播算法2)反向传播反向传播指的是将损失函数所表达的误差按原来正向计算的路径进行反向传递。反向传播是根据微积分中的链式法则,沿着从输出层经过隐藏层到输入层的反向顺序,依次计算损失函数对权重参数的梯度,并据此进行调整。计算MSE损失函数对w7的梯度,计算公式如下:
其中:
误差损失在权重w8~w12上的计算,与
的计算类似。机器学习的训练过程-反向传播算法2)反向传播对于输入层与隐藏层之间的权重,以权重w1为例,计算损失函数对w1的梯度,公式如下:其中,误差损失在权重w2~w6上的计算,与
的计算类似。
前馈神经网络的反向传播2)反向传播根据上述公式,分别计算误差损失在各个权重上的梯度,如下:
机器学习的训练过程-反向传播算法2)反向传播
机器学习的训练过程-反向传播算法2)反向传播根据MSE损失函数值对各个连接权重的梯度,对权重进行调整,这里,
是新的权重,wi是原有权重,
是MSE误差在神经元连接权重上的梯度,
是学习率,控制对梯度的学习程度。设=1,调整后的权重,如图所示再次进行一次正向计算,误差损失MSE=0.22,与调整前的误差损失0.25比较,误差损失得到了降低,说明模型通过学习提高了预测或拟合精度。
机器学习的训练过程-反向传播算法7.4机器学习的模型评测当模型训练完成之后,可以通过验证或测试数据来评估模型的表现。对于分类问题,可以通过混淆矩阵计算查准率、查全率等指标,而对于回归问题,则可以通过均方误差(MSE)、均方根误差(RMSE)等指标来评估。欠拟合和过拟合目标:模型具有良好的泛化能力训练误差:在训练集上的误差泛化误差:在“未来”样本上的误差,将测试集上的测试误差近似看作泛化误差训练数据未知测试数据训练应用欠拟合和过拟合欠拟合:当模型在训练数据上误差一直较大,无法找到合适的模型表达来描述数据集,称为模型欠拟合。欠拟合的可能原因是训练不充分、训练数据太少、训练数据中噪声过多、超参数设置不合理等。过拟合:当模型在训练数据上获得了较小的误差,而在测试集的误差较大,称之为模型过拟合。原因:可能是特征维度太多、模型过于复杂、参数过多、训练数据太少、训练数据中噪声过多等。欠拟合和过拟合欠拟合和过拟合当训练集损失持续下降,但验证集损失开始上升时,应提前停止训练(EarlyStopping)分类模型的评估二分类模型的混淆矩阵二分类问题中通常选择更关注的类作为正例:Positiveclass;另一类称为反例:Negativeclass预测的正确与否用True和False表示:True代表预测正确,False代表预测错误二分类问题中的样本根据其真实类别和学习的预测类别,被划分为4个组合:真正例(TP,TruePositive),假正例(FP),真反例(TN),假反例(FN)预测为正样本预测为负样本实际为正样本TPFN实际为负样本FPTN分类模型的评估【例】一个火灾智能检测系统,模型的实际检测结果如下。方框里面是模型给出检测结果为火焰的情况,其中,8个真实火焰被检测出来火焰,2个灯泡的照明被错误地检测出来为火焰;方框外面是模型没有给出检测结果的情况,其中,3个真实的火焰,1个灯泡的照明,火灾检测模型没有给出输出结果。分类模型的评估对于火灾智能检测系统,火焰是正样本,灯泡照明是负样本。方框里TP=8(8个火焰被检测出来火焰,即8个正样本被识别为8个正样本)FP=2(2个灯泡照明被误检为火焰,即2个负样本被识别为2个正样本)方框外FN=3(3个火焰没有被识别出来火焰,即3个正样本被识别为3个负样本)TN=1(1个灯泡照明没有被识别出来,即1个负样本被识别为1个负样本)分类模型的评估预测值实际值101TPFN0FPTN预测值实际值10183021(1)查准率(Precision,精确率):预测为正类的全部样本中,预测正确的正类样本比例。Precision=8/(8+2)=80%(2)
查全率(Recall,召回率):实际为正类样本,预测正确的正类样本比例。Recall=8/(8+3)=72.7%分类模型的评估预测值实际值101TPFN0FPTN预测值实际值10183021(3)准确率(Accuacy)指的是在全部样本中,预测正确的正类样本和预测正确的负类样本的比例Accuracy=(8+1)/14=64.3%(4)错误率(ErrorRate)指的是在全部样本中,预测错误的正类样本和预测错误的负类样本的比例。分类模型的评估如果希望检索内容中绝大部分是真正想要的检索内容Precision查准率越高越好宁可漏掉,不可错杀例如:垃圾邮件识别,搜索引擎如果希望与检索内容相关的信息尽可能多的检索出来Recall查全率越高越好宁可错杀,不可漏掉例如:医疗诊断,灾难预测分类模型的评估(5)F1值定义:F1系数是查准率P与查全率R的调和平均值更接近二者的最小值最大值是1,最小值是0,值越大意味着模型越好
7.5机器学习案例-基于Scikit-learn库Scikit-learn库基于Numpy、Scipy、Pandas、Matplotlib、Seaborn等开发,是主流的开源机器学习库,封装了大量经典及最新的机器学习模型,并提供案例和数据。Scikit-learn库高度集成、并做了易用性的封装,是简单且高效的数据挖掘、数据分析工具。Scikit-learn库作为第三方库需下载安装后使用pipinstallscikit-learnimportsklearn机器学习案例-基于Scikit-learn库Scikit-learn库包含六个任务模块和一个数据导入模块。六个任务模块包括分类(Classification)、回归(Regression)、聚类(Clustering)、降维(DimensionalityReduction)、模型选择(ModelSelection)和数据预处理(Preprocessing)。机器学习案例-基于Scikit-learn库数据预处理sklearn.preprocessing子模块下包含很多数据预处理方法,下面介绍常用的归一化方法。1)归一化处理归一化是一种重要的数据预处理方法,主要目的是将数据缩放到相同范围来消除量纲差异,可提高模型收敛速度和模型训练精度。数据预处理子模块提供了两种重要的归一化方法:标准归一化StandardScaler和线性归一化MinMaxScaler。标准归一化StandardScaler通过减去均值并除以标准差来转换数据,使得处理后的数据符合标准正态分布,即均值为0,标准差为1。线性归一化MinMaxScaler通过将数据通过线性变换缩放到指定的最小值和最大值之间(通常是0和1)来转换数据。机器学习案例-基于Scikit-learn库基于Scikit-learn库编写程序对5门课程成绩数据[90,75,82,56,95]进行标准归一化处理。程序代码如下:#导入预处理子模块fromsklearnimportpreprocessingimportnumpyasnp#构建一个只有1列的数组data=np.array([90,75,82,56,95]).reshape(-1,1)#创建一个StandardScaler标准归一化实例scalar=preprocessing.StandardScaler()#使用fit方法计算输入数据的均值和标准差encoder=scalar.fit(data)#使用transform方法将输入数据标准化standData=encoder.transform(data)print(standData)机器学习案例-基于Scikit-learn库模型选择sklearn.model_selection子模块提供了对数据集进行划分的方法,包括留出法和K折交叉验证法。机器学习案例-基于Scikit-learn库1)留出法的实现模型选择sklearn.model_selection子模块中的train_test_split()函数提供了留出法的具体实现,函数原型如下:sklearn.model_selection.train_test_split(*arrays,test_size=None,train_size=None,random_state=None,
shuffle=True,
stratify=None)train_test_split()函数的常用参数,如表所示。机器学习案例-基于Scikit-learn库#从sklearn.datasets导入加州房价获取函数fromsklearn.datasetsimportfetch_california_housing#从sklearn.model_selection导入数据留出法的数据划分方法fromsklearn.model_selectionimporttrain_test_split#导入numpy并重命名为npimportnumpyasnp#读取房价数据将其存储到变量californiaHousePricecaliforniaHousePrice=fetch_california_housing()x_californiaHousePrice=californiaHousePrice.datay_californiaHousePrice=californiaHousePrice.target#随机采样25%数据构建测试样本,其余为训练样本x_train,x_test,y_train,y_test=\train_test_split(x_californiaHousePrice,y_californiaHousePrice,\random_state=11,test_size=0.25)print(x_train.shape,y_train.shape)print(x_test.shape,y_test.shape)例:划分加州房价数据集。加州房价数据集总样本数20640,当指定测试集比例为25%,测试集样本数为5160,程序输出如下:(15480,8)(15480,)(5160,8)(5160,)机器学习案例-基于Scikit-learn库2)K折交叉验证的实现模型选择sklearn.model_selection中的KFold类可以将数据集分为互不包含的K份,每次循环取其中的一份作为测试集,其他数据为训练集。KFold类的参数如下。classsklearn.model_selection.KFold(n_splits=5,*,shuffle=False,random_state=None)常用参数如下创建KFold对象后,调用split()方法可以获取每一折的训练集和测试集索引。机器学习案例-基于Scikit-learn库Scikit-learn对各种功能进行了顶层封装,将分类模型、回归模型、聚类、降维模型和预处理器等统称为估计器(estimator)。这种统一的接口为Scikit-learn库中的机器学习算法提供了便捷的使用体验,降低了学习难度。Scikit-learn机器学习建模的过程分为导入模型类、创建模型对象、训练和预测几个阶段,以线性回归、K近邻和支持向量机几个算法为例,建模学习过程如下机器学习案例-基于Scikit-learn库案例:使用线性回归对加州房价数据集进行预测#导入必要的库fromsklearn.datasetsimportfetch_california_housing#加州房价数据集fromsklearn.model_selectionimporttrain_test_split#数据划分工具fromsklearn.preprocessingimportStandardScaler#标准化预处理fromsklearn.linear_modelimportLinearRegression#线性回归模型#评估指标fromsklearn.metricsimportr2_score,mean_squared_error,mean_absolute_errorimportnumpyasnpimportmatplotlib.pyplotaspltimportmatplotlib
#设置Matplotlib使用的字体plt.rcParams["font.sans-serif"]=["SimHei"]plt.rcParams["axes.unicode_minus"]=False机器学习案例-c1)首先是数据加载及划分。defload_and_split_data():"""
加载加州房价数据,并按75:25的比例划分训练集和测试集。返回:
x_train,x_test,y_train,y_test:划分后的训练集输入、测试集输入、训练集输出、测试集输出
""“#读取房价数据将其存储到变量california_house_price
california_house_price=fetch_california_housing()X=california_house_price.datay=california_house_price.target#使用train_test_split随机划分数据集,25%为测试样本,其余为训练样本
x_train,x_test,y_train,y_test=train_test_split(X,y,test_size=0.25,random_state=33)returnx_train,x_test,y_train,y_test机器学习案例-基于Scikit-learn库2)数据归一化defstandardize_features(x_train,x_test,y_train,y_test):"""
对特征和目标进行标准化处理(Z-Score标准化)。参数:
x_train,x_test:原始训练集和测试集输入
y_train,y_test:原始训练集和测试集输出返回:
x_train_s,x_test_s,y_train_s,y_test_s:标准化后的数据
"""
scaler_x=StandardScaler()scaler_y=StandardScaler()#分别对训练和测试数据的特征数组和目标向量进行标准归一化x_train_s=scaler_x.fit_transform(x_train)x_test_s=scaler_x.transform(x_test)y_train_s=scaler_y.fit_transform(y_train.reshape(-1,1))y_test_s=scaler_y.transform(y_test.reshape(-1,1))returnx_train_s,x_test_s,y_train_s,y_test_s,scaler_y机器学习案例-基于Scikit-learn库3)定义模型训练函数加州房价数据集的字段含义deftrain_model(x_train,y_train):"""
训练线性回归模型参数:
x_train:标准化后的训练集输入
y_train:标准化后的训练集输出返回:
model:训练好的线性回归模型
y_pred:测试集预测结果
"""
model=LinearRegression()#使用训练数据进行模型训练model.fit(x_train,y_train[:,0])returnmodel字段名称各个字段解释MedInc该地区住户年收入中位数HouseAge该地区房屋年龄中位数AveRooms平均每户的房间总数AveBedrms平均每户的卧室数量Population该地区的总人口数AveOccup平均每户的居住人数Latitude该地区的纬度坐标Longitude该地区的经度坐标MedHouseVal该地区房屋价格中位数机器学习案例-基于Scikit-learn库4)定义模型测试函数评估内容调用方法均方误差(MeanSquaredError,MSE)fromsklearn.metricsimportmean_squared_errormean_absolute_error(y_test,y_predict)平均绝对误差(MeanAbsoluteError,MAE)fromsklearn.metricsimportmean_absolute_errormean_squared_error(y_test,y_predict)决定系数(R-squared)fromsklearn.metricsimportr2_scorer2_score(y_test,y_predict)metrics模块中常用的回归评估指标defevaluate_model(y_true,y_pred,scaler_y):"""
使用R²Score、MSE和MAE三个指标评估模型性能参数:
y_true:测试集真实值(标准化后)
y_pred:测试集预测值(标准化后)
scaler_y:目标变量的标准化器,用于还原原始数值返回:
r2,mse,mae:评估指标,保留两位小数
"""
#还原标准化前的真实值
y_true_original=scaler_y.inverse_transform(y_true)y_pred_original=scaler_y.inverse_transform(y_pred.reshape(-1,1))#计算评估指标
r2=r2_score(y_true_original,y_pred_original)mse=mean_squared_error(y_true_original,y_pred_original)mae=mean_absolute_error(y_true_original,y_pred_original)returnround(r2,2),round(mse,2),round(mae,2)机器学习案例-基于Scikit-learn库5)定义绘图函数defplot_regression_line(model,x_data,y_data,scaler_x,scaler_y,title='ModelFit'):"""
绘制实际值与模型预测值的散点图,并绘制拟合直线。参数:
model:训练好的模型
x_data:全部输入数据
y_data:全部输出数据
scaler_x:输入标准化器
scaler_y:输出标准化器
title:图像标题
"""
#数据标准化并进行预测
x_scaled=scaler_x.transform(x_data)y_pred_scaled=model.predict(x_scaled).reshape(-1,1)y_pred=scaler_y.inverse_transform(y_pred_scaled)plt.figure(figsize=(8,6))plt.scatter(y_data,y_pred,c="green",edgecolors='k',label='Predicted')plt.plot([min(y_data),max(y_data)],[min(y_data),max(y_data)],'r--',lw=2,label='IdealFit')plt.xlabel('TrueValues(y)')plt.ylabel('PredictedValues(ŷ)')plt.title(title)plt.legend()plt.grid(True)#plt.savefig("output_plot.png")#plt.close()plt.s
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 瞪羚企业品牌建设方案
- 集装箱房安全规章制度
- 幼儿园艺术活动创意表达对幼儿个性发展影响-基于2024年作品个性特征编码分析
- 施工现场突发事件应对行动方案
- 苯甲苯浮塔课程设计
- 表达求值的课程设计
- 2 花的学校【活动探究版】
- 小学数学二年级下册应用题专项练习(每日一练共42份)
- 以科学的智慧点亮思维的灯塔-初二年级物理期末考试动员主题班会课教案
- 初中九年级中考冲刺多学科联合备考参考(2026年)
- YS/T 583-2016热锻水暖管件用黄铜棒
- GB/Z 13800-2021手动轮椅车
- 2023年沅陵县水利系统事业单位招聘笔试题库及答案
- GB/T 24919-2010工业阀门安装使用维护一般要求
- GB/T 17492-2019工业用金属丝编织网技术要求和检验
- 化验室安全培训课件
- 最新合同法课件
- 夏季高温施工专项方案17P
- Java教案5面向对象编程技术
- 建筑工程脚手架安全施工培训ppt
- 内蒙古自治区专业技术人员年考核表
评论
0/150
提交评论