Python数据分析与可视化案例教程-第4章 分类分析与可视化_第1页
Python数据分析与可视化案例教程-第4章 分类分析与可视化_第2页
Python数据分析与可视化案例教程-第4章 分类分析与可视化_第3页
Python数据分析与可视化案例教程-第4章 分类分析与可视化_第4页
Python数据分析与可视化案例教程-第4章 分类分析与可视化_第5页
已阅读5页,还剩69页未读 继续免费阅读

下载本文档

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

文档简介

Python数据分析与可视化案例教程第4章分类分析与可视化主讲人:XXX教师XXX学院(系)日期:202X年XX月什么是分类分析?核心定义:分类是一种有监督学习方法,通过学习已知类别的训练数据构建预测模型,从而对未知类别的新数据进行类别判断与归属划分,是机器学习中解决离散输出问题的核心技术之一。金融风控·信用评分基于用户历史数据预测信用等级,辅助信贷审批与风险评估,降低坏账率。安全防护·欺诈检测识别异常交易与行为模式,实时拦截金融欺诈与网络攻击,保障资产安全。智慧医疗·辅助诊断结合医学影像与病历数据,快速识别病灶并辅助医生诊断,提升准确率。合规与伦理警示:模型应用需严守《个人信息保护法》,在数据采集、训练及应用全流程中,坚守隐私保护与算法公平原则,杜绝数据滥用与算法歧视,确保技术向善。本章学习目标(一)聚焦分类任务的底层逻辑,从核心概念、关键阶段到完整工作流,构建系统化的理论认知体系,为后续算法学习筑牢基础。01核心概念锚定透彻理解有监督学习的本质内涵,明确输入特征与输出标签的对应关系,厘清分类任务在机器学习体系中的定位与核心价值。02关键阶段拆解深度掌握分类的两个关键阶段:训练学习阶段的模型参数拟合与规则生成,以及预测分类阶段的未知样本类别判定,理解两阶段的逻辑闭环。03全流程闭环认知清晰梳理分类任务的完整工作流,涵盖数据采集清洗、特征工程构建、模型训练调优、效果评估验证至最终部署应用的全链路环节。学习点睛:分类是机器学习中应用最广泛的任务之一,掌握其基础范式是后续深入学习逻辑回归、决策树、支持向量机等经典算法的前提,建议结合垃圾邮件识别、疾病诊断等实际场景来加深理解。本章学习目标(二)核心概念深度解析透彻理解信息熵、信息增益及基尼指数的数学内涵,掌握衡量数据集纯度与不确定性的关键指标,明晰不同指标在特征选择中的适用场景与优劣差异。经典算法体系构建系统掌握ID3、C4.5与CART三种经典决策树算法的核心构建逻辑,对比不同算法在特征划分标准、连续值处理及剪枝策略上的区别,学会根据数据特性选择适配模型。实战实现与可视化基于Python语言实现决策树模型的核心代码逻辑,利用专业工具对训练后的模型进行结构可视化与决策路径分析,将理论知识转化为可落地的实战编程能力。学习关键:决策树不仅是经典的监督学习模型,更是理解集成学习(如随机森林)的基础。本章将帮助你打通从理论原理到代码实现的全链路,真正掌握“如何分”与“分什么”的核心逻辑。本章学习目标(三)03核心算法:逻辑回归&KNN逻辑回归:概率视角的分类

深入理解Sigmoid函数如何将线性预测转化为0-1概率,掌握二分类问题的数学建模逻辑。K近邻:近朱者赤的朴素智慧

理解“物以类聚”的核心思想,掌握距离度量方式(如欧氏距离)与K值选择对结果的影响。算法选型与应用场景

能够分析两种算法的优缺点,针对不同的业务场景(如数据规模、特征类型)选择合适模型。04综合实战:鸢尾花物种分类基于经典的鸢尾花数据集,我们将从0到1完成一个完整的机器学习项目,打通从数据处理到模型部署的全链路。数据洞察

可视化分布

特征相关性分析模型构建

算法对比训练

超参数调优效果评估

混淆矩阵

