当前位置: 首页 > news >正文

唤醒手腕2025年最新机器学习K近邻算法详细教程

KNN(K-Nearest Neighbors) 是一种 基于实例(Instance-based) 的监督学习算法,常用于 分类 和 回归。

欧式距离 Euclidean Distance

欧氏距离(Euclidean Distance)。欧氏距离 是最常用的距离度量方法,用来衡量两个点在欧几里得空间(Euclidean Space)中的“直线距离”。简单来说,它就是我们平时理解的“直线距离”或“最短距离”。

距离类型定义特点适用场景
欧氏距离平方和再开根号连续数值、低维空间
曼哈顿距离绝对值差的和离散格点、路径型问题
闵可夫斯基距离泛化形式 (p 参数)可调节灵活性
余弦距离基于角度相似度文本、向量方向重要的场景

scikit-learn

scikit-learn 是 Python 生态中最主流、最成熟的 机器学习(Machine Learning)库 之一。它提供了从 数据预处理 → 模型训练 → 评估 → 调参 → 部署 的完整流程支持。

https://scikit-learn.org/

在这里插入图片描述

核心功能模块

模块作用示例类
数据预处理 (sklearn.preprocessing)标准化、归一化、编码、缺失值处理StandardScaler, OneHotEncoder, LabelEncoder, SimpleImputer
特征工程 (sklearn.feature_selection)特征选择、降维SelectKBest, PCA
模型构建 (sklearn.linear_model, neighbors, tree, svm, ensemble, etc.)各类监督/无监督学习算法LogisticRegression, KNeighborsClassifier, RandomForest, SVC, KMeans
模型评估 (sklearn.metrics, model_selection)精度评估、交叉验证、划分数据集train_test_split, cross_val_score, accuracy_score, confusion_matrix
模型调优 (sklearn.model_selection)网格搜索、随机搜索GridSearchCV, RandomizedSearchCV
Pipeline 管线化 (sklearn.pipeline)将预处理与模型组合成统一流程Pipeline, ColumnTransformer

scikit-learn 工作流程(核心思想)

阶段方法说明
训练阶段fit(X, y)训练模型或学习参数
预测阶段predict(X)输出预测结果
评分阶段score(X, y)返回模型性能指标(如分类精度)
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score# 1. 划分数据
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 2. 标准化
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)# 3. 建立模型
knn = KNeighborsClassifier(n_neighbors=5)# 4. 训练
knn.fit(X_train, y_train)# 5. 预测
y_pred = knn.predict(X_test)# 6. 评估
print("Accuracy:", accuracy_score(y_test, y_pred))
算法类别sklearn 模块示例模型
线性模型sklearn.linear_modelLinearRegression, LogisticRegression, Ridge, Lasso
树模型sklearn.treeDecisionTreeClassifier, DecisionTreeRegressor
集成模型sklearn.ensembleRandomForest, GradientBoosting, AdaBoost
支持向量机sklearn.svmSVC, SVR
邻近算法sklearn.neighborsKNeighborsClassifier, KNeighborsRegressor
朴素贝叶斯sklearn.naive_bayesGaussianNB, MultinomialNB
聚类sklearn.clusterKMeans, DBSCAN
降维sklearn.decompositionPCA, NMF

数据预处理模块常用工具

功能说明
缺失值处理SimpleImputer填充缺失值(均值、中位数等)
标准化StandardScaler均值为 0,方差为 1
归一化MinMaxScaler映射到 [0,1] 区间
类别编码OneHotEncoder, LabelEncoder将分类变量转为数字
特征选择SelectKBest, VarianceThreshold保留重要特征

模型评估

from sklearn.metrics import confusion_matrix, classification_reportprint(confusion_matrix(y_test, y_pred))
print(classification_report(y_test, y_pred))

网格搜索(GridSearchCV)

from sklearn.model_selection import GridSearchCVparam_grid = {'n_neighbors': [3, 5, 7, 9]}
grid = GridSearchCV(KNeighborsClassifier(), param_grid, cv=5)
grid.fit(X_train, y_train)
print(grid.best_params_, grid.best_score_)

Pipeline 管线化

将预处理与模型打包为一个整体,避免“数据泄漏”,简化流程。

from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifierpipe = Pipeline([('scaler', StandardScaler()),('knn', KNeighborsClassifier(n_neighbors=5))
])pipe.fit(X_train, y_train)
y_pred = pipe.predict(X_test)

