机器学习算法与实践郭羽含课后参考答案_第1页
机器学习算法与实践郭羽含课后参考答案_第2页
机器学习算法与实践郭羽含课后参考答案_第3页
机器学习算法与实践郭羽含课后参考答案_第4页
机器学习算法与实践郭羽含课后参考答案_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

第一章1.填空题1)交叉,数学,统计学,计算机科学,信息论,优化理论,自动,通过经验2)监督学习、无监督学习、半监督学习、强化学习;分类、回归、聚类、降维3)分类,回归,聚类,数据预处理4)简洁易读、高层次、解释性、可移植、丰富的库、面向对象、动态类型2.简答题1)简述机器学习的应用领域。机器学习广泛应用于多个领域,包括:金融:风险评估、欺诈检测、算法交易。医疗:疾病预测、医学影像分析、个性化治疗。广告:用户行为分析、推荐系统、精准营销。自然语言处理:文本分类、情感分析、机器翻译。计算机视觉:人脸识别、物体检测、图像分类。自动驾驶:环境感知、路径规划、决策支持。2)机器学习分类有哪些?机器学习的分类主要有:监督学习:利用带标签的数据进行训练,常见任务包括分类和回归。无监督学习:使用无标签数据,主要用于聚类和降维。半监督学习:结合少量标记数据和大量无标记数据进行训练。强化学习:通过与环境的交互学习,最大化累积奖励。3)简述机器学习的发展历史。机器学习的发展历程可分为几个阶段:1950s-1960s:早期探索,提出了感知机模型。1980s:引入神经网络,发展出反向传播算法。1990s:统计学习理论兴起,支持向量机(SVM)等方法被提出。2000s:大数据和计算能力提升,深度学习开始得到重视。2010s至今:深度学习取得突破,广泛应用于各行各业。4)简述机器学习能在互联网搜索的哪些环节起作用?在互联网搜索中,机器学习可以在以下环节起作用:搜索结果排序:根据用户反馈和行为优化搜索结果的展示顺序。推荐系统:根据用户历史搜索和偏好推荐相关内容。自然语言处理:理解用户查询意图,提高搜索准确性。图片和视频搜索:通过图像识别技术改善多媒体内容的搜索效果。5)什么是监督学习、无监督学习和半监督学习?各自有哪些特点以及它们的区别?监督学习:使用带标签的数据进行训练。特点是模型通过已知输入和输出学习映射关系,适用于分类和回归任务。无监督学习:使用无标签的数据进行训练。特点是发现数据的潜在结构,如聚类和降维。半监督学习:结合少量标记和大量无标记数据进行训练。特点是提升模型性能,特别是在标签获取困难的情况下。区别:监督学习依赖标签,无监督学习不依赖标签,半监督学习则是二者的结合。6)机器学习与人工智能有什么关系和区别?关系:机器学习是人工智能(AI)的一个子集,通过数据驱动的方法使机器具有学习能力,从而实现智能化。区别:人工智能是一个更广泛的概念,涵盖所有使计算机具有人类智能特征的技术,包括规则系统、逻辑推理等,而机器学习专注于通过数据和算法让系统自我改进。7)有哪些常见的Python库?常见的Python库包括:NumPy:用于科学计算和数组操作。Pandas:数据处理和分析。Matplotlib:数据可视化。Scikit-learn:机器学习算法和工具。TensorFlow和Keras:深度学习框架。PyTorch:另一种流行的深度学习框架。Statsmodels:统计建模和计量经济学。第二章1.填空题训练集、验证集、测试集、网格搜索、随机搜索、贝叶斯优化留出法、交叉验证、自助法2.简答题1)过拟合和欠拟合的含义、产生原因及解决方法过拟合:含义:模型在训练集上表现很好,但在测试集或新数据上表现不佳,说明模型学习到了训练数据中的噪声和细节,而不是数据的普遍规律。产生原因:模型复杂度过高(例如,使用了太多的参数或层次)、训练数据量不足、缺乏正则化等。解决方法:减少模型复杂度(例如,使用更简单的模型)、增加训练数据、使用正则化技术(如L1、L2正则化)、使用交叉验证等。欠拟合:含义:模型在训练集和测试集上都表现不佳,无法捕捉到数据中的基本模式。产生原因:模型复杂度过低(例如,使用了线性模型去拟合高度非线性的数据)、特征选择不当等。解决方法:增加模型复杂度(例如,使用更复杂的模型)、进行特征工程、增加更多相关的特征等。2)数据集划分的估算这是一个排列组合问题,在保持样本均衡的前提下,正例和反例在训练和测试集中的数量相同,即在训练集中应该包括1750个正例和1750个反例,剩余的作测试集,那么划分方式应该有x25003)错误率与ROC曲线的联系错误率是指分类模型预测错误的样本占总样本的比例。错误率可以简洁地表示模型的整体性能,但它并没有考虑不同类别之间的分类能力差异。ROC曲线(接收者操作特征曲线)则通过不同的阈值描绘出真正率(TPR)与假正率(FPR)的关系。ROC曲线提供了一个更全面的视角,能够展示模型在不同决策阈值下的性能。联系:ROC曲线下的面积(AUC)可以作为模型性能的一个重要指标,通常比单一的错误率更能反映模型的分类能力。通过分析ROC曲线,可以发现模型在不同阈值下的表现,从而帮助选择最佳的阈值以优化错误率。4)比较检验及常用方法比较检验是统计学中用于比较两个或多个样本之间差异的方法,以判断这些差异是否具有统计学意义。常用的比较检验方法有:i)t检验:用于比较两组样本均值的差异,适用于样本量较小且数据近似服从正态分布的情况。适用情况:当我们需要比较两个独立样本或配对样本的均值时,例如比较两种药物的效果。ii)方差分析(ANOVA):用于比较多于两组样本均值的差异,适用于样本量较小且数据近似服从正态分布且方差齐性的情况。适用情况:当我们需要比较三组及以上样本的均值时,例如比较不同教学方法对学生成绩的影响。这两种方法各有优缺点,选择时需根据数据特性和研究问题进行适当评估。第三章1.选择题1)K-近邻算法是一种(A)。A.监督学习算法 B.无监督学习算法C.半监督学习算法 D.共强化学习算法2)K-近邻的核心思想是(C)。A.使用概率模型进行分类 B.寻找最优超平面进行分类C.基于距离度量进行分类 D.利用决策树进行分类3)在K-近邻算法中,k的选择会对结果产生什么影响(B)。A.影响算法的收敛速度 B.影响算法的泛化能力C.影响算法的模型复杂度 D.影响算法的计算效率4)在K-近邻算法中,如何选择一个合适的k值(C)。A.根据训练数据集的大小选择 B.根据特征空间的维度选择C.根据应用场景和实验结果选择 D.根据算法的收敛性选择5)在K-近邻算法中,一般如何度量两个样本点之间的距离(B)。A.曼哈顿距离 B.欧氏距离C.余弦相似度 D.马氏距离6)在K-近邻算法中,如何解决样本类别不平衡的问题(AD)。A.以重采样来平衡各个类别的样本数量 B.调整距离度量中的权重来平衡类别C.使用集成学习方法来平衡样本类别 D.以过/欠采样来平衡各类别样本数量7)在K-近邻算法的分类任务中,决策边界是如何确定的(B)。A.根据训练样本点的密度分布确定 B.根据欧氏距离和k值确定C.根据类别标签的分布确定 D.根据特征空间的划分确定8)K-近邻算法可以用于以下哪些任务(AB)。A.分类任务 B.回归任务C.聚类任务 D.特征选择任务2.问答题1)K-近邻算法的基本流程是什么?1)计算已经正确分类的数据集中每个样本与待分类样本之间的距离;2)按照距离递增次序对数据集中的样本排序;3)选取与待分类样本距离最小的K个样本;4)确定该K个样本所在类别的出现频率;5)返回该K个样本出现频率最高的类别作为待分类样本的预测类别。2)K-近邻算法的优缺点是什么?优点:简单易懂:算法直观,易于实现,适合初学者理解。无需训练:K-近邻是懒惰学习算法,不需要显式的训练过程,适合实时更新的数据。适用性广:可以用于分类和回归任务,适用范围广泛。灵活性高:可使用不同的距离度量(如欧氏距离、曼哈顿距离等),根据数据特征进行调整。缺点:计算开销大:需要计算每个测试样本与所有训练样本的距离,尤其在数据量大时,计算速度较慢。存储需求高:需要存储整个训练集,对内存要求较高。对噪声敏感:噪声数据会影响分类结果,尤其是k值小的时候。维度诅咒:在高维空间中,数据点之间的距离变得不可靠,导致分类性能下降。选择k值困难:k值的选择对算法性能有很大影响,不同的k值可能导致截然不同的结果。3.算法题1)给定一组已分类的训练集[[2.0,3.0],[4.0,2.0],[1.0,2.5],[3.5,2.5],[2.5,1.5],[3.0,3.5]]及其类别标签[0,1,0,1,0,1],请使用k近邻算法判断待分类样本点[2.8,2.7]的类别标签。1.利用欧氏距离计算待分类样本点与训练集中每个点的距离:a.与([2.0,3.0]):d1=0.854b.与([4.0,2.0]):d2=1.389c.与([1.0,2.5]):d3=1.811d.与([3.5,2.5]):d4=0.729e.与([2.5,1.5]):d5=1.237f.与([3.0,3.5]):d6=0.8242.整理距离和标签训练样本距离类别[2.0,3.0]0.8540[4.0,2.0]1.391[1.0,2.5]1.810[3.5,2.5]0.7291[2.5,1.5]1.240[3.0,3.5]0.82413.假设k=34.按照距离排序,选择最近的3个:a.[3.5,2.5]-距离(0.729)-类别(1)b.[3.0,3.5]-距离(0.824)-类别(1)c.[2.0,3.0]-距离(0.854)-类别(0)5.投票:·类别(1):2个·类别(0):1个6.根据投票结果,类别(1)获得了更多的支持,最终确定待分类样本点[2.8,2.7]的类别标签为1。2)为数据集{(1,2,2),(2,3,4),(3,2,4),(4,3,6),(6,4,7),(3,5,2)}构建k-d树。1.第一层(切分维度:x):·排序:{(1,2,2),(2,3,4),(3,2,4),(4,3,6),(6,4,7),(3,5,2)}·中位数为{(3,2,4)}(索引为2)。·创建根节点:{(3,2,4)}。左子树:{(1,2,2),(2,3,4)}右子树:{(4,3,6),(6,4,7),(3,5,2)}2.第二层(左子树,切分维度:y):·左子树排序:((1,2,2),(2,3,4))·中位数为((2,3,4))(索引为1)。·创建左子树节点:((2,3,4))。左子树:((1,2,2))右子树:空3.第三层(左子树的左子树,切分维度:x):·左子树的左子树排序:((1,2,2))·中位数为((1,2,2))。·创建左子树的左子树节点:((1,2,2))。左子树:空右子树:空4.第二层(右子树,切分维度:y):·右子树排序:((4,3,6),(6,4,7),(3,5,2))·中位数为((6,4,7))(索引为1)。·创建右子树节点:((6,4,7))。左子树:((4,3,6))右子树:((3,5,2))5.第三层(右子树的左子树,切分维度:x):·左子树的左子树排序:((4,3,6))·中位数为((4,3,6))。·创建右子树的左子树节点:((4,3,6))。左子树:空右子树:空6.第三层(右子树的右子树,切分维度:x):·右子树的右子树排序:((3,5,2))·中位数为((3,5,2))。·创建右子树的右子树节点:((3,5,2))。左子树:空右子树:空因此,k-d树结构为:(3,2,4)/\(2,3,4)(6,4,7)//\(1,2,2)(4,3,6)(3,5,2)第四章1.选择题1)下列关于朴素贝叶斯的特点说法不正确的是(B)A.朴素贝叶斯处理过程简单,分类速度快B.朴素贝叶斯模型无需假设特征条件独立C.朴素贝叶斯模型发源于古典数学理论,数学基础坚实D.朴素贝叶斯对小规模数据表现较好2)关于朴素贝叶斯,下列说法错误的是(D)A.朴素的意义在于它的一个天真的假设:所有特征之间是相互独立的B.它是一个分类算法C.它实际上是将多条件下的条件概率转换成了单一条件下的条件概率,简化了计算D.朴素贝叶斯不需要使用联合概率3)EM算法的每次迭代由(B)步组成A.1 B.2 C.3 D.44)有向无环图,A、B间出现(A)有向回路。A.0 B.1 C.2 D.32.问答题1)简述朴素贝叶斯算法有几种?高斯朴素贝叶斯、多项式朴素贝叶斯、伯努利朴素贝叶斯、拉普拉斯平滑朴素贝叶斯2)试比较朴素贝叶斯算法与半朴素贝叶斯算法朴素贝叶斯算法和半朴素贝叶斯算法都是基于贝叶斯定理的分类算法,但它们在特征独立性假设和应用场景上有所不同。以下是两者的比较:a.特征独立性假设朴素贝叶斯算法:假设所有特征条件独立。也就是说,给定类别,特征之间相互独立。这一假设简化了模型的计算,但在某些情况下可能不符合实际情况。半朴素贝叶斯算法:不完全依赖于特征独立性假设。它允许特征之间存在一定的依赖关系,因此能更好地捕捉特征之间的相关性,提高分类性能。b.模型复杂度朴素贝叶斯算法:由于假设特征独立,模型相对简单,易于实现和解释,计算效率高。半朴素贝叶斯算法:由于考虑了特征之间的依赖关系,模型相对复杂,计算量可能增加。c.应用场景朴素贝叶斯算法:通常适用于特征之间相对独立的场景,如文本分类(垃圾邮件检测、情感分析等)。半朴素贝叶斯算法:更适合特征之间存在一定相关性的情况,如在某些生物信息学问题或复杂的模式识别任务中。d.性能朴素贝叶斯算法:在特征独立的前提下,往往表现较好,但在特征存在强相关性时性能可能下降。半朴素贝叶斯算法:在处理特征依赖性时通常能获得更好的分类效果,尤其是在数据特征之间存在较强相关性的情况下。3.综合应用题1)用朴素贝叶斯算法实现天气情况与是否打网球关系。表5-1天气与是否打网球情况天气气温湿度是否打网球晴热高否晴热高否多云热高是雨温高是雨凉正常是雨凉正常否多云凉正常是晴温高否晴凉正常是雨温正常是晴温正常是多云温高是多云热正常是雨温高否importpandasaspd