准确率与召回率💡核心产出:完成一份可复现的项目分析报告,掌握机器学习项目的标准工作流。分类的基本概念01/核心定义分类是数据挖掘与机器学习中一种经典的有监督学习方法,其本质是从数据特征到类别的映射过程,旨在通过对已知信息的学习来识别未知数据的归属。02/核心目标利用带有明确类别标签的历史数据构建模型,挖掘特征与类别间的潜在规律,从而对无标签的新数据对象进行类别判定,实现对数据的有效归类与预测。有监督学习训练数据包含明确的“标准答案”(类别标签),模型通过学习输入特征与输出标签之间的关联来掌握规律,是分类任务的基础前提。分类模型从历史数据中归纳出的数学规则或算法模型,是连接特征与类别之间的桥梁。模型的质量直接决定了分类预测的准确性与泛化能力。预测判定将训练好的模型应用于未见过的新数据,通过计算输出其所属类别。这是分类技术的最终目的,广泛应用于垃圾邮件识别、疾病诊断等场景。分类的实现过程01学习阶段(Training)以包含明确输入属性与输出类别的训练集为基础,通过分类算法对数据进行归纳学习,从中提炼出特征与类别间的潜在规律,最终构建出可复用的分类模型与规则。02分类阶段(Classification)将待测样本或测试集输入模型进行类别预测;同时利用带标签的测试集与预测结果对比,评估模型的准确率与泛化能力,形成完整的验证闭环。分类的一般流程(一)Step01·数据准备与预处理——从源头把控数据质量,为模型训练筑牢坚实基础01数据清洗针对原始数据中的缺失、噪声与异常值进行系统性处理。通过均值填补、平滑去噪及统计识别等手段,剔除无效干扰,确保输入数据的准确性与纯净度,为模型提供可靠原料。02特征选择基于相关性分析与重要性评估,筛选出对分类结果有显著影响的核心特征。剔除冗余、无关或共线性特征,降低计算复杂度,减少过拟合风险,让模型聚焦于关键信息。03数据转换进行标准化、归一化或离散化等变换。消除特征间的量纲差异与数值尺度影响,将数据映射至合适区间,确保模型能公平学习各特征权重,提升算法收敛速度与预测精度。💡核心原则:数据预处理是决定模型上限的关键环节。遵循“GarbageIn,GarbageOut”法则,高质量的输入数据是模型获得可靠输出结果的前提与保障。分类的一般流程(二)02/训练集与测试集划分核心逻辑:独立拆分将原始数据集严格拆分为两个互不相交的子集,消除数据泄露风险,为后续模型的训练与客观评估建立坚实基础。经典配比:7:3或8:2行业通用的黄金分割比例,大部分数据用于模型学习特征规律,保留小部分数据作为“考题”,模拟真实应用场景。核心价值:泛化验证防止模型对训练数据产生“过拟合”,通过测试集客观度量模型对未知数据的适应能力,确保模型具备实用价值。原始数据集全部样本(100%)训练集(70%)用于模型学习、参数调优与规则构建测试集(30%)用于模拟真实环境,评估模型预测效果分类的一般流程(三)STEP03模型训练:从数据到智能的核心转化数据驱动的学习将预处理好的训练集数据(特征+标签)输入分类算法,算法通过迭代计算自动调整内部参数,不断降低预测误差,从而从数据中归纳出分类规律。多元算法矩阵涵盖决策树、贝叶斯分类器、支持向量机(SVM)及神经网络等经典与现代算法。不同算法基于不同的数学原理,可根据数据特征(如线性/非线性、规模大小)灵活选择。生成预测模型训练的直接产出是一个“分类模型”。它是学习成果的固化载体,能够接收新的未知数据,并依据学习到的规律快速输出类别预测,是解决实际分类问题的关键。💡核心目标:让算法从数据中归纳出特征与类别间的映射逻辑,构建出具备泛化能力的智能判断系统,实现从“经验”到“智能”的跨越。分类的一般流程(四)STEP04/模型评估模型训练完成后,需将测试集数据输入模型进行预测,并将输出结果与真实标签逐一比对。通过多维度的量化指标,从不同角度客观衡量模型的预测性能与泛化能力,为模型优化提供依据。准确率预测正确的样本占总样本的比例,是最直观反映模型整体预测正确性的基础指标。精确率在所有被预测为正类的样本中,实际确实为正类的比例,重点关注预测结果的精准度。召回率在所有实际为正类的样本中,被模型成功预测出来的比例,衡量模型的查全能力。F1分数精确率与召回率的调和平均数,用于综合评估模型性能,尤其适合不平衡数据集。ROC/AUC通过ROC曲线及其下方面积(AUC),反映模型在不同分类阈值下对正负样本的区分能力。分类的一般流程(五)05模型优化与参数调优科学调优手段:采用交叉验证、网格搜索等方法替代经验试错,对模型超参数(如正则化系数、树深度)进行系统性寻优,找到性能最佳的参数组合。核心目标:打破过拟合与欠拟合的平衡,最大化模型对未知数据的泛化能力,确保模型在真实场景中依然稳定可靠,而非仅在训练数据上表现优异。06模型应用与落地部署工程化落地:将训练好的模型封装为API接口或部署为微服务,集成至业务系统(如APP、风控平台)中,实现对新数据的实时或离线分类预测。价值转化:基于模型输出的结果辅助业务决策,例如智能风控拦截欺诈交易、个性化推荐提升用户体验,让算法模型真正赋能业务增长与效率提升。迭代思维:模型上线并非终点,而是迭代的起点。需持续监控数据分布变化(DataDrift),定期进行模型重训与更新,以适应业务场景的动态发展。常用分类方法(一)决策树(DecisionTree)▍核心逻辑:通过树形结构递归划分数据,模拟人类“分而治之”的决策思维,从根节点层层向下,最终在叶节点输出分类结果。▍主流算法:ID3(基于信息增益)、C4.5(信息增益比)、CART(基尼系数),可灵活应用于分类与回归任务。▍核心优势:模型具备极强的可解释性,决策过程清晰透明;无需复杂的数据预处理,对异常值不敏感,适合处理非线性特征。朴素贝叶斯(NaiveBayes)▍核心逻辑:基于贝叶斯定理,假设特征之间相互独立,通过先验概率快速计算后验概率,从而判断样本所属类别。▍主流算法:高斯NB(处理连续数值特征)、多项式NB(高频用于文本分类)、伯努利NB(适用于二值特征数据)。▍核心优势:计算复杂度极低,训练与预测速度极快;模型简单且鲁棒性强,对小规模数据集和高维稀疏数据(如文本)表现优异。💡应用洞察:决策树适合需要向用户解释“为什么”的场景(如信贷风控),而朴素贝叶斯则是处理文本分类、垃圾邮件过滤等任务的首选基线模型。常用分类方法(二)01K近邻(KNN)核心逻辑:近朱者赤

基于样本间的距离度量相似度,一个样本的类别由其周围最近的K个邻居的“多数投票”决定。经典变种:灵活适配

朴素KNN(平等权重)、加权KNN(距离越近权重越高)、KD-Tree(优化高维搜索效率)。核心优势:简单直观

无需训练过程,模型解释性极强;对异常值不敏感,适用于多分类与推荐系统等场景。02支持向量机(SVM)核心逻辑:最大间隔

在特征空间中寻找一个最优的“超平面”,使得不同类别的样本之间的间隔达到最大化,实现精准分割。经典变种:泛化拓展

线性可分SVM、核函数SVM(处理非线性问题)、SMO算法(高效求解优化问题)。核心优势:稳健高效

在高维空间表现优异,泛化能力强不易过拟合;特别适合小样本数据集,分类边界极其稳健。💡关键差异洞察:KNN属于“惰性学习”,无需训练,随查随算,适合对实时性要求不高的场景;而SVM是“主动学习”,通过训练求解最优超平面,在处理复杂分类边界时更具优势。常用分类方法(三)01逻辑回归功能定位:利用Sigmoid函数将输出映射到0-1概率区间,是经典的线性二分类模型。核心算法:梯度下降法(批量/随机梯度下降)💡优势:计算效率极高,训练速度快,结果具备很强的可解释性。02神经网络功能定位:模拟人脑神经元连接结构,通过多层网络深度捕捉复杂的非线性特征。核心算法:MLP多层感知机、BP反向传播、CNN卷积网络💡优势:具备强大的特征提取能力,是处理图像、语音等高维数据的首选。03集成学习功能定位:通过组合多个基础分类器的预测结果,以“集体智慧”提升模型表现。核心算法:随机森林、XGBoost、LightGBM、AdaBoost💡优势:有效降低过拟合风险,大幅提高模型的泛化能力与预测准确率。📝学习小结:从简单高效的逻辑回归,到深度拟合的神经网络,再到集思广益的集成学习,算法的选择取决于数据的复杂度、维度以及对模型可解释性的具体要求。什么是决策树?基本定义一种基于树形结构的**有监督机器学习模型**,广泛应用于分类预测与回归分析任务,是最经典、最直观的判别式模型之一。核心逻辑通过对数据特征进行递归划分,将复杂的样本空间切分为互不重叠的子区域。每一个子区域都对应着一个明确的决策结果,实现从特征到输出的精准映射。通俗类比就像一棵“倒置的树”,从根节点开始,通过层层递进的“是/否”式提问不断分支。每一个分支都是一次判断,最终在叶节点得出明确的结论,过程简单且直观。💡关键洞察:决策树的本质是将复杂的决策过程拆解为一系列简单的二元判断。它不仅是强大的预测工具,更是具有极高可解释性的“白盒模型”,非常适合用于需要理解决策过程的场景。决策树的组成图示为典型的决策树层级结构,直观呈现了从根节点到叶节点的信息传递与分支逻辑,是理解决策过程的基础模型。01根节点位于树的最顶层,是整个决策的起点,代表未经过任何划分的原始数据集全集。02内部节点处于树的中间层级,代表对某个特征或属性的判断测试,其作用是将数据集向下划分为不同的子集。03叶节点树的终端节点,不再产生分支。它代表最终的决策结果,即数据所属的类别标签或回归值。04边(分支)连接父节点与子节点的线段,每条边代表一个特征的可能取值或测试结果,决定了数据样本在树中的流动方向。05决策路径从根节点出发到任意一个叶节点的完整链路。每一条路径都对应着一条具体的分类或回归规则,是对样本进行预测的依据。如何构建一棵决策树?(一)锁定核心目标从数据集的所有候选特征中,筛选出“最优特征”作为首个划分依据。这一步的核心是找到最能体现数据差异、让分类结果更纯粹的特征维度,是构建树的第一步。量化评估指标通过数学指标客观衡量特征价值:

