人工智能通识实践教程 课件 第7章 人工智能与机器学习_第1页
人工智能通识实践教程 课件 第7章 人工智能与机器学习_第2页
人工智能通识实践教程 课件 第7章 人工智能与机器学习_第3页
人工智能通识实践教程 课件 第7章 人工智能与机器学习_第4页
人工智能通识实践教程 课件 第7章 人工智能与机器学习_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第7章人工智能与机器学习实验方法通过Python第三方库Scikit-learn进行机器学习中回归任务和分类任务的相关实践通过原生Python代码及可视化过程,理解梯度下降方法的原理实验要求(1)使用Scikit-learn库的LinearRegression模型对糖尿病数据集进行一元线性回归建模,并对结果进行评估。(2)使用Scikit-learn库的LogisticRegression模型对鸢尾花数据集进行多分类预测,并对结果进行评估。(3)通过原生Python代码,利用生成数据集,学习和理解梯度下降算法。(4)理解欠拟合与过拟合:通过回归建模实验,掌握欠拟合与过拟合的概念,能够通过训练集和测试集的误差分析,识别并区分两者的表现。实验准备—创建编程环境①使用VSCode打开文件夹,为存储项目文件做好准备②选择Python解释器③进入VSCode终端(Ctrl+`),创建、激活、安装虚拟环境python-mvenv.venv(创建虚拟环境).venv\Scripts\activate(激活虚拟环境)pipinstallscikit-learn(安装Scikit-learn库)pipinstallmatplotlib(安装Matplotlib库)pipinstallseaborn(安装Seaborn库)importsklearnimportmatplotlib.pyplotaspltimportseabornassns实验准备—创建编程环境①使用VSCode打开文件夹,为存储项目文件做好准备②选择Python解释器(Anacondabase)importsklearnimportmatplotlib.pyplotaspltimportseabornassns实验一:线性回归(1)数据加载与探索。加载糖尿病数据集,并了解糖尿病数据集中的各个特征(如age、bmi、bp等)以及目标变量(糖尿病的疾病进展)。(2)数据集划分。选择数据集中的一个特征(例如,使用bmi或s5特征)和目标变量(糖尿病的疾病进展),并将数据划分为训练集和测试集,准备进行一元线性回归分析建模。(3)模型训练与评估。使用LinearRegression类进行一元线性回归建模,然后使用测试集进行预测,并计算模型的R2和MSE,评估模型的性能。(4)结果分析。分析该模型的R2,评估该特征对目标变量的预测效果。Scikit-learnScikit-learn库基于Numpy、Scipy、Pandas、Matplotlib、Seaborn等开发,是主流的开源机器学习库,封装了大量经典及最新的机器学习模型,并提供案例和数据。Scikit-learn库高度集成、并做了易用性的封装(统一API)支持机器学习全过程数据集数据预处理划分数据集机器学习算法模型评估(1)加载数据集序号数据集名称调用方式数据描述1鸢尾花数据集load_iris()多分类任务数据集2波士顿房价数据集load_boston()经典回归任务数据集3糖尿病数据集load_diabetes()经典回归任务数据集4手写数字数据集load_digits()多分类任务数据集5乳腺癌数据集load_breast_cancer()简单经典的二分类任务数据集6体能训练数据集load_linnerud()经典多变量回归任务数据集fromsklearn.datasetsimportload_diabetesdiabetes=load_diabetes()查看数据集print(diabetes.keys())dict_keys(['data','target','frame','DESCR','feature_names','data_filename','target_filename','data_module'])演示JupyterNotebook文件字段含义示例data特征数据,通常是一个NumPy数组,表示每个样本的特征X=diabetes.datatarget目标数据,通常是一个NumPy数组,表示每个样本的标签值y=diabetes.targetfeature_names特征名称,通常是一个列表,表示数据集中的每个特征diabetes.feature_namestarget_names目标数据名称,通常用于分类问题,表示不同类别的标签名称diabetes数据集无该字段DESCR数据集的描述信息,包含关于数据集的详细信息、特征含义等diabetes.DESCRshape获取特征数据或者目标数据的维度(行数和列数)diabetes.data.shapeprint(diabetes.DESCR)目标变量值:连续型数值,反映患者糖尿病病情在一年后的进展程度。数值越大,表示疾病恶化程度越高。(2)划分数据集—留出法sklearn.model_selection.train_test_split(*arrays,

test_size=None,

train_size=None,

random_state=None,

shuffle=True,

stratify=None)参数说明arrays要划分的数组或矩阵,可以将特征(X)和目标(y)合并在一起,也可以分开传递test_size测试集样本的占比,不指定train_size参数时默认取值为0.25random_state随机种子。在重复试验时保持随机种子不变,可以保证每次得到相同的划分fromsklearn.model_selectionimporttrain_test_splitX=diabetes.data[:,2].reshape(-1,1)y=diabetes.targetX_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2,random_state=10)(3)建模、训练及预测导入模型类创建模型训练和预测线性回归fromsklearn.linear_modelimportLinearRegressionmodel=LinearRegression()model.fit(X_train,y_train)y_predict=model.predict(X_test)逻辑回归fromsklearn.linear_modelimport

LogisticRegressionmodel=LogisticRegression()支持向量机from

sklearn.svmimport

SVCmodel=SVC(C=1,kernel='linear')(4)评估模型回归模型的评估指标均方损失误差R2:模型解释目标变量方差的比例fromsklearn.metricsimportmean_squared_error,r2_score

#计算MSEmse=mean_squared_error(y_test,y_predict)#计算R2r2=r2_score(y_test,y_predict)拓展练习(1)选择另一个特征属性建模,并对比预测效果。(2)尝试使用多元线性回归建模(如BMI+s5),对比预测效果。实验报告要求根据以下提纲对本实验过程中的关键收获与遇到的挑战进行总结,并撰写实验报告。(1)实验过程总结。简述数据加载、预处理、建模及评估过程中的关键步骤。总结模型的训练效果、测试结果。(2)对模型性能的思考。分析训练后的模型的R2及其他评估指标,探讨模型拟合效果是否理想。如果模型拟合效果不佳,分析其原因。(3)对回归分析的理解。阐述对于糖尿病数据集而言,能否通过回归模型发现潜在的疾病进展规律,或者在实际医疗数据分析中如何运用这些技巧。(4)通过拓展练习1、2总结特征选择的重要性。实验2:逻辑回归(多分类问题)(1)数据加载与探索。加载鸢尾花数据集,并了解鸢尾花数据集中的各个特征以及目标变量。(2)数据集划分。(3)建立LogisticRegression模型,对其进行训练和测试。(4)模型训练与评估,给出准确率、查准率、查全率等指标。(1)加载数据集序号数据集名称调用方式数据描述1鸢尾花数据集load_iris()多分类任务数据集2波士顿房价数据集load_boston()经典回归任务数据集3糖尿病数据集load_diabetes()经典回归任务数据集4手写数字数据集load_digits()多分类任务数据集5乳腺癌数据集load_breast_cancer()简单经典的二分类任务数据集6体能训练数据集load_linnerud()经典多变量回归任务数据集fromsklearn.datasetsimportload_irisiris=load_iris()print(iris.keys())dict_keys(['data','target','frame','target_names','DESCR','feature_names','filename','data_module'])字段含义示例data特征数据,通常是一个NumPy数组,表示每个样本的特征X=iris.datatarget目标数据,通常是一个NumPy数组,表示每个样本的标签值y=iris.targetfeature_names特征名称,通常是一个列表,表示数据集中的每个特征iris.feature_namestarget_names目标数据名称,通常用于分类问题,表示不同类别的标签名称iris.targe_namesDESCR数据集的描述信息,包含关于数据集的详细信息、特征含义等iris.DESCRshape获取特征数据或目标数据的维度(行数和列数)iris.data.shape查看数据集查看数据集iris.feature_names['sepallength(cm)','sepalwidth(cm)','petallength(cm)','petalwidth(cm)']iris.target_namesarray(['setosa','versicolor','virginica'],dtype='<U10')iris.target.shape(150,)查看数据集(2)划分数据集—留出法sklearn.model_selection.train_test_split(*arrays,

test_size=None,

train_size=None,

random_state=None,

shuffle=True,

stratify=None)参数说明arrays要划分的数组或矩阵,可以将特征(X)和目标(y)合并在一起,也可以分开传递test_size测试集样本的占比,不指定train_size参数时默认取值为0.25random_state随机种子。在重复试验时保持随机种子不变,可以保证每次得到相同的划分fromsklearn.model_selectionimporttrain_test_splitX=iris.data[:,[2,3]]y=iris.targetX_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2,random_state=10)(3)建模、训练及预测导入模型类创建模型训练和预测线性回归fromsklearn.linear_modelimportLinearRegressionmodel=LinearRegression()model.fit(X_train,y_train)y_predict=model.predict(X_test)逻辑回归fromsklearn.linear_modelimport

LogisticRegressionmodel=LogisticRegression()支持向量机from

sklearn.svmimport

SVCmodel=SVC(C=1,kernel='linear')逻辑回归模型逻辑回归:一种线性模型,用于分类任务,根据现有数据为分类边界线建立回归方程,以此进行分类逻辑回归通过Sigmoid函数将线性回归的输出映射为一个介于0和1之间的概率值,从而确定属于某个类别的概率,并据此进行分类。Sigmoid函数wx+b>0wx+b<0wx+b=0逻辑回归模型LogisticRegression采用一对多策略(OvR)处理多分类问题测试样本分类器setosa-非setosa分类器virginica-非virginica分类器versicolor-非versicolorP(setosa)P(非)P(非)P(versicolor)非setosavirginicaversicolor0.20.70.6P(virginica)P(非)one-versus-rest(4)模型评估评估指标/工具调用方法说明准确率(Accuracy)fromsklearn.metricsimportaccuracy_scoreaccuracy_score(y_true,y_pred)判定正确的样本数占样本总数的比例查准率(Precision)fromsklearn.metricsimportprecision_scoreprecision=precision_score(y_true,y_pred)从预测的角度,预测为正类的样本中实际为正类的比率,衡量命中正类的能力查全率(Recall)fromsklearn.metricsimportrecall_scorerecall=recall_score(y_true,y_pred)从实际发生的角度,计算实际为正类的样本被正确判定的比率,衡量覆盖正类的能力F1分数(F1-Score)fromsklearn.metricsimportf1_scoref1=f1_score(y_true,y_pred)用查准率与查全率计算调和平均值分类报告fromsklearn.metricsimportclassification_reportreport=classification_report(y_true,y_pred)对模型预测结果进行详细分析,包括查准率、查全率、F1分数等混淆矩阵(ConfusionMatrix)fromsklearn.metricsimportconfusion_matrixcm=confusion_matrix(y_true,y_pred)展示模型真实标签和预测标签之间的关系多分类问题增加average=None参数得到每个类别的独立指标fromsklearn.metricsimportaccuracy_scorefromsklearn.metricsimportprecision_score,recall_scorefromsklearn.metricsimportconfusion_matrix,classification_report#计算模型的准确率accuracy=accuracy_score(y_test,y_predict)print(f'Accuracy:{accuracy:.2f}')precision=precision_score(y_test,y_predict,average=None)print(precision)recall=recall_score(y_test,y_predict,average=None)print(recall)#打印分类报告,显示精度、召回率和F1分数print(classification_report(y_test,y_predict,target_names=iris.target_names))拓展练习(1)尝试使用sepallength(cm),sepalwidth(cm)建模,对比模型指标。拓展练习(2)从数据集中筛选出versicolor和virginica两类样本,选取sepallength(cm),sepalwidth(cm)特征进行二分类建模。输出混淆矩阵,计算查准率、查全率、准确率,与混淆矩阵中的数据进行对比。X=iris.data[50:,[0,1]]y=iris.target[50:]提示1:versicolor和virginica两类样本为后100条数据提示3:Scikit-learn输出混淆矩阵输出如图提示2:Scikit-learn默认将y取值大的类别视为正类(即类别2/virginica)实验报告根据以下提纲对本实验过程中的关键收获与遇到的挑战进行总结,并撰写实验报告。(1)数据准备与可视化的方法。使用Scikit-learn库加载鸢尾花数据集,了解该数据集;将数据集分为训练集和测试集;使用花瓣特征进行数据可视化,展示不同鸢尾花品种的分布情况。(2)模型训练与预测。创建并训练逻辑回归模型,使用训练好的模型对测试集进行预测。(3)分类模型的评估方法。使用准确率、查准率、查全率、分类报告、混淆矩阵等多种评估指标/工具对模型进行性能评估,评估模型在各类别上的表现,并识别可能的误分类情况。(4)通过拓展练习1总结特征选择的重要性。(5)通过拓展练习2总结混淆矩阵的使用。实验3:Python原生代码实现梯度下降(1)回归问题的梯度下降可视化展示(2)二分类问题的梯度下降可视化展示梯度下降计算过程

逻辑回归均方误差损失函数交叉熵损失函数(1)回归问题梯度下降假设有这样一组数据:X=[35,40,45,65,74,80,120,140,230,300,400,500,600]y=[150,170,190,200,224,245,320,400,640,780,900,1100,1300]。查看源代码(2)分类问题的梯度下降数据集生成fromsklearn.datasetsimportmake_classification

X,y=make_classification(n_samples=200,#样本数量n_features=2,#特征数量n_informative=2,#信息性特征数量,所有特征都包含有信息n_redundant=0,#不生成冗余特征n_classes=2,#二分类问题random_state=42)#设置随机种子查看源代码拓展练习(1)调节学习率、学习的轮数epochs,观察梯度下降过程,思考学习率和epochs在训练过程中所起到的作用。(2)使用scikit-learn库中的make_regression生成回归数据,利用梯度下降算法进行建模,并进行可视化展示。fromsklearn.datasetsimportmake_regressionX,y=make_regression(

n_samples=100,#样本数量

n_features=1,#特征数量

noise=10,#噪声标准差

random_state=42#随机种子)实验报告根据以下提纲对本实验过程中的关键收获与遇到的挑战进行总结,并撰写实验报告。(1)回顾实验过程。描述实验的步骤,包括数据生成、分类器实现、梯度下降、可视化等。(2)结合代码理解梯度下降法的原理。从初始化参数开始,通过计算预测值、计算误差、计算梯度、更新参数这些步骤的迭代过程,理解梯度下降法在其中所起到的作用。(3)理解学习率的选择。学习率决定了每次参数更新的步长,影响收敛速度和稳定性。过低的学习率可能导致收敛速度过慢,需进行大量迭代。过高的学习率可能导致参数更新过大,错过最优解,甚至导致不收敛。结合实验,体会学习率在模型收敛过程中的重要性。(4)梯度下降法可视化结果分析。通过可视化决策边界的变化,可以直观地观察到模型在训练过程中的学习进展和收敛情况。理

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论