机器学习笔记(一)监督学习与分类算法实操

发布时间:2026/9/22 13:51:36
机器学习笔记(一)监督学习与分类算法实操 一、什么是监督学习监督学习是机器学习中最基础、应用最广泛的范式。它的核心思想是给定一组带有标签的训练数据让模型学习输入特征与输出标签之间的映射关系从而对未知数据进行预测。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 值选择决策树适合需要可解释性的场景核心调参是最大深度和划分标准实际项目中随机森林多棵决策树集成往往是比单棵决策树更优的选择无论用哪种算法特征标准化和交叉验证都是标准操作不可省略

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询