kaggle 概述

Kaggle 是全球最大的数据科学和机器学习社区和竞赛平台,由 Google 在 2017 年收购。它被广泛认为是数据科学领域的“黄金标准”实践平台,无论是对于初学者还是资深专家。

核心定位:提供一个环境,让数据科学家、机器学习工程师、统计学家和数据分析师可以协作、竞争、学习,并解决真实世界的数据问题。

在这里插入图片描述

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.preprocessing import StandardScaler, OneHotEncoder
from sklearn.compose import ColumnTransformer
import joblibheart_disease_data = pd.read_csv('./heart.csv')heart_disease_data.dropna(inplace=True)# heart_disease_data.info()# print(heart_disease_data.head())# 数据集划分X = heart_disease_data.drop(columns='target', axis=1)
Y = heart_disease_data.targetX_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.3, random_state=42)# print(X_train.shape, X_test.shape, y_train.shape, y_test.shape)numerical_features = ["age",        # 年龄,连续数值"trestbps",   # 静息血压"chol",       # 胆固醇"thalach",    # 最大心率"oldpeak",    # 运动引起的ST下降"ca"          # 主要血管数量(0-4)]categorical_features = ["cp",         # 胸痛类型(4种分类:0-3)"restecg",    # 静息心电图结果(0-2)"slope",      # ST段斜率(0-2)"thal"        # 地中海贫血(1=正常,2=固定缺陷,3=可逆缺陷)
]binary_features = ["sex",        # 性别(1=男,0=女)"fbs",        # 空腹血糖 > 120 mg/dl(1=是,0=否)"exang"       # 运动诱发心绞痛(1=是,0=否)
]columnTransformer = ColumnTransformer(transformers=[("num", StandardScaler(), numerical_features),("cat", OneHotEncoder(drop="first"), categorical_features),("bin", "passthrough", binary_features)]
)X_train = columnTransformer.fit_transform(X_train)
X_test = columnTransformer.transform(X_test)print(X_train.shape)
print(X_test.shape)knn = KNeighborsClassifier(n_neighbors=3)knn.fit(X_train, y_train)print(knn.score(X_test, y_test))joblib.dump(knn, 'knn_model.joblib')
http://www.dtcms.com/a/452890.html

相关文章:

  • 广州化妆品网站建设公司排名北京网站建设91086
  • 【纯AI观点】用于协作内容创建和知识管理的MediaWiki
  • 贵州省网站建设网站打开时的客户引导页
  • C++新标准——decltype 关键字
  • Java中通过.xml文件管理测试用例类
  • 清空全网题目系列 · 洛谷 · P1054 [NOIP 2005 提高组] 等价表达式
  • 偏振光阴影投影的三元光学逻辑处理器
  • GitLab 安装指南
  • 磁共振成像原理(理论)20:K空间采样 (Sampling of k-Space) - 采样定理
  • 安装wslgui
  • 激光+摄像头:打造高精度视觉测量系统
  • ie的常用网站渭南市建设局网站
  • 前端混入与组合实战指南
  • C++ 学习(3) ----设计模式
  • 畜牧业网站模板怎么做自己的网站平台
  • DAY 43 复习日-2025.10.7
  • 大数据毕业设计选题推荐-基于大数据的人体生理指标管理数据可视化分析系统-Hadoop-Spark-数据可视化-BigData
  • Auricore亮相杭州RWA峰会,以黄金RWA重塑Web3新生态
  • 于飞网站开发免费推广软件工具
  • ChainVault闪耀杭州RWA峰会,黄金RWA重塑Web3新生态
  • [论文阅读] AI+软件工程(迁移)| 从JDK8到21:FreshBrew如何为AI代码迁移画上“可信句号”
  • 电信大数据实战:MySQL与Hadoop高效同步
  • 郑州经济技术开发区协同办公系统seo比较好的公司
  • FFmpeg开发笔记(十二):ffmpeg音频处理、采集麦克风音频录音为WAV
  • 金融大模型应用现状及未来趋势研究:国内外对比分析
  • AI 在金融、医疗、教育、制造业等领域都有广泛且深入的应用,以下是这些领域的一些落地案例
  • TensorFlow2 Python深度学习 - TensorFlow2框架入门 - 变量(Variable)的定义与操作
  • AI行业应用:金融、医疗、教育、制造业领域的落地实践
  • 【Git 子模块冲突解析】
  • 软件设计师——09 数据库技术基础