1.信息增益:计算划分前后信息熵的差值,值越大区分度越好;

2.基尼系数:衡量数据集的不纯度,系数越小纯度越高。生成根节点基于评估结果确定全局最优特征,以此构建决策树的根节点。这是整棵树的起点,决定了数据的首次分流路径,直接影响后续分支的生长方向和模型的最终精度。核心洞察:特征选择是决策树的“开山之斧”,它决定了树的初始结构。选择不当的根节点会导致后续分支无论如何优化,都难以弥补先天的信息损失。如何构建一棵决策树?(二)02核心步骤:数据分割与递归基于第一步选定的最优特征,将原始数据集按照特征的不同取值,切分为若干个互不重叠的子集。这是决策树从根节点向下生长出分支的核心动作,决定了树的结构走向。子集纯净→生成叶节点如果分割后的子集纯度足够高(样本几乎都属于同一类别),则无需继续划分。此时构建“叶节点”,直接输出该类别作为此分支的最终决策结果,分支生长停止。类别混杂→递归寻找特征如果子集仍存在多种类别混杂,则对每个子集**递归执行**“特征选择→数据分割”的流程。这个过程会一直重复,直到所有分支都满足停止条件,最终形成一棵完整的决策树。💡核心思想:决策树的构建是典型的“分而治之”策略,每一层的分割都在追求子集的“高纯度”,从而实现对数据的精准分类与预测。如何构建一棵决策树?(三)01/核心步骤:树的构建与停止递归生长机制

对分支子集重复执行「特征选择→数据分割」流程,层层向下构建子树,形成多层级的决策分支结构。01纯节点判定

节点内所有样本归属同一类别,无需再分裂。02深度阈值

树的层级达到预设最大值,强制停止生长。03样本量不足

叶节点样本数低于最小值,无法继续分割。04无可用特征

特征已耗尽或无显著区分能力。02/关键优化:决策树剪枝(可选)为何需要剪枝?

决策树极易因过度生长导致“过拟合”。剪枝通过移除冗余分支降低复杂度,提升模型对未知数据的泛化能力。🌱预剪枝(Pre-pruning)·源头控制

在树生长过程中提前干预(如限制最大深度、设置叶节点最小样本数),从根本上防止树过于复杂。✂️后剪枝(Post-pruning)·事后优化

让树完全生长至最大规模后,自底向上评估并裁剪掉对模型精度贡献极小的分支,效果通常更好但计算成本较高。特征选择标准(一):信息熵(Entropy)图:信息熵随概率分布变化的曲线趋势01核心定义信息熵是度量信息不确定性的量化指标,用于反映数据集的混乱程度。数据类别越混杂,熵值越高;类别越单一,熵值越低。02数学表达H(D)=-∑(pᵢ·log₂pᵢ)其中D为样本集合,pᵢ为第i类样本在D中的出现概率,n为类别总数。03核心逻辑熵值与不确定性呈正相关:熵越大,数据越混乱。决策树的目标就是通过特征划分,让子集的熵值尽可能降低,实现“纯度”提升。信息熵计算示例样本背景:现有一个包含14个样本的二分类数据集,其中“是”(正例)9个,“否”(反例)5个。我们将通过信息熵公式,量化该数据集的纯度与不确定性。01计算类别占比首先统计各类别在总样本中的出现概率:

p(是)=9/14≈0.643

p(否)=5/14≈0.35702代入熵公式根据熵的定义公式H(D)=-Σp(x)·log₂p(x):

H(D)=-(9/14)log₂(9/14)-(5/14)log₂(5/14)03最终结果求值经过对数运算与求和计算:

H(D)≈-0.643×(-0.620)-0.357×(-1.485)

最终熵值:H(D)≈0.940结果解读:该熵值0.940接近最大值1,表明数据集具有较高的不确定性,样本类别分布较为分散。熵值越接近1,代表数据越混乱、纯度越低;若熵值为0,则表示数据完全纯净(所有样本属于同一类别)。特征选择标准(二):条件熵(ConditionalEntropy)01核心定义条件熵H(D|A)衡量的是:在已知特征A的具体取值后,数据集D关于类别标签的剩余不确定性。它反映了特征对分类结果的“解释力”,是评估特征重要性的基础指标。02计算公式H(D|A)=Σ(|Di|/|D|)H(Di)参数解析:•A:待考察的特征属性•Di:按特征A划分的第i个子集•H(Di):子集Di的经验熵03价值判断越小越好:条件熵越低,说明特征A提供的信息越能有效降低数据的不确定性,即特征区分度越强。例如:已知“天气”后,“是否打球”的不确定性大幅下降,说明“天气”是强相关特征。💡核心关联:条件熵是计算“信息增益”的关键部分,而信息增益正是ID3决策树算法选择最优特征的依据。特征选择标准(三):信息增益(InformationGain)01核心定义指通过获取特征A的信息后,使得样本类别Y的信息不确定性减少的程度。它量化了特征对消除类别模糊性的贡献价值,是衡量特征重要性的基础指标。02计算逻辑Gain(D,A)=H(D)-H(D|A)由总熵H(D)(数据固有混乱度)减去条件熵H(D|A)(已知特征A后的剩余混乱度)得到,差值即为不确定性的减少量。03算法决策信息增益越大,代表该特征对分类的贡献越强。在ID3决策树算法中,我们会优先选择信息增益最大的特征作为当前节点的划分依据,以实现最优分类。关键洞察:信息增益的本质是“熵减”过程。一个特征如果能最大程度地降低数据的无序性,它就是最好的分类器。这一准则直接决定了决策树的生长方向和结构质量。信息增益计算示例01基础数据(熵值)总熵H(D)≈0.940,即数据集的初始不确定性

条件熵H(D|天气)≈0.694,即已知天气后的剩余不确定性02信息增益计算Gain(D,天气)=H(D)-H(D|天气)=0.940-0.694

计算结果=0.246天气特征0.246

增益值最高,区分度最好湿度特征0.151

次于天气,有一定区分度风力特征0.048

增益较低,区分度一般温度特征0.029

增益最低,区分度最差决策结论:“天气”特征的信息增益在所有特征中最大,意味着它能为分类系统消除最多的不确定性,因此在构建决策树时,应优先选择“天气”作为根节点。特征选择标准(四):基尼指数(GiniIndex)图示:基尼系数用于衡量分配的公平性与数据集的纯度,曲线面积反映了不纯度的程度。01核心定义:衡量数据集的“不纯度”用于度量数据集中样本类别的不一致性。直观理解为:从数据集中随机抽取两个样本,其类别标签不相同的概率。数值越高,代表数据越混乱、纯度越低。02数学表达与取值范围公式:Gini(t)=1-∑(pi²)(pi为节点t中第i类样本占比)。