fromsklearn.preprocessingimportLabelEncoder

fromsklearn.naive_bayesimportGaussianNB

fromsklearn.model_selectionimporttrain_test_split

fromsklearnimportmetrics

#创建数据集

data={

'天气':['晴','晴','多云','雨','雨','雨','多云','晴','晴','雨','晴','多云','多云','雨'],

'气温':['热','热','热','温','凉','凉','凉','温','凉','温','温','温','热','温'],

'湿度':['高','高','高','高','正常','正常','正常','高','正常','正常','正常','高','正常','高'],

'是否打网球':['否','否','是','是','是','否','是','否','是','是','是','是','是','否']

}

df=pd.DataFrame(data)

#编码数据

le=LabelEncoder()

df['天气']=le.fit_transform(df['天气'])

df['气温']=le.fit_transform(df['气温'])

df['湿度']=le.fit_transform(df['湿度'])

df['是否打网球']=le.fit_transform(df['是否打网球'])

#特征和标签

X=df[['天气','气温','湿度']]

y=df['是否打网球']

#拆分数据集

X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2,random_state=42)

#训练模型

model=GaussianNB()

model.fit(X_train,y_train)

#预测

y_pred=model.predict(X_test)

#评估

print("准确率:",metrics.accuracy_score(y_test,y_pred))

