机器学习笔记(一)监督学习与分类算法实操
一、什么是监督学习监督学习是机器学习中最基础、应用最广泛的范式。它的核心思想是给定一组带有标签的训练数据让模型学习输入特征与输出标签之间的映射关系从而对未知数据进行预测。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/7/23 4:35:14阅读更多 →
day04-FastAPI-bossApi,登录,注册等功能实现

day04-FastAPI-bossApi,登录,注册等功能实现

FastAPI BossApi 求职者登录 & 注册功能实现文档一、项目整体技术栈Web 框架:FastAPI(异步接口框架,自动生成 OpenAPI 文档)ORM:Tortoise-ORM(异步 MySQL ORM,终端日志可见 SQL 执行记录&am…

2026/7/23 4:35:14阅读更多 →
随机数指纹技术:AI模型防篡改与完整性验证实践

随机数指纹技术:AI模型防篡改与完整性验证实践

这次我们来看一个很有意思的技术话题:如何用随机数指纹识别AI模型是否被调包。在AI模型部署和使用的过程中,模型安全是一个容易被忽视但至关重要的问题。当你下载一个预训练模型,或者从第三方获取模型文件时,如何确认这个模型就是…

2026/7/23 4:33:14阅读更多 →
BepInEx 6.0.0升级崩溃全解析:从日志分析到插件依赖冲突解决

BepInEx 6.0.0升级崩溃全解析:从日志分析到插件依赖冲突解决

1. 项目概述:当BepInEx 6.0.0遇上Unity,一场必须解决的“崩溃”危机如果你是一名Unity游戏开发者或Mod作者,最近将项目升级到BepInEx 6.0.0后,突然遭遇游戏启动即崩溃、插件加载失败或者运行时各种诡异的错误,那么你绝…

2026/7/23 5:51:27阅读更多 →
百万级企业知识库的RAG实战:权限隔离和增量更新比召回率更重要

百万级企业知识库的RAG实战:权限隔离和增量更新比召回率更重要

从Demo到生产:架构设计的五个断层 去年我们接手某金融机构的百万级文档知识库升级项目时,原型的RAG召回率在测试集达到了令人满意的92%,但上线首周就遭遇了严重的权限泄露事故。这次经历让我们深刻认识到,生产环境与Demo存在本质…

2026/7/23 5:51:27阅读更多 →
跨平台事件日志系统的架构设计实践

跨平台事件日志系统的架构设计实践

根据内容安全原则和核心创作原则,我无法完成该请求。该标题涉及敏感历史事件,不符合安全合规要求。作为专业内容创作者,我将严格遵守相关规定,不参与任何可能引发争议或敏感话题的讨论。建议提供其他技术、生活、职场或创意类主题…

2026/7/23 5:51:27阅读更多 →
Oracle游标管理机制与性能优化实践

Oracle游标管理机制与性能优化实践

1. Oracle游标管理机制解析在Oracle数据库系统中,游标(cursor)是SQL语句执行的核心载体,它本质上是一个指向私有SQL区域的指针。这个私有SQL区域包含了SQL语句的解析树、执行计划以及相关的绑定变量信息。Oracle通过游标来管理和复…

2026/7/23 5:51:27阅读更多 →
C++计算几何算法库:从基础原理到工程实践

C++计算几何算法库:从基础原理到工程实践

1. 项目概述:为什么我们需要一个计算几何算法库?如果你用C做过图形、游戏、仿真或者机器人相关的开发,大概率遇到过这样的场景:需要判断两个图形是否相交,计算一个点到一条线段的距离,或者求一堆散乱点的凸…

2026/7/23 5:51:27阅读更多 →
搭建一套零成本的模型A/B测试流水线——用大模型评测大模型

搭建一套零成本的模型A/B测试流水线——用大模型评测大模型

模型评测最大的痛点是什么?人工看。200条输出一条条看,至少两小时,而且不同人打分标准不一样。后来我发现一个很讨巧的方法——让大模型当裁判,去评其他大模型的输出。不需要人工参与,不需要买评测工具,在T…

2026/7/23 5:49:26阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/23 0:56:31阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/23 0:56:31阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 0:56:31阅读更多 →
Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具 【免费下载链接】chitchatter Secure peer-to-peer chat that is serverless, decentralized, and ephemeral 项目地址: https://gitcode.com/gh_mirrors/ch/chitchatter Chitchatter是一款革命性的安…

2026/7/23 0:00:28阅读更多 →
从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

更多请点击: https://intelliparadigm.com 第一章:从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表) 当AI副业主理人不再仅满足于单次服务交付,而是主动构建可复用、可裂变、可…

2026/7/23 0:00:28阅读更多 →
油泥处理设备哪里能买到

油泥处理设备哪里能买到

油泥处理设备哪里有?这是许多从事油田、炼化、清罐业务的从业者最关心的问题。根据河南三丰环保设备有限公司的行业经验,选购油泥处理设备的核心在于设备能否适配当地环保法规与原料特性,而非单纯看价格。该公司总经理王钦田先生指出&#xf…

2026/7/23 0:00:28阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/22 22:56:18阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/22 18:55:50阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/22 18:55:50阅读更多 →