范围:0(所有样本同类,纯度最高)~0.5(样本均匀分布,纯度最低)。03特征选择准则:最小基尼指数我们的目标是找到使划分后子节点基尼指数加权和最小的特征。这意味着划分后的子集尽可能“纯净”,从而降低分类错误的概率,是CART决策树的核心划分依据。ID3算法全称定义:IterativeDichotomiser3(迭代二叉树3代),是由RossQuinlan提出的经典决策树生成算法,也是后续C4.5、CART等算法的重要基础。核心思想:以信息增益作为特征选择的核心准则,递归地选择当前信息增益最大的特征来划分数据集,从而构建决策树模型。专注分类问题专为离散类别输出设计,是解决分类任务的基础算法,无法直接处理连续数值型的回归预测场景。仅支持离散特征算法天然限制为处理离散型输入。若面对连续型特征(如温度、价格),必须先进行离散化预处理才能使用。存在过拟合隐患缺乏剪枝优化机制,容易生成深度过深、分支过细的树结构,导致模型对训练数据过度拟合,泛化能力较弱。生成多叉决策树根据特征的所有可能取值进行分支,而非仅生成是/否的二叉分支,树结构呈现自然的多叉形态,表达能力更强。ID3算法描述01输入条件训练数据集D、特征集A、阈值C,作为算法的初始输入参数,为决策树构建提供基础数据支撑与划分依据。02输出结果生成一棵完整的决策树T,能够对未知实例进行高效的分类预测,清晰体现数据内在的分类决策逻辑与规则。1.递归终止若数据集内所有实例归为同一类别,或无剩余特征可用于划分,则终止当前分支,直接标记为叶节点。2.选最优特征计算所有候选特征的信息增益,选取增益值最大的特征Ag,作为当前非叶节点的最优划分属性。3.分割数据集依据最优特征Ag的不同取值,将原数据集D切分为若干互不相交的子集,确保各子集数据特征一致。4.递归建子树对每个数据子集,递归调用ID3算法生成子节点,逐层向下扩展,直至所有分支满足终止条件。ID3算法案例:是否外出打球(一)经典入门:决策树的直观理解数据集背景:这是机器学习领域最经典的决策树教学案例之一,包含14条历史记录,每条记录对应一天的天气状况及是否外出打球的真实结果。学习目标:基于天气、温度、湿度、风力四个关键属性,利用ID3算法构建分类模型,自动归纳出决定是否打球的决策规则。💡算法核心:ID3算法会通过计算每个特征的“信息增益”来选择最优分裂属性,优先选择能最大程度降低数据不确定性的特征作为根节点。表4-2历史天气与打球记录(节选)序号天气温度湿度是否打球1晴高高否2晴高高否3阴高高是4雨中高是5雨低中是说明:真实场景中包含更多样的天气组合(如多云、大风等),数据的多样性是训练出有效决策模型的关键。ID3算法案例:计算过程(二)STEP01初始熵首先计算数据集D的整体不确定性(总熵):

H(D)≈0.940STEP02各特征信息增益计算结果特征:天气(Outlook)增益值:0.246(MAX)特征:湿度(Humidity)增益值:0.151特征:风力(Wind)增益值:0.048特征:温度(Temp)增益值:0.029STEP03决策结果:对比所有特征的信息增益,“天气”特征的增益值最大。根据ID3算法“选择信息增益最大的特征作为当前节点”的规则,我们将“天气”作为决策树的根节点。ID3算法案例:生成决策树(三)根节点判定:选择“天气”作为首个划分特征基于信息增益最大化原则,“天气”对数据集的分类区分度最高,作为决策树的根节点,将数据分为三个互斥子集进行后续处理。分支一:天气=多云该子集内所有样本的决策结果均为“是”,纯度为100%,无需继续划分,直接生成叶节点。➜结论:去打球(Yes)分支二:天气=晴子集样本结果不一致,需计算剩余特征(湿度、风力等)的信息增益,选择区分度最高的特征。➜继续划分:湿度分支三:天气=雨子集样本结果仍有分歧,需进一步筛选特征,计算各特征的信息增益比,确定下一层节点。➜继续划分:风力ID3算法Python实现:数据准备#导入数据分析库importpandasaspd#定义天气数据集(特征+标签)data={'天气':['晴','多云','雨'],'是否打球':['否','是','是']}#转换为结构化DataFrame对象df=pd.DataFrame(data)结构化数据建模将非结构化的现实特征(如天气、温度)转化为二维表格结构,清晰定义特征属性与分类标签,是算法计算的基础。Pandas向量化引擎利用Pandas底层优化的C语言扩展,实现对大规模数据集的快速加载、清洗与统计,避免低效的循环操作。无缝衔接算法生态DataFrame格式可直接转化为NumPy数组,完美兼容Scikit-learn等机器学习库,为后续的决策树训练铺平道路。💡关键提示:数据的质量直接决定模型的上限。在准备阶段,务必确保特征数据的一致性与完整性,避免因脏数据导致的计算偏差。ID3算法Python实现:计算信息熵#导入数学库,用于对数计算importmathdefcalculate_entropy(data):total=len(data)#获取数据集总样本量#统计目标列各类别的出现次数counts=data['是否打球'].value_counts()entropy=0.0forcntincounts:#遍历计算各类别熵值prob=cnt/totalentropy-=prob*math.log2(prob)returnentropy01.函数封装与输入定义可复用的计算函数,接收结构化的PandasDataFrame数据集,聚焦目标分类列(如“是否打球”),为决策树的节点分裂提供基础支持。02.频次统计与概率计算利用value_counts()快速统计各类别样本出现的频次,计算每个类别在数据集中的占比概率,这是衡量数据混乱程度的必要前提。03.香农熵公式迭代求和遍历所有类别概率,依据公式H=-Σ(p*log2(p))进行累加运算。熵值越高代表数据越混乱(纯度越低),反之则越纯净。💡核心意义:信息熵是ID3算法选择“最优划分特征”的核心依据。我们通过计算划分前后的熵减(信息增益),来判断哪个特征能最大程度降低数据的不确定性。ID3算法Python实现:计算信息增益#定义函数:计算特征的信息增益

defcalculate_gain(data,feature):

total_ent=calculate_entropy(data)

values=data[feature].unique()

weighted_ent=0

forvalinvalues:

subset=data[data[feature]==val]

weighted_ent+=(len(subset)/len(data))*calculate_entropy(subset)

returntotal_ent-weighted_ent代码解析:函数接收数据集和特征名,先计算整体熵,再按特征取值拆分数据,计算各子集的加权熵,最终返回总熵与加权熵的差值,即该特征的信息增益。01.计算全局总熵以整个数据集为样本,计算其初始熵值,它反映了数据分类结果的整体混乱程度,是后续计算的基础基准。02.计算特征条件熵按特征的不同取值将数据划分为多个互斥子集,分别计算每个子集的熵,并根据各子集的样本数量占总样本的比例,计算加权平均后的条件熵。03.求解信息增益用全局总熵减去该特征的条件熵,差值即为信息增益。增益越大,表明该特征对降低数据不确定性、提升分类纯度的贡献越大。ID3算法Python实现:选择最佳特征▍核心函数:choose_best_feature#遍历特征计算增益,返回最优特征

defchoose_best_feature(data):

best_gain,best_feat=0,None

forfeatindata.columns[:-1]:

gain=calculate_gain(data,feat)

ifgain>best_gain:

best_gain,best_feat=gain,feat