print("分类报告:\n",metrics.classification_report(y_test,y_pred))

#预测示例

sample=[[0,1,0]]#假设:天气=晴(0),气温=温(1),湿度=高(0)

prediction=model.predict(sample)

print("预测结果:","打网球"ifprediction[0]==1else"不打网球")第五章1.选择题1)下列说法中不正确的是(D)A.线性回归应用场景有房价预测B.线性回归应用场景有贷款额度预测C.线性回归应用场景有销售额度预测D.线性回归只有线性关系2)线性回归的核心是(C)A.构建模型 B.距离度量 C.参数学习 D.特征提取3)下列属于线性回归的分类的有(AB)A.单变量线性关系B.多变量线性关系C.非线性关系D.以上都是4)逻辑回归模型可以解决线性不可分问题吗?(C)A.可以B.不可以C.视数据具体情况而定D.以上说法都不对2.问答题1)简述梯度下降法有几种?批量梯度下降、随机梯度下降、小批量梯度下降、动量梯度下降、自适应学习率方法2)试比较线性回归与逻辑回归的异同。线性回归和逻辑回归是两种常用的回归分析方法,它们在目标、模型形式和应用场景上有一些异同点。以下是它们的比较:相同点:基本原理:两者都基于输入特征与输出变量之间的关系,试图通过学习来拟合数据。使用梯度下降法:都可以使用梯度下降等优化算法来最小化损失函数。特征处理:都可以使用相似的特征处理技术,如特征缩放、正则化等。不同点:目标变量:线性回归:用于预测连续型目标变量(如房价、温度)。逻辑回归:用于分类问题,预测离散型目标变量(如二分类任务:是/否、0/1)。模型输出:线性回归:输出为一个实数值,表示预测值。逻辑回归:输出为概率值(介于0和1之间),通常通过阈值(如0.5)进行类别判定。损失函数:线性回归:采用均方误差(MSE)作为损失函数。逻辑回归:采用对数损失(LogLoss)作为损失函数。模型假设:线性回归:假设特征和目标变量之间存在线性关系。逻辑回归:假设特征与目标之间的关系可以通过逻辑函数(如sigmoid函数)来建模。适用场景:线性回归:适用于回归分析,常用于经济学、工程等领域。逻辑回归:广泛应用于二分类问题,如医学诊断、信用评分等。3.综合应用题1)下列数据是水泥释放的热量与其成分的关系,求其线性关系。表5-1水泥释放的热量与其成分yX1X2X3X478.572666074.31291552104.3115682087.6113184795.9752633109.21155922102.737117672.5131224493.12541822115.9214742683.81402334113.32266912109.410688122)表5-2中的数据集给出了用户的性别、年龄信息,以及用户是否会购买某个产品。我们希望通过逻辑回归模型来对用户的购买决策进行预测。请构建逻辑回归模型并使用该模型对以下用户的决策进行预测:用户1:年龄30岁,性别女用户2:年龄50岁,性别男表5-2用户信息及购买决策性别年龄购买决策25男是30女否35男否40女是45男否用户1的购买决策预测为:是用户2的购买决策预测为:否第六章1.选择题1)支持向量机是一种常用的监督学习算法,主要用于(A)和()任务。A.分类回归B.分类聚类C.聚类降维D.降维回归2)线性支持向量机的优化模型是(B)间隔最大化。A.硬B.软C.软或硬D.软和硬3)非线性支持向量机通过(A)可以转化为线性支持向量机。A.核技巧B.对偶算法C.SMO方法D.拉格朗日乘子法4)支持向量机的对偶问题可以通过(C)求解。A.核技巧B.对偶算法C.SMO方法D.拉格朗日乘子法5)支持向量机回归模型的参数由(B)决定。A.SMO算法B.支持向量C.整个训练集D.测试集2.简答题1)请简述什么是支持向量机分类的“最大间隔”(MaximumMargin)划分超平面,什么是支持向量,它具有什么特点。在支持向量机中,超平面是一个用于将数据点分成不同类别的决策边界。最大间隔的划分超平面是指离距两个类别中边界数据点(支持向量)距离最远的超平面。支持向量是指位于分类边界附近的那些训练样本点,它们直接影响决策边界的位置和形状。特点:重要性,支持向量是唯一影响决策边界的点,去掉其他非支持向量的数据点不会改变分类结果。决定性,在训练过程中,只有支持向量才会参与到最终模型的构建中,因此模型的复杂度与支持向量的数量密切相关。2)请简述非线性支持向量机中的核函数有什么意义。在非线性支持向量机(SVM)中,核函数的主要意义在于将数据从输入空间映射到更高维的特征空间,以便能够找到一个线性可分的超平面。具体来说,核函数的意义包括:a)处理非线性关系,许多现实世界的数据是非线性可分的,直接在原始空间中难以找到合适的分隔超平面。b)核函数允许模型在高维空间中进行操作,从而能够有效地处理这些非线性关系。c)计算效率,避免高维计算,使用核函数可以不显式地计算高维特征空间中的数据点,而是通过核函数直接计算它们之间的内积。这种方法称为“核技巧”,显著减少了计算复杂度,避免了大规模数据处理时的高维特征计算。d)提高模型灵活性,多样性,不同的核函数(如线性核、多项式核、径向基函数核等)可以捕捉不同类型的数据分布和特征,使得模型可以根据具体问题的需求灵活调整。e)增强泛化能力,减少过拟合,通过在高维空间中寻找最优分割,核函数有助于模型更好地分离不同类别的数据点,从而提高模型在新数据上的泛化能力。3)请简述线性回归与支持向量机回归的联系与区别。线性回归和支持向量机回归(SVR)都是用于回归任务的机器学习算法,但它们在模型构建、目标和处理方式上有明显的联系与区别:联系a)基本目标:两者都旨在建立一个函数模型,以预测连续的输出变量(目标值)。b)线性关系:在简单情况下,线性回归和SVR都可以使用线性模型来拟合数据,即假设输入特征与输出之间存在线性关系。c)损失函数:两者都涉及到损失函数的最小化,线性回归通常使用均方误差(MSE),而SVR则使用不同的损失函数(如ε-不敏感损失)。区别a)模型形式:线性回归:直接通过最小化均方误差来拟合数据,结果是一个确定性的线性模型。SVR:通过最大化间隔和引入ε不敏感区域来构建模型,允许一定范围内的误差不被惩罚,从而提供更大的灵活性。b)容忍度:线性回归:对所有的训练样本都会计算误差,没有容忍度。SVR:定义了一个ε不敏感区域,只有当预测值超出该区域时,才会对误差进行惩罚。这使得SVR能够更好地处理噪声数据。c)复杂度与参数:线性回归:模型参数较少,易于理解和解释。SVR:通常需要选择核函数和调整相应的参数(如C和ε),其模型复杂度可能更高。d)适用场景:线性回归:适用于线性关系明显且数据量相对较小的情况。SVR:更适合于复杂和非线性的数据集,尤其是在数据维度较高时表现优越。3.编程题采用内置鸢尾花数据,选取不同的特征,利用支持向量机实现分类。参考代码如下#导入必要的库importnumpyasnpimportpandasaspdimportmatplotlib.pyplotaspltfromsklearnimportdatasetsfromsklearn.model_selectionimporttrain_test_splitfromsklearn.svmimportSVCfromsklearn.metricsimportclassification_report,confusion_matrix#1.加载数据集iris=datasets.load_iris()X=iris.data#特征y=iris.target#标签#2.选择特征(例如选择前两个特征:花萼长度和花萼宽度)X_selected=X[:,:2]#选择前两个特征#3.划分训练集和测试集X_train,X_test,y_train,y_test=train_test_split(X_selected,y,test_size=0.3,random_state=42)#4.训练支持向量机模型svm_model=SVC(kernel='linear')#使用线性核svm_model.fit(X_train,y_train)#5.进行预测y_pred=svm_model.predict(X_test)#6.评估模型print("混淆矩阵:")print(confusion_matrix(y_test,y_pred))print("\n分类报告:")print(classification_report(y_test,y_pred))#可视化决策边界plt.scatter(X_train[:,0],X_train[:,1],c=y_train,s=30,cmap='autumn',label='Traindata')plt.scatter(X_test[:,0],X_test[:,1],c=y_test,s=30,cmap='winter',marker='x',label='Testdata')#绘制决策边界xlim=plt.xlim()ylim=plt.ylim()#创建网格并预测每个点的类别xx,yy=np.meshgrid(np.linspace(xlim[0],xlim[1],100),np.linspace(ylim[0],ylim[1],100))Z=svm_model.predict(np.c_[xx.ravel(),yy.ravel()])#使用predict方法Z=Z.reshape(xx.shape)#重新调整Z的形状plt.contourf(xx,yy,Z,alpha=0.3,cmap='coolwarm')#用于填充背景plt.title("SVMDecisionBoundary")plt.xlabel("SepalLength")plt.ylabel("SepalWidth")plt.legend()plt.show()第七章1.问答题1)简述ID3算法和C4.5算法的异同。ID3算法和C4.5算法是两种用于构建决策树的常见算法,它们在处理分类问题时有一些相似之处,但也存在显著的差异。相同点:基本思想:两者都是基于信息增益的思想,采用递归的方式构建决策树,选择最优特征来进行数据集的划分。目标:都旨在通过特征的选择来最大化信息增益(ID3)或增益比(C4.5),从而提高模型的分类准确性。树的结构:最终生成的结果都是一棵决策树,可以用来进行分类。不同点:特征选择标准:ID3:仅使用信息增益作为特征选择的标准。信息增益可能偏向选择取值较多的特征。C4.5:使用增益比来进行特征选择,解决了ID3偏向取值多的特征的问题。增益比考虑了特征的熵,以更公平地评估特征的重要性。处理连续属性:ID3:主要处理离散属性,对于连续属性通常需要离散化,方法不够灵活。C4.5:能够直接处理连续属性,通过选定一个阈值将其转换为离散属性。缺失值处理:ID3:对于缺失值的处理能力较弱,通常会忽略含有缺失值的样本。C4.5:更加健壮,能够处理缺失值,通过对缺失值进行概率分配来减少数据损失。剪枝策略:ID3:不支持后剪枝,可能导致生成过于复杂的树(过拟合)。C4.5:提供了后剪枝机制,可以通过验证集来减少过拟合,提高模型的泛化能力。输出:ID3:生成的决策树通常较简单,但容易受到数据噪声的影响。C4.5:生成的树结构更为复杂,且能提供更好的分类性能。2)简述CART原理并说明其特点。CART原理:树的构建:数据集被递归地划分为两部分,每次选择一个特征及其最佳切分点,使得划分后的每个子集在目标变量上更为纯净。对于分类问题,CART使用基尼指数(GiniIndex)作为划分标准;对于回归问题,则使用平方误差作为标准。分裂过程:每次选择一个特征及其分裂点,通过计算各个可能的分裂点对目标变量的影响,选择信息增益最大(或纯度最小)的分裂点进行划分。划分过程中生成的每个节点都继续进行划分,直到满足停止条件(如叶节点样本数小于某个阈值、达到最大深度等)。剪枝:为了防止过拟合,CART通常会进行后剪枝。通过交叉验证等方法评估树的性能,去除一些不必要的节点,从而简化树结构,提高模型的泛化能力。CART的特点:适用性广:CART可以处理分类和回归任务,适用性非常广泛。二叉树结构:CART生成的决策树是二叉树,每个节点最多有两个子节点,简化了树的结构。灵活的特征处理:能够处理连续和离散特征,并能够直接使用原始数据,无需预处理。特征重要性:可以通过计算每个特征在树中的使用频率和影响力,评估特征的重要性,为特征选择提供依据。易于解释:决策树的可视化使得模型易于理解和解释,用户可以很容易看出决策过程。对噪声和异常值的敏感性:虽然CART具有强大的建模能力,但它对数据中的噪声和异常值较为敏感,可能导致过拟合。2.编程题1)编写程序,用ID3算法分类一个电影是科幻片还是动作片,数据集实例如表7-2所示。某电影打斗镜头为49,科幻镜头为51,其电影类别是什么?表7-2电影数据集实例电影名称打斗镜头科幻镜头电影类型11101科幻片2589科幻片31085动作片41158动作片importpandasaspd

