机器学习笔记(一)监督学习与分类算法实操
一、什么是监督学习监督学习是机器学习中最基础、应用最广泛的范式。它的核心思想是给定一组带有标签的训练数据让模型学习输入特征与输出标签之间的映射关系从而对未知数据进行预测。1.1 监督学习的两大任务任务类型输出类型典型算法应用场景分类离散类别KNN、决策树、SVM、逻辑回归垃圾邮件检测、图像识别回归连续数值线性回归、随机森林回归房价预测、销量预测1.2 监督学习通用流程数据准备收集数据划分训练集与测试集特征工程提取有效特征处理缺失值、归一化模型选择根据任务选择合适算法模型训练用训练数据拟合模型参数模型评估用测试集验证泛化能力模型优化调参、集成等手段提升性能二、KNN 算法实操2.1 算法原理KNNK-Nearest Neighbors的核心思想用一句话概括近朱者赤近墨者黑。对于一个未知样本查看它最近的 K 个邻居按多数表决原则决定其类别。K 值选择K 太小容易过拟合K 太大容易欠拟合通常取奇数避免平票距离度量常用欧氏距离、曼哈顿距离优点简单直观无需训练过程缺点计算量大对数据规模敏感2.2 代码实操鸢尾花分类使用 scikit-learn 内置鸢尾花数据集完整演示 KNN 分类的全流程fromsklearn.datasetsimportload_irisfromsklearn.model_selectionimporttrain_test_splitfromsklearn.preprocessingimportStandardScalerfromsklearn.neighborsimportKNeighborsClassifierfromsklearn.metricsimportaccuracy_score,classification_report# 1. 加载数据irisload_iris()X,yiris.data,iris.target# 2. 划分训练集与测试集8:2X_train,X_test,y_train,y_testtrain_test_split(X,y,test_size0.2,random_state42,stratifyy)# 3. 特征标准化KNN 对量纲敏感必须做scalerStandardScaler()X_train_scaledscaler.fit_transform(X_train)X_test_scaledscaler.transform(X_test)# 4. 创建 KNN 模型K5knnKNeighborsClassifier(n_neighbors5)# 5. 训练模型knn.fit(X_train_scaled,y_train)# 6. 预测与评估y_predknn.predict(X_test_scaled)print(f准确率:{accuracy_score(y_test,y_pred):.4f})print(classification_report(y_test,y_pred,target_namesiris.target_names))输出结果准确率: 1.0000 precision recall f1-score support setosa 1.00 1.00 1.00 10 versicolor 1.00 1.00 1.00 10 virginica 1.00 1.00 1.00 10 accuracy 1.00 30 macro avg 1.00 1.00 1.00 30 weighted avg 1.00 1.00 1.00 302.3 K 值选择技巧不同的 K 值会显著影响模型表现。以下代码遍历 K1 到 20观察准确率变化importmatplotlib.pyplotasplt k_rangerange(1,21)scores[]forkink_range:knnKNeighborsClassifier(n_neighborsk)knn.fit(X_train_scaled,y_train)scores.append(accuracy_score(y_test,knn.predict(X_test_scaled)))plt.figure(figsize(10,5))plt.plot(k_range,scores,markero,color#FF6B6B,linewidth2)plt.xlabel(K Value,fontsize12)plt.ylabel(Accuracy,fontsize12)plt.title(KNN K Value vs Accuracy,fontsize14)plt.grid(True,alpha0.3)plt.savefig(knn_k_selection.png,dpi150,bbox_inchestight)plt.show()三、决策树算法实操3.1 算法原理决策树通过一系列规则对数据进行递归划分最终形成一棵树状结构。每个内部节点是一个特征判断条件每个叶子节点是一个类别标签。划分标准基尼系数Gini或信息增益Entropy核心优势可解释性强可输出规则最大深度控制树的复杂度防止过拟合3.2 代码实操乳腺癌诊断分类使用 scikit-learn 内置乳腺癌数据集fromsklearn.datasetsimportload_breast_cancerfromsklearn.treeimportDecisionTreeClassifier,plot_treefromsklearn.model_selectionimporttrain_test_splitfromsklearn.metricsimportaccuracy_score,classification_reportimportmatplotlib.pyplotasplt# 1. 加载数据dataload_breast_cancer()X,ydata.data,data.target# 2. 划分数据集X_train,X_test,y_train,y_testtrain_test_split(X,y,test_size0.3,random_state42,stratifyy)# 3. 创建决策树模型限制最大深度4防止过拟合dtDecisionTreeClassifier(max_depth4,random_state42)# 4. 训练dt.fit(X_train,y_train)# 5. 预测与评估y_preddt.predict(X_test)print(f准确率:{accuracy_score(y_test,y_pred):.4f})print(classification_report(y_test,y_pred,target_namesdata.target_names))# 6. 可视化决策树结构plt.figure(figsize(20,8))plot_tree(dt,feature_namesdata.feature_names,class_namesdata.target_names,filledTrue,fontsize8)plt.title(Decision Tree Structure,fontsize14)plt.savefig(decision_tree_structure.png,dpi150,bbox_inchestight)plt.show()3.3 特征重要性分析决策树天然支持输出特征重要性帮助我们理解哪些特征对分类贡献最大importnumpyasnp importancesdt.feature_importances_ indicesnp.argsort(importances)[::-1][:10]# 取 Top10plt.figure(figsize(10,6))colors[#FF6B6B,#FFB347,#FFD93D,#6BCB77,#4D96FF,#9D4EDD,#FF6B9D,#54C6EB,#F9C74F,#90BE6D]barsplt.bar(range(len(indices)),importances[indices],colorcolors)plt.xticks(range(len(indices)),[data.feature_names[i]foriinindices],rotation45,haright)plt.xlabel(Feature,fontsize12)plt.ylabel(Importance,fontsize12)plt.title(Top 10 Feature Importances (Decision Tree),fontsize14)plt.tight_layout()plt.savefig(feature_importance.png,dpi150,bbox_inchestight)plt.show()四、KNN 与决策树对比总结对比维度KNN决策树原理距离表决规则递归划分训练过程无惰性学习有构建决策树预测速度慢逐条计算距离快沿树遍历可解释性弱强可输出规则特征缩放必须标准化不需要适合数据量中小规模中大规模过拟合风险K 小时易过拟合深度大时易过拟合五、小结KNN适合快速原型验证和中小规模数据核心调参是 K 值选择决策树适合需要可解释性的场景核心调参是最大深度和划分标准实际项目中随机森林多棵决策树集成往往是比单棵决策树更优的选择无论用哪种算法特征标准化和交叉验证都是标准操作不可省略