returnbest_feat01.遍历特征空间自动扫描数据集中除目标标签外的所有特征维度,逐一进行评估,确保不遗漏任何潜在的有效分类依据。02.量化信息增益调用信息增益计算函数,量化每个特征对样本集合的“纯度提升”效果,数值越高代表分类区分能力越强。03.锁定最优特征对比所有特征的增益结果,筛选出增益最大的特征作为当前决策树节点的分裂依据,驱动树的生长。💡核心逻辑:该函数是ID3算法的“决策引擎”,通过信息增益量化特征价值,为树的每一层选择最佳分裂点,是生成高效决策树的关键步骤。ID3算法Python实现:构建决策树#核心递归构建函数defbuild_tree(data):#1.递归终止条件判定ifcheck_terminate(data):returnget_label(data)#2.选择信息增益最大的特征best_feat=choose_best_feature(data)tree={best_feat:{}}#3.遍历特征值,递归构建子树forvalinget_unique_vals(data,best_feat):tree[best_feat][val]=build_tree(split_data(data,best_feat,val))returntree01递归终止条件判定检查样本是否全属于同一类别,或特征集合为空。若满足则停止递归,返回当前节点的类别标签,这是防止无限递归的关键。02筛选最优划分特征基于信息增益指标,计算并选择能使数据集分类纯度提升最大的特征作为当前节点,这是ID3算法“贪婪”策略的体现。03迭代生成子树分支按最优特征的不同取值将数据集划分为若干子集,对每个子集递归调用构建函数,逐步向下生长出完整的树形结构。核心逻辑:该函数是ID3算法的实现核心,采用“自顶向下、分而治之”的递归策略。每一步都贪婪地选择信息增益最大的特征进行分裂,直到所有子集都被正确分类,最终形成可用于分类预测的决策树模型。ID3算法Python实现:测试与输出01核心代码逻辑实现#1.训练生成决策树模型tree=build_tree(df)#传入预处理后的数据集#2.定义递归预测函数defpredict(node,sample):#递归终止条件:到达叶子节点ifnotisinstance(node,dict):returnnodekey=next(iter(node))returnpredict(node[key][sample[key]],sample)02模型输出与预测验证{"天气":{"晴":{"湿度":{"高":"否","中":"是"}},"多云":"是","雨":{"风力":{"弱":"是"}}}}预测结果:符合预期逻辑输入样本:天气为“晴”,湿度为“高”

模型输出:否(不适合外出)

验证结论:代码生成的树结构与人工推导完全一致,递归预测逻辑正确。C4.5算法:ID3的改进版核心改进:增益率准则摒弃ID3的“信息增益”标准,改用信息增益率(GainRatio)作为特征划分依据。通过引入归一化因子,修正了特征选择的权重偏差,让评价体系更客观。数学原理:公式拆解GainRatio=Gain/SplitInfo其中SplitInfo(分裂信息)是对特征的惩罚项。特征取值数量越多,该值越大,从而拉低整体增益率,有效抑制对多值特征的过度偏好。核心优势:平衡偏差有效克服了ID3倾向于选择取值较多特征的固有缺陷,避免了模型因“伪特征”导致的过拟合。这使得生成的决策树结构更合理,分类准确率和泛化能力显著提升。关键洞察:C4.5通过“归一化”处理,让不同取值数量的特征站在同一基准线上公平竞争。它不仅是ID3的升级版,更是后续CART、随机森林等现代集成学习算法的重要基石。CART算法:分类与回归树CART(ClassificationandRegressionTree)是一种经典的非参数监督学习算法,以简洁的二叉树结构为核心,能够同时解决分类与回归两类核心机器学习任务,也是随机森林、GBDT等高级集成算法的基础组件。分类回归双兼容打破任务边界,既能处理离散标签的分类问题(如垃圾邮件识别),也能解决连续数值的回归预测(如股价走势),适应多场景建模需求。精准的特征划分准则分类任务采用基尼指数衡量节点纯度,回归任务使用最小二乘偏差(LSE),通过最小化不纯度实现最优特征分割,提升模型拟合度。高效的二叉树结构所有内部节点均为二元划分(是/否分支),结构更简单,计算复杂度更低。相较于多叉树,二叉树在搜索、剪枝和并行计算上具有显著的效率优势。全数据类型无缝适配无需繁琐的特征预处理,可直接兼容离散型特征(如性别、职业)与连续型特征(如年龄、收入),极大简化了数据清洗与特征工程的流程。使用sklearn构建决策树核心模块:fromsklearn.treeimportDecisionTreeClassifierScikit-learn中封装决策树分类器的核心类,内置高效优化算法,支持灵活的参数配置以适配不同数据场景。01criterion特征选择决定节点分裂的评判标准,是决策树的“大脑”。'gini'(默认):基于基尼不纯度,计算效率高,适合处理大规模数据集。'entropy':基于信息熵,对数据纯度的差异变化更为敏感。02max_depth深度限制限制树的纵向生长深度,是防止模型过拟合的核心手段。作用机制:防止树过度生长,避免学习到训练数据中的随机噪声。调优建议:从3、5、10等较小值开始尝试,观察验证集效果。03min_samples_split分裂阈值定义节点进行分裂所需的最小样本数量,控制模型复杂度。阈值规则:样本数小于该值时,节点停止分裂,转为叶节点。效果:值越大,生成的树越简单,泛化能力通常越强。💡工程实践技巧:不要直接使用默认参数!建议使用`GridSearchCV`进行超参数网格搜索,并结合交叉验证来寻找最优参数组合,这能显著提升模型的泛化性能和鲁棒性。使用sklearn构建决策树01核心方法Methodsfit(X,y)·模型训练利用训练集(X,y)让模型学习数据规律,是构建决策树、完成参数拟合的核心步骤,为后续预测提供基础。predict(X)·分类预测输入新的特征数据X,模型依据已学规则,快速输出每个样本的预测分类结果,实现对未知数据的推理判断。score(X,y)·性能评估输入测试集的特征与真实标签,自动计算并返回模型的平均预测准确率,是快速衡量模型泛化能力的指标。02关键属性Attributesfeature_importances_|特征重要性权重返回数组形式的权重值,反映各特征在决策树分裂时的贡献度。数值越高代表该特征对分类结果的影响越大,可用于特征筛选,帮助我们理解哪些因素对预测结果起关键作用。tree_|决策树结构对象存储决策树的完整结构与节点信息,是实现可视化的核心入口。配合`plot_tree`或`export_graphviz`工具,可将抽象的决策逻辑转化为直观的树形图,清晰展示分支条件与分类路径,便于模型调试与解读。决策树可视化核心调用:sklearn.tree.plot_tree——将训练好的决策树模型转化为直观的树形结构图,是实现模型可解释性与结果分析的关键工具。decision_tree传入训练完成的决策树模型实例(如DecisionTreeClassifier),是生成可视化图形的核心数据源。feature_names指定特征名称的字符串列表,使决策节点上的判断条件显示为易读的特征名,而非默认的索引数字。class_names用于分类任务,显示叶节点的类别名称。可传入类别名列表,或设为True以显示类别索引。filled(填充颜色)布尔值参数,设为True时,根据节点的类别(分类树)或回归值(回归树)自动填充颜色,增强不同节点的视觉区分度,大幅提升图表可读性。rounded(圆角矩形)布尔值参数,控制节点形状。设为True时,将默认的直角矩形节点替换为圆角矩形,使整体图表风格更柔和、现代,避免视觉上的生硬感。决策树案例:贷款审批(一)以真实信贷风控场景为切入点,深入解析从业务特征理解、数据预处理到模型适配的全流程,重点攻克分类特征数值化的关键技术。01核心预测目标基于申请人的年龄、婚姻状态、信用评级及年收入四大关键维度,构建二分类决策模型,智能输出“批准”或“拒绝”的信贷审批结果,辅助风控决策。02数据集特征构成包含20条真实信贷申请样本,融合分类特征(如婚否、信用度)与数值特征(如年收入)。标签为二元离散结果,数据虽精简但极具业务代表性。03分类特征编码因模型仅支持数值输入,需使用LabelEncoder将字符串标签(如“青年”)转化为0/1/2等数字,完成数据格式适配。▍LabelEncoder编码转换实操示例特征:婚姻状况原始:{“否”,“是”}→编码:{0,1}