fromsklearn.treeimportDecisionTreeClassifier

#创建电影数据集

data={

'打斗镜头':[1,5,108,115],

'科幻镜头':[101,89,5,8],

'电影类型':['科幻片','科幻片','动作片','动作片']

}

#转换为DataFrame

df=pd.DataFrame(data)

#特征和标签

X=df[['打斗镜头','科幻镜头']]

y=df['电影类型']

#创建决策树分类器

clf=DecisionTreeClassifier(criterion='entropy')

clf.fit(X,y)

#输入样本数据

test_sample=[[49,51]]

#进行预测

predicted=clf.predict(test_sample)

#输出结果

print(f"电影类型预测为:{predicted[0]}")2)编写程序,用C4.5算法进行分类,数据集实例如表7-3所示。表7-3样本数据集实例编号描述属性类别属性年龄收入是否为学生信誉购买计算机1≤30高否中否2≤30高否优否331~40高否中是4>40中否中是5>40低是中是6>40低是优否731~40低是优是8≤30中否中否9≤30低是中是10>40中是中是11≤30中是优是1231~40中否优是1331~40高是中是14>40中否优否importpandasaspd

fromsklearn.preprocessingimportLabelEncoder

fromsklearn.treeimportDecisionTreeClassifier

#创建数据集