相关新闻

C++多线程异常处理:跨线程传播与资源安全释放实战

C++多线程异常处理:跨线程传播与资源安全释放实战

1. 项目概述:多线程异常处理的挑战与核心在C多线程编程里,异常处理和资源释放是两个让人头疼的老大难问题。单线程环境下,我们通常用try-catch块和RAII(资源获取即初始化)就能把资源管得明明白白,异常一抛&…

2026/10/27 10:28:38 阅读更多 →
Web3.0入门指南:从数字钱包到DApp实践

Web3.0入门指南:从数字钱包到DApp实践

1. Web3.0的本质与核心特征Web3.0并非简单的技术升级,而是一场互联网范式的根本性变革。与Web1.0的"只读"和Web2.0的"读写"模式不同,Web3.0的核心在于"拥有"——用户真正掌握自己的数据资产和数字身份。这种转变的技术基础…

2026/10/27 10:28:57 阅读更多 →
让效率流动起来!手机、平板、电脑互通教程(需借助ToDesk远程控制专业软件使用)

让效率流动起来!手机、平板、电脑互通教程(需借助ToDesk远程控制专业软件使用)

在现如今的生活与办公场景中,我们很少只依赖单一设备,例如会在Mac上设计素材、在Windows电脑处理报表、将平板带在身边做展示、又用手机随时响应紧急需求。然而设备越丰富,“文件孤岛”和“操作断层”等问题反而越突出。其实真正影响效率的&a…

2026/10/25 20:37:48 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/10/26 12:00:21 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/10/27 4:06:49 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/10/27 7:21:53 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/10/26 12:00:21 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/10/27 6:20:47 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/10/27 4:06:50 阅读更多 →

日新闻

周新闻

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/26 12:00:19 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/27 7:21:50 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/26 8:34:37 阅读更多 →