将布尔型分类特征转化为二元数值标识特征:年龄层次原始:{“青年”,“中年”,“老年”}→编码:{0,1,2}

多分类文本特征映射为连续整数序列特征:信用评级原始:{“优”,“良”,“差”}→编码:{0,1,2}

有序分类特征保持逻辑顺序的数值化决策树案例:贷款审批(二)train_tree.py—核心实现代码fromsklearn.treeimportDecisionTreeClassifier,plot_treeimportmatplotlib.pyplotasplt#1.初始化模型:CART算法+深度限制clf=DecisionTreeClassifier(criterion="gini",max_depth=3)clf.fit(X_train,y_train)#2.训练模型#3.可视化:填充颜色与圆角样式plot_tree(clf,filled=True,rounded=True,class_names=["拒绝","批准"])核心训练参数配置使用CART算法(基尼系数)作为分裂准则,通过max_depth=3限制树的深度,既能防止模型过拟合,又能保持决策逻辑的简洁性,便于人工复核。可视化与可读性优化通过filled=True为不同类别节点填充颜色,rounded=True优化视觉样式。指定特征与类别名称,将抽象的模型结构转化为直观的业务决策树,提升沟通效率。从模型到业务规则的转化决策树不仅是预测工具,更是“白盒”模型的典范。它将复杂的审批逻辑显性化,帮助风控团队快速理解模型决策依据,甚至直接转化为可执行的业务审批规则。💡实践技巧:在真实场景中,建议结合GridSearchCV对max_depth、min_samples_leaf等参数进行网格搜索,以找到最佳模型平衡点。决策树案例:贷款审批(三)图示:基于“信用度、年龄”等特征生成的决策树结构根节点锚定:信用度为首要特征模型以“信用度”作为首次分裂的根节点,这是区分贷款风险最具影响力的因子,直接决定了后续的审批路径走向。强特征导向:高信用直通审批信用度高的分支直接呈现极高的“批准”概率,直观体现了模型对优质客户的快速识别机制,符合信贷业务的风控直觉。可解释性:全透明的决策细节每个节点清晰展示基尼指数(纯度)、样本数量及类别分布,让模型从“黑盒”变为“白盒”,便于业务审计与规则理解。💡业务价值:决策树的可视化特性使其成为金融风控的首选模型,不仅能精准预测,更为信贷审批提供了可解释、可落地的决策依据与合规支撑。逻辑斯谛回归(LogisticRegression)核心定位:解决分类问题的概率统计模型它是一种经典的监督学习算法,通过Sigmoid函数将线性回归的输出映射到0到1之间,从而实现对样本类别的概率化预测,是处理二分类问题的基石。专注二分类场景尽管名称带有“回归”,但它并非预测连续值,而是专门解决“是或否”的二元判定问题,如判断邮件是否为垃圾邮件、交易是否存在欺诈风险。输出概率而非硬结果不直接给出0或1的分类标签,而是输出样本属于某一类别的概率值(0~1)。这不仅提供了分类结果,还反映了预测的置信度,便于后续决策。简单高效,可解释性强模型结构简单,训练与推理速度极快,计算成本低。同时,模型的系数具有明确的统计学意义,能直观解释各个特征对预测结果的影响程度。💡典型应用:金融风控(信贷违约预测)、医疗辅助诊断、电商推荐系统、社交媒体的垃圾内容识别、以及用户行为预测等领域。逻辑斯谛回归原理:Sigmoid函数01核心思想逻辑斯谛回归本质是分类模型。它先通过线性回归计算特征加权和,再利用Sigmoid函数将结果映射到(0,1)区间,将输出值解释为样本属于某一类别的概率。02数学表达σ(z)=1/(1+e⁻ᶻ)

其中z=wᵀx+b(线性回归模型的加权和输出,w为权重,b为偏置)函数呈光滑的S形曲线,具有单调递增性。在z=0处取值为0.5,这是二分类任务中判定正负样本的天然阈值。图示:Sigmoid函数将任意输入压缩至0到1之间,曲线中点为决策分界点。Sigmoid函数可视化▍几何意义与应用

Sigmoid函数将任意实数映射到(0,1)区间,其光滑的S型曲线保证了输出的连续性和可导性,是逻辑回归与神经网络中实现二分类概率输出的核心激活函数。当z>0时,σ(z)>0.5

输入为正数时,输出结果大于0.5,且随z增大无限趋近于1,代表高置信度的正类预测。当z=0时,σ(z)=0.5

输入为0时,输出恰好为0.5,这是二分类的决策边界临界点,此时模型无法判断倾向。当z<0时,σ(z)<0.5

输入为负数时,输出结果小于0.5,且随z减小无限趋近于0,代表高置信度的负类预测。defsigmoid(x):

return1/(1+np.exp(-x))#核心数学表达,简洁高效逻辑斯谛回归原理:训练与预测01模型训练:寻找最优参数最大化似然函数

以真实标签为目标,通过最大化似然函数来估计权重w和偏置b,使模型尽可能贴合数据的真实分布。梯度下降迭代优化

使用梯度下降法(如SGD)沿着损失函数的负梯度方向迭代更新参数,逐步逼近使预测误差最小的最优解。02模型预测:概率与分类决策输入特征,计算概率

将新样本输入模型,经Sigmoid函数映射,输出其属于正类的概率P(y=1|x)。设定阈值,判定类别

通常以0.5为分界点,概率高于阈值预测为正类,反之则为负类,完成二分类任务。输出结果,应用场景

广泛应用于风险评估、疾病诊断等领域,输出的概率值本身也具有重要的参考价值。💡核心洞察:逻辑回归本质上是“被Sigmoid函数归一化的线性回归”,将连续的线性输出转化为[0,1]区间的概率,从而实现分类。逻辑斯谛回归Python实现:从零开始01/极简代码框架classLogisticRegression:def__init__(self,lr=0.01,epochs=1000):self.lr=lr;self.epochs=epochsdeffit(self,X,y):#1.计算Sigmoid概率2.求梯度3.更新参数defpredict(self,X):#概率>0.5预测为1,否则为0参数初始化(__init__)设定学习率(步长)和迭代次数(训练轮次),为梯度下降算法配置基础超参数,控制模型收敛速度与程度。模型训练(fit)循环迭代中,计算线性得分并通过Sigmoid映射为概率;计算损失函数对参数的梯度,利用梯度下降法更新权重和偏置,逐步降低预测误差。推理预测(predict)使用训练好的参数计算样本属于正类的概率,以0.5为决策边界:概率大于阈值则预测为类别1,否则为类别0,完成二分类推理。💡核心本质:逻辑回归并非回归模型,而是通过Sigmoid函数将线性输出压缩至[0,1]区间,从而实现概率化的二分类算法。逻辑斯谛回归Python实现:使用sklearn借助scikit-learn机器学习库的LogisticRegression类,我们能以极简的代码实现逻辑斯谛回归模型的构建、训练与预测。该模块封装了高效的底层算法,并提供灵活的参数配置,让开发者可轻松应对不同场景下的二分类或多分类需求。penalty·正则化项可选'l1'或'l2',为模型参数添加惩罚项以限制权重大小,是防止模型过拟合、提升未知数据泛化能力的关键配置。C·正则化强度倒数C值越大,正则化约束越弱,模型更贴合训练数据;C值越小则约束越强。用于平衡模型的偏差与方差,避免过拟合或欠拟合。solver·优化求解器指定求解模型参数的优化算法。如'lbfgs'适合中小规模数据集,是默认选项;'liblinear'则更适用于大规模稀疏数据的分类任务。💻核心代码实现流程#1.导入逻辑回归模块