data={

'年龄':['≤30','≤30','31~40','>40','>40','>40','31~40','≤30','≤30','>40','≤30','31~40','31~40','>40'],

'收入':['高','高','高','中','低','低','低','中','低','中','中','中','高','中'],

'是否为学生':['否','否','否','否','是','是','是','否','是','是','是','否','是','否'],

'信誉':['中','优','中','中','中','优','优','中','中','中','优','优','中','优'],

'购买计算机':['否','否','是','是','是','否','是','否','是','是','是','是','是','否']

}

#转换为DataFrame

df=pd.DataFrame(data)

#标签编码

label_encoders={}

forcolumnindf.columns:

le=LabelEncoder()

df[column]=le.fit_transform(df[column])

label_encoders[column]=le

#特征与标签

X=df.drop('购买计算机',axis=1)

y=df['购买计算机']

#创建C4.5决策树分类器

clf=DecisionTreeClassifier(criterion='entropy')

clf.fit(X,y)

#输入样本数据进行预测

test_sample=[[1,0,1,0]]#示例输入:年龄=≤30,收入=高,是否为学生=是,信誉=中

#进行预测

predicted=clf.predict(test_sample)

#输出结果

result=label_encoders['购买计算机'].inverse_transform(predicted)

print(f"购买计算机预测结果:{result[0]}")3)编写程序,用CART算法进行分类,图书销量数据集实例如表7-4所示。表7-4样本数据集实例序号数量页数是否促销评价销量1多100是B高2少50是A低3多50是B低4多120否B低5多40否A高6多140是A高7少130是B低8少50是A高9多160是B高10少50否B低11多30否B高12少170是B低13多60否A高14多100否A高importpandasaspd

fromsklearn.preprocessingimportLabelEncoder

fromsklearn.treeimportDecisionTreeClassifier

#创建数据集

data={

'数量':['多','少','多','多','多','多','少','少','多','少','多','少','多','多'],

'页数':[100,50,50,120,40,140,130,50,160,50,30,170,60,100],

'是否促销':['是','是','是','否','否','是','是','是','是','否','否','是','否','否'],

'评价':['B','A','B','B','A','A','B','A','B','B','B','B','A','A'],

'销量':['高','低','低','低','高','高','低','高','高','低','高','低','高','高']

}

#转换为DataFrame

df=pd.DataFrame(data)

#标签编码

label_encoders={}

forcolumnindf.columns:

le=LabelEncoder()

df[column]=le.fit_transform(df[column])

label_encoders[column]=le

#特征与标签

X=df.drop('销量',axis=1)

y=df['销量']

#创建CART决策树分类器

clf=DecisionTreeClassifier(criterion='gini')#使用Gini系数作为分裂标准

clf.fit(X,y)

#输入样本数据进行预测

test_sample=[[1,100,1,1]]#示例输入:数量=少,页数=100,是否促销=是,评价=B

#进行预测

predicted=clf.predict(test_sample)

#输出结果

result=label_encoders['销量'].inverse_transform(predicted)