fromsklearn.linear_modelimportLogisticRegression

#2.初始化模型并配置核心参数

model=LogisticRegression(penalty='l2',C=1.0,solver='lbfgs')

#3.训练模型并进行预测

model.fit(X_train,y_train);y_pred=model.predict(X_test)逻辑斯谛回归案例:乳腺癌预测(一)01数据集概况采用Scikit-learn内置的Wisconsin乳腺癌数据集,包含569个临床样本,每个样本涵盖30个量化特征(如肿瘤平均半径、纹理、周长、面积等),标签分为良性(benign)与恶性(malignant)两类。02核心预测任务基于肿瘤的多维量化特征,构建逻辑回归二分类模型,学习特征与肿瘤性质的映射规律,实现对未知肿瘤样本「良性/恶性」的高效判别,为临床初步诊断提供数据化参考。📝建模实施五步走01数据加载导入数据集,解析特征矩阵与标签向量,完成数据的结构化提取与预处理。02数据划分按比例(如8:2)随机拆分训练集与测试集,确保模型在未知数据上的泛化能力。03模型构建初始化逻辑回归模型,配置求解器与正则化参数,定义对数似然损失函数。04模型预测使用训练好的模型对测试集特征进行推理,输出概率值并转化为分类结果。05性能评估通过准确率、精确率、召回率及混淆矩阵,全方位量化模型的分类效果,分析预测的准确性与误差分布。逻辑斯谛回归案例:乳腺癌预测(二)#1.导入库与加载数据

fromsklearn.datasetsimportload_breast_cancer

fromsklearn.model_selectionimporttrain_test_split

#2.数据划分(80%训练集/20%测试集)

X,y=load_breast_cancer(return_X_y=True)

X_train,X_test,y_train,y_test=train_test_split(

X,y,test_size=0.2,random_state=42

)

#3.训练模型并评估

model=LogisticRegression(max_iter=10000).fit(X_train,y_train)

print(f"准确率:{accuracy_score(y_test,model.predict(X_test)):.4f}")01数据准备与划分使用Scikit-learn内置的乳腺癌数据集,通过`train_test_split`按8:2比例随机切分,确保训练集与测试集分布独立,为模型提供可靠的验证基础。02模型构建与拟合初始化逻辑回归分类器,设置`max_iter=10000`以解决收敛警告,利用训练数据对模型参数进行拟合,学习数据特征与标签之间的非线性映射关系。03性能评估与分析通过`accuracy_score`计算预测准确率,并利用`classification_report`输出精准率、召回率和F1-score,全方位量化模型在二分类任务上的表现。关键提示:在未对数据进行标准化处理时,增大`max_iter`参数是解决逻辑回归算法不收敛的常用且有效的方法,确保模型能找到最优解。逻辑斯谛回归案例:乳腺癌预测(三)左侧为模型在测试集上的详细分类报告。可以看到,无论是针对良性还是恶性肿瘤的分类,各项指标均表现出色,证明了模型具有极高的临床参考价值。准确率Accuracy96.5%模型对所有样本的整体预测正确率,体现了模型的基础可靠性。精确率Precision0.97+预测为恶性的样本中,真实为恶性的比例极高,降低误诊概率。召回率Recall0.93成功识别93%的真实恶性肿瘤,大幅减少漏诊风险,临床价值高。F1综合得分0.96兼顾精确率与召回率的调和平均数,反映模型的综合性能优异。关键洞察:在医疗诊断场景中,“召回率”是优先级最高的指标。本模型0.93的召回率意味着能有效捕捉绝大多数恶性病例,避免因漏诊导致的严重后果,是辅助医生进行初步筛查的可靠工具。K近邻算法(K-NearestNeighbors,KNN)核心思想:“近朱者赤,近墨者黑”——一个样本的类别,由其特征空间中最近邻的K个样本的类别投票决定,距离越近的邻居权重越高,是一种典型的“看邻居下菜碟”的算法。▍算法定义一种基于距离度量的监督学习算法,通过计算样本间的相似度(如欧氏距离、曼哈顿距离)来判断样本归属。它不生成显式的数学模型,而是直接基于实例数据进行推理,是典型的“基于实例的学习”方法。01惰性学习特性无需预先训练模型,仅存储原始数据。预测阶段才计算距离并投票,训练成本极低,但预测时的计算量随数据量增加而上升。02双任务适配兼具分类与回归能力:分类任务通过“多数投票”确定类别;回归任务则通过“均值计算”预测数值,适用场景广泛,灵活度高。03直观易理解原理贴近生活直觉,无需复杂的数学推导即可掌握核心逻辑。代码实现简单,是机器学习入门的经典启蒙算法,便于初学者理解。KNN算法原理:三步法图示:通过计算空间距离,

基于最近邻的类别推断未知样本归属01距离度量:量化样本相似度计算测试对象与训练集中所有样本的空间距离,这是KNN的基础。最常用的是欧几里得距离(即两点间直线距离),也可根据数据特性选择曼哈顿距离等,距离越近代表样本特征越相似。02选择K值:划定决策边界从距离最近的样本中筛选出前K个作为“邻居”。K值决定模型性能:K值过小易受噪声干扰导致过拟合,K值过大则会忽略局部特征导致欠拟合,通常需通过交叉验证来确定最优值。KNN算法原理:投票决策与标准化01分类任务:少数服从多数统计K个最近邻的类别分布,遵循“投票机制”规则:选择出现频次最高的类别作为预测结果。如同民主投票,以多数邻居的属性来判定样本归属,简单直观。02回归任务:均值加权决策计算K个最近邻目标值的算术平均值(或距离加权平均值)作为预测结果。该方式利用邻居的数值中心趋势来推测未知样本,适用于房价、销量等连续数值的预测。核心前提:必须进行数据标准化处理KNN依赖距离度量(如欧氏距离),若特征量纲差异悬殊(如“年收入(万元)”与“年龄(岁)”),数值大的特征会完全主导距离计算,导致模型失效。因此,必须通过标准化(如Z-Score)将所有特征缩放到同一尺度,消除量纲影响。K值的选择:Bias-VarianceTradeoff01.K值过小(SmallK)模型特征:模型复杂度极高,决策边界极其不规则,极易被数据中的噪声点或个别离群值干扰。过拟合风险:在训练数据上表现近乎完美,但对新的未知数据预测误差会急剧上升,泛化能力极差。02.K值过大(LargeK)模型特征:模型过度简化,决策边界变得过于平滑,完全忽略了数据的局部特征和细微分布规律。欠拟合风险:不仅在测试集上表现不佳,甚至无法拟合训练数据的基本模式,导致整体预测误差偏高。最佳实践:寻找Bias与Variance的平衡点最可靠的方法是通过交叉验证(Cross-Validation)遍历候选K值,选取验证集误差最小的数值。经验上,K常取奇数(避免平局)或样本数量平方根的近似值,以此平衡模型的复杂度与稳定性,规避过拟合或欠拟合的极端情况。过拟合与欠拟合01欠拟合(Underfitting)模型过于简单,无法捕捉数据的潜在规律。表现为高偏差、低方差,在训练集和测试集上的表现都很差,是模型学习能力不足的体现。02理想拟合(GoodFit)模型复杂度适中,完美平衡了偏差与方差。既能捕捉数据的核心趋势,又不会过度学习噪声,具备优秀的泛化能力,是模型训练的理想目标。03过拟合(Overfitting)模型过于复杂,过度学习了训练数据中的随机噪声和细节。表现为低偏差、高方差,在训练集表现极佳,但在新数据上的预测性能会急剧下降。KNNPython实现:从零开始classKNN:def__init__(self,k=3):self.k=kdeffit(self,X,y):self.X_train=X#存储训练特征self.y_train=y#存储训练标签defpredict(self,X_test):y_pred=[]forxinX_test:dists=self._calc_dist(x)#1.计算距离knn_idx=dists.argsort()[:self.k]#2.找近邻pred=self._vote(knn_idx)#3.投票预测y_pred.append(pred)returnnp.array(y_pred)01计算距离:量化样本相似度计算待测样本与所有训练样本的欧氏距离,距离越近代表样本间的特征相似度越高,这是KNN的基础。02筛选近邻:锁定K个参考样本将计算出的距离进行升序排序,选取前K个距离最近的训练样本作为“邻居”,K值是模型唯一的超参数。03投票表决:少数服从多数统计K个邻居的类别出现频次,采用“多数投票”机制,出现次数最多的类别即为当前样本的预测结果。核心特性:KNN属于“惰性学习”算法,训练阶段不进行任何计算,仅存储数据集;预测时才实时计算距离与投票,简单直观但预测效率较低。KNNPython实现:使用sklearnn_neighbors(核心K值)指定选取最近的邻居数量,默认值为5。它是模型最关键的超参数,需通过交叉验证调优,以平衡欠拟合与过拟合的风险。weights(权重策略)控制邻居投票的权重分配。'uniform'为等权重投票;'distance'则使距离更近的邻居拥有更高权重,通常能有效提升预测精度。metric(距离度量)用于计算样本间距离的方式,默认使用欧式距离。针对不同的数据分布特性,也可灵活选择曼哈顿距离或余弦相似度等。快速上手:极简实现代码#1.导入核心模块,从sklearn中引入KNN分类器

fromsklearn.neighborsimportKNeighborsClassifier

#2.初始化模型并训练预测,设置K=5并使用距离加权策略

model=KNeighborsClassifier(n_neighbors=5,weights="distance");model.fit(X_train,y_train);y_pred=model.predict(X_test)KNN案例:手写数字识别(一)图中展示了手写数字数据集的样本概览,每一行对应数字0到9的不同书写风格。这些手写体在笔画粗细、倾斜角度上存在自然差异,是检验KNN算法在处理图像特征分类任务时鲁棒性的经典测试集。数据集:sklearn经典内置库使用`sklearn.datasets.load_digits()`直接加载,包含约1797个样本,专为机器学习入门的图像分类任务设计,无需额外预处理即可上手。任务:手写数字多分类目标是根据手写数字的像素特征,将其准确分类到0-9共10个类别中。这是典型的监督学习多分类问题,适合用KNN的近邻投票机制解决。特征:8×8像素灰度矩阵每个数字由8×8像素的灰度图像表示,像素值范围0-16(0为白色,16为黑色),展平后形成64维的特征向量,直接作为模型输入。KNN案例:手写数字识别(二)fromsklearn.datasetsimportload_digitsfromsklearn.model_selectionimporttrain_test_splitfromsklearn.neighborsimportKNeighborsClassifierfromsklearn.metricsimportaccuracy_score#1.数据加载与划分(80%训练,20%测试)X_train,X_test,y_train,y_test=train_test_split(load_digits().data,load_digits().target,test_size=0.2)#2.训练模型并预测(K=5)knn=KNeighborsClassifier(n_neighbors=5)knn.fit(X_train,y_train);pred=knn.predict(X_test)#3.输出评估结果print(f"准确率:{accuracy_score(y_test,pred):.4f}")01数据加载与划分利用Sklearn内置的`load_digits`加载经典手写数字数据集,通过`train_test_split`按8:2比例随机分割,确保数据分布合理,为模型训练提供可靠的数据支撑。02模型训练与推理初始化KNN分类器并设置近邻数K=5,使用训练集数据进行拟合。模型通过计算样本间的距离找到最近的5个邻居,通过“少数服从多数”原则对测试集进行预测。03性能评估与分析使用`accuracy_score`计算整体预测准确率,结合`classification_report`输出每一类数字的精确率、召回率及F1分数,从微观和宏观层面全面评估模型的识别效果。KNN案例:手写数字识别(三)准确率高达98.6%在手写数字测试集上,模型预测准确率表现卓越,误差极低,展现了KNN算法对图像特征的优秀捕捉能力。各类指标接近完美(≈1.0)针对0-9十个数字类别,精确率与召回率双高且均衡,无明显偏科,确保了对各类手写体的稳定识别。算法适配性得到验证实验证明,基于像素距离度量的KNN算法,非常适合处理这类特征维度高、边界清晰的图像分类问题。图示:模型输出的详细分类报告,直观呈现了各项性能指标的优异表现。综合案例:鸢尾花分类分析与可视化鸢尾花数据集是机器学习领域的经典基准,由RonaldFisher于1936年提出。它结构简单、样本均衡,是验证分类算法性能和学习数据可视化的理想入门案例。🌸3类样本分布涵盖Setosa(山鸢尾)、Versicolor(变色鸢尾)和Virginica(维吉尼亚鸢尾),每类各50个样本,数据分布均衡。📏4维形态特征基于花的形态学测量:花萼长度、花萼宽度、花瓣长度、花瓣宽度。所有特征均为数值型,单位为厘米(cm)。任务实施全流程拆解01数据加载与探索从sklearn导入数据集,查看样本结构、统计描述及特征相关性,快速建立数据认知。02数据预处理进行特征标准化以消除量纲影响,并按比例随机划分训练集与测试集,为模型训练做准备。03构建KNN模型基于“近朱者赤”的近邻法则,使用sklearn搭建K近邻分类器,设置合理的邻居数K。04评估与结果可视化计算准确率、生成混淆矩阵评估模型,并绘制决策边界或散点图,直观展示分类效果。案例步骤:数据加载与探索01加载经典数据集调用Scikit-learn内置的`load_iris()`接口,直接获取标准化的鸢尾花多维特征数据,省去数据清洗的前期准备。02数据结构化与映射将数组数据转为PandasDataFrame格式,赋予特征列名,并将原有的数字标签映射为直观的物种名称(如Setosa)。03快速探查数据概貌使用`df.head()`方法预览前N行数据,快速校验特征维度、数值范围与标签转换效果,确保数据加载无误。importpandasaspdfromsklearn.datasetsimportload_iris#加载数据并结构化data=load_iris();df=pd.DataFrame(data.data,columns=data.feature_names)df['species']=data.target_names[data.target]输出结果预览:DataFrame前五行数据案例步骤:数据可视化

温馨提示

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

评论

0/150

提交评论