print(f"销量预测结果:{result[0]}")第八章1.单项选择题1)下面关于提升树的说法哪个是正确的(B)。a.在提升树中,每个弱学习器是相互独立的。b.这是通过对弱学习器的结果进行综合来提升能力的方法。A.aB.bC.a和bD.都不对2)下面关于随机森林和梯度提升集成方法的说法哪个是正确的是(D)。a.这两种方法都可以用来做分类。b.随机森林用来做分类,梯度提升用来做回归。c.随机森林用来做回归,梯度提升用来做分类。d.两种方法都可以用来做回归。A.a和cB.b和dC.c和dD.a和d3)假设我们在随机森林算法中生成了几百颗树,然后对这些树的结果进行综合,下面关于随机森林中每颗树的说法正确的是(A)。a.每棵树是通过数据集的子集和特征的子集构建的。b.每棵树是通过所有的特征构建的。c.每棵树是通过所有数据的子集构建的。d.每棵树是通过所有的数据构建的。A.a和cB.a和dC.b和cD.b和d4)下面关于梯度提升中max_depth的超参数的说法正确的是(A)。a.对于相同的验证准确率,越低越好。b.对于相同的验证准确率,越高越好。c.max_depth增加可能会导致过拟合。d.max_depth增加可能会导致欠拟合。A.a和cB.a和dC.b和cD.b和d5)下面哪个算法不是集成学习算法的例子?(D)A.随机森林B.AdaboostC.梯度提升D.决策树6)关于梯度提升树,下面说法正确的是(C)。a.在每一个步骤,使用一个新的回归树来补偿已有模型的缺点。b.我们可以使用梯度下降的方法来最小化损失函数。A.aB.bC.a和bD.都不对7)关于随机森林描述不正确的是(D)。A.随机森林是一种集成学习算法。B.随机森林的随机性主要体现在训练单决策树时,对样本和特征同时进行采样。C.随机森林算法可以高度并行化。D.随机森林预测时,根据单决策树分类误差进行加权投票。2.问答题1)随机森林算法的随机性体现在哪里?a.样本采样(BootstrapSampling):在构建每棵决策树时,随机森林会从原始训练数据集中有放回地随机抽取样本。这意味着每棵树可能会训练在不同的数据子集上,从而增加模型的多样性。b.特征采样(FeatureSubsampling):在构建每个节点时,随机森林不会使用所有特征,而是随机选择一部分特征进行分裂。这种方法可以减少特征之间的相关性,提高模型的泛化能力。2)投票法算法和提升法算法适用于什么情景。投票法(Bagging)高方差模型:如决策树,特别是深度决策树,容易过拟合。通过将多个模型组合在一起,可以降低方差。大数据集:当数据量较大时,Bagging可以有效利用并行计算来加速训练过程。类别不平衡:在处理类别不平衡的问题时,可以通过对少数类样本进行增强来提高模型性能。需要稳定性:当需要一个相对稳定且鲁棒的模型时,Bagging能够通过多样性来提高整体性能。提升法(Boosting)弱分类器:Boosting专注于将多个弱分类器(如简单的决策树)结合起来形成一个强分类器,适用于单个模型表现不佳的情况。需要高准确率:当对模型的准确率要求很高时,Boosting能够通过不断纠正前一轮模型的错误来提高模型性能。复杂数据关系:对于具有复杂模式和非线性关系的数据,Boosting能够更好地捕捉这些特征。d.小到中等规模数据集:Boosting在小到中等规模的数据集上通常效果较好,因为它对噪声敏感,容易过拟合。3)简述决策树和随机森林的关系。决策树基本概念:决策树是一种监督学习算法,用于分类和回归。它通过将数据划分成不同的子集,以树状结构的方式进行决策。优点:易于理解和解释,能够处理非线性关系,并且对缺失值有一定的鲁棒性。缺点:容易过拟合,尤其是在数据量小或特征较多的情况下。随机森林基本概念:随机森林是由多棵决策树组成的集成学习方法。它结合了多个决策树的预测结果,以提高模型的准确性和稳定性。构建过程:在训练过程中,随机森林使用“自助法”(BootstrapSampling)从训练数据中随机抽取样本,同时在每个节点的分裂时随机选择特征。这种方法增加了模型的多样性,降低了过拟合的风险。优点:相较于单棵决策树,随机森林具有更高的准确性和更好的泛化能力,对异常值和噪声的鲁棒性也更强。关系基础关系:随机森林是基于决策树的集成方法,利用多棵决策树的组合来进行预测。性能提升:通过引入随机性和多个决策树,随机森林克服了单棵决策树的过拟合问题,提高了整体的预测性能。应用场景:两者都可以用于分类和回归任务,但随机森林通常在实际应用中表现更佳。第九章1.选择题1)关于k均值和DBSCAN的比较,以下说法不正确的是(B)。A.k均值丢弃被它识别为噪声的样本,而DBSCAN一般聚类所有样本。B.k均值可以发现不是明显分离的聚类,即便聚类有重叠也可以发现,但是DBSCAN会合并有重叠的类别。C.k均值很难处理非球形的聚类和不同大小的聚类,DBSCAN可以处理不同大小和不同形状的聚类。D.k均值聚类基于质心,而DBSCAN基于密度。2)“从某个选定的核心点出发,不断向密度可达的区域扩张,从而得到一个包含核心点和边界点的最大化区域,区域中任意两点密度相连”是(B)算法核心思想。A.k均值B.DBSCANC.AgglomerativeD.其它3)(A)算法缺点是当样本集较大时,聚类收敛时间较长,但可以对搜索最近邻时建立的kd树或者球树进行规模限制来改进。A.k均值B.DBSCANC.AgglomerativeD.其它2.简答题1)简述k均值算法的思想及优缺点。K均值算法的思想:K均值算法是一种常用的聚类方法,其主要思想是通过迭代优化样本数据的分组,使得每个组内的样本相似度尽可能高,而不同组之间的样本相似度尽可能低。具体步骤如下:选择K值:用户事先指定要划分的聚类数量K。初始化质心:随机选择K个样本作为初始的聚类中心(质心)。分配样本:将每个样本分配到离其最近的质心对应的聚类中。更新质心:根据分配结果,计算每个聚类的新质心(通常是该聚类中所有样本的均值)。迭代:重复步骤3和4,直到质心不再发生明显变化或达到预设的迭代次数。K均值算法的优缺点优点:简单易懂,算法易于实现和理解,适合初学者。计算效率高,对于大规模数据集,可以在相对较短的时间内完成聚类。能处理大样本,能够有效地处理大量数据,对于均匀分布的样本效果良好。缺点:需要预先指定K值,用户必须事先定义聚类数,这在实际应用中可能不容易确定。对初始质心敏感,不同的初始质心可能导致不同的聚类结果,可能需要多次运行以获得最佳结果。无法处理非球形聚类,K均值假设聚类呈球形,难以处理形状复杂或密度不同的聚类。对噪声和异常值敏感。噪声和异常值会对质心的位置产生较大影响,从而影响最终聚类结果。2)简述Agglomerative算法的思想及优缺点。Agglomerative算法的思想:Agglomerative算法是一种自底向上的聚类方法,主要思想是将每个数据点视为一个单独的聚类,然后逐步合并这些聚类,直到满足某个停止条件。具体步骤如下:初始化:将每个数据点视为一个独立的聚类。计算距离:计算所有聚类之间的距离或相似度。常用的距离度量包括欧几里得距离、曼哈顿距离等。合并聚类:找到距离最小的两个聚类,将它们合并为一个新聚类。更新距离矩阵:更新新的聚类与其他聚类之间的距离。重复:重复步骤3和4,直到达到预定的聚类数量或满足其他停止条件。Agglomerative算法的优缺点优点:无须预先指定聚类数,用户不需要事先定义聚类的数量,聚类过程可以根据数据特征自动生成。适用性广,可以处理任意形状的聚类,适合复杂的数据结构。可视化,可以生成树状图(dendrogram),有助于理解数据的层次结构和关系。缺点:计算复杂度高,在每次迭代中,需要计算和更新距离矩阵,计算复杂度通常是(O(n^3)),对于大规模数据集效率较低。对噪声和异常值敏感,噪声和异常值可能导致错误的聚类结果。合并方式影响结果,不同的合并策略(如单链接、全链接、平均链接等)可能导致不同的聚类结果,因此选择合并方式时需谨慎。3.编程题以某商城用户数据表9-2(见data-9-5.csv)为例,选用不同的特征,使用k均值和DBSCAN算法进行聚类并可视化展示聚类结果。参考代码如下importpandasaspdfromsklearn.clusterimportKMeans,DBSCANimportmatplotlib.pyplotaspltfrommpl_toolkits.mplot3dimportAxes3D#步骤1:数据准备#导入数据并显示data=pd.read_csv('data-9-5.csv')data.columns=['N','G','ag','ai','ss']data.head()#创建DataFramedf=pd.DataFrame(data)#步骤2:特征选择features=df[['ag','ai','ss']]#步骤3:K均值聚类kmeans=KMeans(n_clusters=3,random_state=42)df['kmeans_cluster']=kmeans.fit_predict(features)#可视化K均值聚类结果fig=plt.figure()ax=fig.add_subplot(111,projection='3d')ax.scatter(df['ag'],df['ai'],df['ss'],c=df['kmeans_cluster'],cmap='viridis')ax.set_xlabel('Age')ax.set_ylabel('AI')ax.set_zlabel('SS')plt.title('K-meansClusteringResult')plt.show()#步骤4:DBSCAN聚类dbscan=DBSCAN(eps=3,min_samples=5)df['dbscan_cluster']=dbscan.fit_predict(features)#可视化DBSCAN聚类结果fig=plt.figure()ax=fig.add_subplot(111,projection='3d')ax.scatter(df['ag'],df['ai'],df['ss'],c=df['dbscan_cluster'],cmap='viridis')ax.set_xlabel('Age')ax.set_ylabel('AI')ax.set_zlabel('SS')plt.title('DBSCANClusteringResult')plt.show()第十章1.选择题1)PCA原理是通过(A)将一组可能存在相关性的变量转换为一组线性不相关的变量。A.正交变换 B.线性变换C.特征值分解 D.奇异值分解2)主成分是原特征的(B),其个数通常小于原始变量的个数。A.缩减 B.线性组合C.非线性组合 D.扩充3)对于二维降一维问题,只需要找到一个基向量就够了,即最大化(C)就够了。A.协方差 B.标准差C.方差 D.协方差矩阵4)特征值分解降维时,需要将对应特征值按(A)顺序排列。A.从大到小 B.从小到大 C.无需排列 D.都不是5)奇异值分解降维时,需要找到的奇异矩阵是(B)。A.协方差矩阵的左右奇异矩阵 B.训练集矩阵的左右奇异矩阵C.协方差矩阵的特征向量构成的矩阵 D.训练集矩阵的特征向量构成的矩阵6)利用PCA降为k维后,k个主成分的贡献率为(C)。A.i=1kλi2i=1nC.i=1kλii=1nλ7)LDA是一种经典的(A)学习方法。A.线性 B.非线性C.多项式 D.核方法8)利用LDA进行降维时,(B)用到类别标记。A.不需要 B.需要C.二分类不需要,多分类需要 D.二分类需要,多分类不需要9)利用LDA降维时,其矩阵模型为(D)。A.Rayleigh商 B.特征值分解C.奇异值分解 D.广义Rayleigh商10)对于二分类问题,设类间散度矩阵为Sw,类别中心为u0和u1A.w=Sw−1u0C.w=Swu0−11)对于多分类问题,设类别数为(NA.N B.N−1 C.N+1 D.N+112)对于多分类问题,设W为投影子空间的一组标准正交基按行构成的矩阵,Sw为类内散度矩阵,SA.trWTSbW B.trWS13)对于多分类问题,设W为投影子空间的一组标准正交基按行构成的矩阵,Sw为类内散度矩阵,SA.trWTSbW B.trWSw2.简答题1)简述特征值分解降维和奇异值分解降维的区别和联系。特征值分解和奇异值分解都是用于降维的线性代数技术,但它们在理论基础、适用条件和应用场景上有所不同。以下是它们的区别和联系:区别:a)定义:特征值分解是将一个方阵分解为其特征向量和特征值的过程。奇异值分解是将任意矩阵(无论是方阵还是非方阵)分解为三个矩阵的乘积。b)适用条件:特征值分解仅适用于方阵。只有在方阵具有足够的特征向量(即可对角化时),才能进行特征值分解。奇异值分解适用于任意形状的矩阵,包括方阵、长方形矩阵等。即使矩阵不是满秩,也可以进行奇异值分解。c)数学性质:特征值和特征向量反映了矩阵的固有性质,特征值表示变换后的伸缩因子,特征向量表示变换方向。奇异值反映了矩阵在不同方向上的扩展程度,能够捕捉到矩阵的主要结构信息,尤其在数据分析中常用来处理噪声和冗余数据。d)降维方法:特征值分解常用于主成分分析。通过计算协方差矩阵的特征值和特征向量,选择最大特征值对应的特征向量作为新特征空间。奇异值分解也可用于PCA,但通常直接用于任意数据矩阵,通过选择最大的奇异值对应的奇异向量来实现降维。联系:两者都可以用于数据降维,提取重要特征。在某些情况下,特征值分解可以视为奇异值分解的一种特例,对于对称矩阵而言,特征值分解与奇异值分解结果相同。2)简述PCA与LDA的异同点,分析PCA和LDA各自的应用场景。主成分分析(PCA)和线性判别分析(LDA)都是常用的降维技术,尽管它们的目标和方法不同。以下是它们的异同点及各自的应用场景分析。相同点a)降维目的:PCA和LDA都旨在减少数据的维度,提高数据处理效率,同时尽量保留重要信息。b)线性变换:两者都使用线性变换来实现降维,但变换的方式和目标不同。c)特征提取:都可以用于特征提取,帮助识别数据中的主要模式。不同点a)目标:PCA:旨在找到能够最大化数据方差的方向(主成分),重点关注数据的整体结构。LDA:旨在寻找能够最大化类间距离(不同类别样本之间的距离)和最小化类内距离(同一类别样本之间的距离)的方向,更侧重于分类。b)监督与非监督:PCA:无监督学习,使用时不依赖于标签信息。LDA:有监督学习,使用时需要类别标签。c)适用条件:PCA:可以处理任何类型的数据(如高维数据集)且不要求类别信息。LDA:要求数据具有明显的类别标签,适用于分类任务。PCA的应用场景数据预处理:在机器学习模型训练前,使用PCA进行特征降维,以去除冗余特征,降低计算复杂性。图像处理:在面部识别、图像压缩等领域,通过PCA减少图像的维度,同时保留重要的视觉信息。可视化:对于高维数据集,使用PCA将数据降至2D或3D空间中,以便于可视化和分析。噪声去除:在信号处理中,PCA可以帮助去除噪声,提取出信号的主要成分。LDA的应用场景分类任务:在模式识别和机器学习中,LDA常用于构建分类器,例如人脸识别、文本分类等,通过优化类别之间的可区分性提高分类精度。生物信息学:在基因表达数据分析中,LDA可以用于分类不同类型的生物样本,帮助疾病诊断。市场分析:用于消费者行为分析,通过识别不同客户群体之间的差异,帮助制定市场策略。3.编程题1)现有10位中学生身体的各项指标如下表10-5,其中指标1(单位:cm)表示身高、指标2(单位:kg)表示体重、指标3(单位:cm)表示胸围、指标4(单位:cm)表示坐高。试对此组数据做PCA。表10-5身体指标数据集12345678910指标1148139160149152147153156147154指标241344937463842454143指标372707766807567726577指标478778679857681768279参考代码如下importnumpyasnpimportpandasaspdfromsklearn.decompositionimportPCAfromsklearn.preprocessingimportStandardScalerimportmatplotlib.pyplotasplt#1.输入数据data={'Height':[148,139,160,149,152,147,153,156,147,154],#身高'Weight':[41,34,49,37,46,38,42,45,41,43],#体重'Chest':[72,70,77,66,80,75,67,72,65,77],#胸围'SitHeight':[78,77,86,79,85,76,81,76,82,79]#坐高}#2.创建DataFramedf=pd.DataFrame(data)#3.数据标准化scaler=StandardScaler()df_scaled=scaler.fit_transform(df)#4.PCA降维pca=PCA(n_components=2)#降到2维X_pca=pca.fit_transform(df_scaled)#5.查看PCA结果pca_df=pd.DataFrame(data=X_pca,columns=['PC1','PC2'])#显示PCA的方差贡献explained_variance=pca.explained_variance_ratio_print(f"主成分1的方差贡献:{explained_variance[0]:.4f}")print(f"主成分2的方差贡献:{explained_variance[1]:.4f}")#6.可视化PCA结果plt.figure(figsize=(8,6))plt.scatter(pca_df['PC1'],pca_df['PC2'])plt.title('PCAofBodyIndicators')plt.xlabel('PrincipalComponent1')plt.ylabel('PrincipalComponent2')plt.grid(True)plt.show()2)Sklearn内置iris数据集,每个样本有四个特征(四维),分别是萼片长度(sepallength),萼片宽度(sepalwidth),花瓣长度(petallength),花瓣宽度(petalwidth),标签有三种,分别是setosa,versicolor和virginica。分别利用PCA和LDA对此数据集进行降维并对比分析。参考代码如下#1.导入必要的库#我们首先需要导入Python中的相关库,包括numpy,pandas,matplotlib和sklearn。importnumpyasnpimportpandasaspdimportmatplotlib.pyplotaspltfromsklearnimportdatasetsfromsklearn.decompositionimportPCAfromsklearn.discriminant_analysisimportLinearDiscriminantAnalysisasLDA#2.加载Iris数据集#我们可以使用sklearn.datasets模块加载Iris数据集,并将其转换为DataFrame格式,方便后续处理。#Loadirisdatasetiris=datasets.load_iris()X=iris.data#Featuresy=iris.target#Labelsiris_df=pd.DataFrame(data=X,columns=iris.feature_names)iris_df['target']=y#3.PCA降维#我们使用PCA将数据降至二维空间,并可视化结果。pca=PCA(n_components=2)X_pca=pca.fit_transform(X)pca_df=pd.DataFrame(data=X_pca,columns=['PC1','PC2'])pca_df['target']=yplt.figure(figsize=(8,6))colors=['r','g','b']fortarget,colorinzip([0,1,2],colors):plt.scatter(pca_df[pca_df['target']==target]['PC1'],pca_df[pca_df['target']==target]['PC2'],color=color,label=iris.target_names[target])plt.title('PCAofIrisDataset')plt.xlabel('PrincipalComponent1')plt.ylabel('PrincipalComponent2')plt.legend()plt.grid()plt.show()#4.LDA降维#接下来,我们使用LDA将数据降至二维空间,并可视化结果。lda=LDA(n_components=2)X_lda=lda.fit_transform(X,y)lda_df=pd.DataFrame(data=X_lda,columns=['LD1','LD2'])lda_df['target']=yplt.figure(figsize=(8,6))fortarget,colorinzip([0,1,2],colors):plt.scatter(lda_df[lda_df['target']==target]['LD1'],lda_df[lda_df['target']==target]['LD2'],color=color,label=iris.target_names[target])plt.title('LDAofIrisDataset')plt.xlabel('LinearDiscriminant1')plt.ylabel('LinearDiscriminant2')plt.legend()plt.grid()plt.show()第十一章1.填空题未标记生成模型和判别模型2.简答题1)半监督聚类和一般聚类算法的区别半监督聚类与一般聚类算法的主要区别在于使用的标签信息:数据类型:一般聚类算法只依赖于未标记的数据进行学习,试图根据数据的内在结构将其划分为不同的簇。半监督聚类算法同时利用未标记数据和少量标记数据,通过已知类别的信息来指导聚类过程。目标:一般聚类旨在发现数据的自然结构,没有考虑预先定义的标签。半监督聚类则希望在聚类的同时借助标签信息来提升聚类效果,使得结果更符合已知的类别结构。效果:半监督聚类通常能在标记数据稀缺的情况下取得更好的聚类质量,因为它能结合标签信息优化簇的划分。2)基于朴素贝叶斯模型推导生成式半监督学习算法假设样本类别数等于朴素贝叶斯模型的类别数,而且第i个样本类别对应于第i个模型类别,同样不再区分y和θ。另外假设样本中每个特征取值为离散值。朴素贝叶斯模型p==其中i为类别索引号,共有N个类别,f为特征索引号,共有n个不同特征;αi=py=i,βi,f,xj=pxf似然函数LL==其中,xjf表示样本xj的第EM算法求解参数E步对于无标记样本:

温馨提示

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

评论

0/150

提交评论