一、机器学习概述

机器学习(Machine Learning, ML)是人工智能的核心分支,旨在通过算法让计算机从数据中自动学习规律并优化性能,而无需显式编程。这一技术领域起源于20世纪50年代,随着计算能力的提升和大数据时代的到来,在21世纪得到了迅猛发展。

1. 基本概念

机器学习通过数据训练模型,使其能够识别模式、做出预测或决策。与传统编程不同,机器学习系统不是通过直接编写规则,而是通过分析大量数据来"学习"如何完成任务。

2. 核心思想

其核心是"从经验中自动改进",这一思想模仿了人类的学习过程。机器学习系统通过不断调整内部参数,逐步提高在特定任务上的表现。

3. 关键三要素

机器学习的实现依赖于三大基本要素:

  • 数据:训练材料,包括结构化数据(如数据库表格)和非结构化数据(如文本、图像)
  • 模型:输入到输出的映射函数,如决策树、神经网络等
  • 算法:优化方法如梯度下降、随机梯度下降等

机器学习算法分类

1. 监督学习(Supervised Learning)

监督学习使用标注数据训练模型,需要提供输入数据和对应的正确输出(标签)。主要应用包括:

  • 分类:预测离散类别

    • 垃圾邮件识别(二分类)
    • 手写数字识别(多分类)
    • 医疗影像诊断(如识别肿瘤类型)
  • 回归:预测连续数值

    • 房价预测(基于面积、位置等特征)
    • 股票价格预测
    • 销售预测

常用算法:

  • 线性回归
  • 逻辑回归
  • 支持向量机(SVM)
  • 决策树
  • 随机森林

2. 无监督学习(Unsupervised Learning)

无监督学习从无标签数据中发现隐藏的结构和模式。主要应用包括:

  • 聚类

    • K-Means:客户细分、文档分类
    • 层次聚类:生物学的物种分类
    • DBSCAN:异常检测
  • 降维

    • 主成分分析(PCA):数据可视化、特征提取
    • t-SNE:高维数据可视化
    • 自编码器:图像压缩
  • 关联规则学习

    • 购物篮分析(啤酒与尿布)
    • 推荐系统

3. 强化学习(Reinforcement Learning)

强化学习通过环境交互学习最优策略,其核心是"试错学习"。主要特点包括:

  • 应用场景

    • 游戏AI(AlphaGo、星际争霸AI)
    • 机器人控制(行走、抓取)
    • 自动驾驶决策
    • 金融交易策略
  • 关键概念

    • 智能体(Agent)
    • 环境(Environment)
    • 奖励(Reward)
    • 策略(Policy)
  • 算法分类

    • 基于价值的方法(Q-Learning)
    • 基于策略的方法(Policy Gradients)
    • Actor-Critic方法

机器学习库

在Python中进行机器学习开发时,Scikit-learn是最常用的机器学习库之一。它提供了各种监督学习和无监督学习算法,以及数据预处理、模型评估等工具,是机器学习入门和实践的最佳选择

pip install scikit-learn ==1.0.2 -i https://pypi.tuna.tsinghua.edu.cn/simple
#篇使用版本为1.0.2
#导入方法如下
import sklearn

二、KNN(K-Nearest Neighbors,K近邻)算法

1.核心思想​

KNN是一种基于实例的监督学习算法,其核心假设是“相似的数据点在特征空间中彼此靠近”。通过计算待预测样本与训练集中所有样本的距离,选择最近的K个邻居,根据这些邻居的类别(分类任务)或数值(回归任务)进行预测。本篇以分类为主。

算法步骤​

数据准备

标准化/归一化特征:消除量纲差异对距离计算的影响(如使用StandardScaler)

  • 详细步骤:
    1. 计算每个特征的均值(μ)和标准差(σ)
    2. 对每个特征值x进行变换:(x-μ)/σ
    3. 示例:若特征A的范围是0-1000,特征B的范围是0-1,标准化后两个特征都服从均值为0、标准差为1的分布
  • 应用场景:当特征的单位不同(如身高cm vs 体重kg)或数值范围差异较大时

距离计算

常用距离度量:

欧氏距离(默认):适用于连续特征

  • 公式:d(x,y)=√(∑(x_i-y_i)^2)
  • 几何解释:两点在n维空间中的直线距离
  • 示例:在二维空间中,点(1,3)和(4,7)的距离为√((1-4)^2 + (3-7)^2)=5

曼哈顿距离:适用于网格路径数据

  • 公式:d(x,y)=∑|x_i-y_i|
  • 别称:城市街区距离
  • 适用场景:棋盘格移动、城市道路规划等网格状路径系统
  • 示例:在二维网格中,(1,3)到(4,7)的距离为|1-4| + |3-7|=7

选择K个最近邻

按距离排序,选取前K个样本

  • 关键步骤:
    1. 计算待分类样本与所有训练样本的距离
    2. 将所有距离按从小到大排序
    3. 选择距离最小的K个样本
  • 注意事项:K值通常取奇数(如3/5/7)以避免平票情况

投票决策

统计K个邻居的类别频率,将待分类样本划入频率最高的类别

  • 具体流程:
    1. 统计K个邻居中每个类别出现的次数
    2. 选择出现次数最多的类别作为预测结果
    3. 平票处理:可随机选择或考虑更小的K值
  • 扩展:也可使用加权投票,距离近的邻居投票权重更大

数据准备

标准化/归一化特征:消除量纲差异对距离计算的影响(如使用StandardScaler)

  • 详细步骤:
    1. 计算每个特征的均值(μ)和标准差(σ)
    2. 对每个特征值x进行变换:(x-μ)/σ
    3. 示例:若特征A的范围是0-1000,特征B的范围是0-1,标准化后两个特征都服从均值为0、标准差为1的分布
  • 应用场景:当特征的单位不同(如身高cm vs 体重kg)或数值范围差异较大时

距离计算

常用距离度量:

欧氏距离(默认):适用于连续特征

  • 公式:
  • 几何解释:两点在n维空间中的直线距离
  • 示例:在二维空间中,点(1,3)和(4,7)的距离为√((1-4)^2 + (3-7)^2)=5

曼哈顿距离:适用于网格路径数据

  • 公式:
  • 别称:城市街区距离
  • 适用场景:棋盘格移动、城市道路规划等网格状路径系统
  • 示例:在二维网格中,(1,3)到(4,7)的距离为|1-4| + |3-7|=7

选择K个最近邻

按距离排序,选取前K个样本

  • 关键步骤:
    1. 计算待分类样本与所有训练样本的距离
    2. 将所有距离按从小到大排序
    3. 选择距离最小的K个样本
  • 注意事项:K值通常取奇数(如3/5/7)以避免平票情况

投票决策

统计K个邻居的类别频率,将待分类样本划入频率最高的类别

  • 具体流程:
    1. 统计K个邻居中每个类别出现的次数
    2. 选择出现次数最多的类别作为预测结果
    3. 平票处理:可随机选择或考虑更小的K值
  • 扩展:也可使用加权投票,距离近的邻居投票权重更大

关键参数与优化​

  • 关键参数与优化

    K值选择

    K值的选择直接影响KNN模型的性能:

  • K值过小(如K=1)
    • 模型会过于关注局部噪声点,导致过拟合
    • 决策边界变得非常复杂且不规则
    • 示例:在图像分类中,K=1可能导致对个别异常像素过于敏感
  • K值过大
    • 模型会忽略数据的局部特征,导致欠拟合
    • 决策边界过度平滑,可能错过重要模式
    • 示例:在房价预测中,过大的K值可能使不同社区的房价差异被平均化
    • 优化方法

    • 交叉验证:
      • 采用k折交叉验证(如5折或10折)评估不同K值
      • 网格搜索:系统性地测试K值范围(如1-20)
    • 经验法则:
      • K≈√n(n为训练样本数)
      • 通常选择奇数K值以避免平票情况
      • 对于分类问题,初始可尝试K=3,5,7等小值

三、knn算法的运用

class sklearn.neighbors.KNeighborsClassifier( n_neighbors=5, weights='uniform', algorithm='auto', leaf_size=30, p=2, metric='minkowski', metric_params=None, n_jobs=None)

参数名

类型/选项

默认值

作用

n_neighbors

int

5

近邻数K,决定投票的样本数量

weights

'uniform''distance'或可调用对象

'uniform'

权重分配方式:
'uniform':等权重投票
'distance':按距离反比加权

algorithm

'auto''ball_tree''kd_tree''brute'

'auto'

近邻搜索算法:
'ball_tree'/'kd_tree':树结构加速搜索(维度<20时高效)
'brute':暴力搜索(适合小数据集)

p

int

2

闵可夫斯基距离的幂参数:
p=1:曼哈顿距离
p=2:欧氏距离

metric

str或可调用对象

'minkowski'

距离度量标准(如'cosine''euclidean'

n_jobs

int或None

None

并行计算线程数(-1表示使用所有CPU核心)

法名

功能

示例

fit(X, y)

存储训练数据(惰性学习)

knn.fit(X_train, y_train)

predict(X)

返回预测类别

y_pred = knn.predict(X_test)

predict_proba(X)

返回样本属于各类别的概率(基于邻居类别的频率)

prob = knn.predict_proba([[1.5]])→ [[0.6, 0.4]]

score(X, y)

计算准确率(分类)或R²分数(回归)

accuracy = knn.score(X_test, y_test)

kneighbors(X)

返回K近邻的索引和距离

dist, indices = knn.kneighbors([[0.5]])

四、算法示例

from matplotlib import pyplot as plt
import numpy as np#knn算法预测
from sklearn.neighbors import KNeighborsClassifier
data = np.loadtxt('datingTestSet2.txt', delimiter='\t')
neigh = KNeighborsClassifier(n_neighbors=5)
x=data[:800,:-1]
y=data[:800,-1]
neigh.fit(x,y)
print(neigh.score(x,y))#准确率,自测
c1=data[800:,:-1]
c2=data[800:,-1]
right=neigh.score(c1,c2)
print(right)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/94771.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/94771.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/94771.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kaggle 经典竞赛泰坦尼克号:超级无敌爆炸详细基础逐行讲解Pytorch实现代码,看完保证你也会!!!

讲解代码分为3个步骤&#xff1a;有什么用&#xff0c;为什么需要他&#xff0c;如何使用保证大家耐心看完一定大有裨益&#xff01;如果有懂的可以跳过&#xff0c;不过建议可以看完&#xff0c;查漏补缺嘛。现在开始吧&#xff01;项目目标我们的目标是根据泰坦尼克号乘客的个…

双目标定中旋转矩阵参数应用及旋转角度计算(聚焦坐标系平行)

一、引言 在双目视觉系统开发中&#xff0c;若需实现右相机坐标系与左相机坐标系平行&#xff0c;核心在于通过双目标定获取的旋转矩阵RRR&#xff0c;消除两相机间的相对旋转。本报告聚焦旋转矩阵的物理意义与工程应用&#xff0c;详细说明如何通过旋转矩阵计算相对旋转角度&a…

GraphRAG 入门教程:从原理到实战

GraphRAG 入门教程&#xff1a;从原理到实战 1. 什么是 GraphRAG&#xff1f; GraphRAG 是一种结构化的、分层的检索增强生成&#xff08;Retrieval-Augmented Generation&#xff0c;简称 RAG&#xff09;方法 和传统的 RAG 不同&#xff0c;GraphRAG 不仅仅依赖文本相似度搜索…

系统集成项目管理工程师【第十一章 规划过程组】规划成本管理、成本估算、制定预算和规划质量管理篇

系统集成项目管理工程师【第十一章 规划过程组】规划成本管理、成本估算、制定预算和规划质量管理篇 一、规划成本管理&#xff1a;为成本管控定方向 规划成本管理是项目成本管理的起点&#xff0c;其核心是明确“如何管”的规则&#xff0c;为整个项目的成本管理提供统一框架。…

Xiphos Q8 SDR DOCK子板 AD9361 宽带收发器的 SDR 模块。

Q8 混合处理器卡的子板&#xff0c;包含基于 ADI 公司流行的 AD9361 宽带收发器的 SDR 模块。与基于 AD9361 的 SDR 模块接口PPS、CAN总线、串行、UART&#xff08;LVDS&#xff09;、USB接口电源接口&#xff08;5V、12V&#xff09; Q8 处理器卡的子板&#xff0c;集成了基于…

DPU(数据处理单元)架构中,SoC(系统级芯片)与FPGA(现场可编程门阵列)之间的数据交互

在DPU&#xff08;数据处理单元&#xff09;架构中&#xff0c;SoC&#xff08;系统级芯片&#xff09;与FPGA&#xff08;现场可编程门阵列&#xff09;之间的数据交互是实现高效异构计算的关键。根据通信目标和硬件特性&#xff0c;其交互数据类型可分为以下四类&#xff1a;…

图论(邻接表)DFS

竞赛中心 - 蓝桥云课 #include<bits/stdc.h> using namespace std; #define int long long const int A1e51; typedef pair<int,int>p; map<p,int>st; vector<p>edge[A]; int a[A]; int result0; bool dfs(int s,int u,int father,int v,int sum) {i…

深入理解VideoToolbox:iOS/macOS视频硬编解码实战指南

引言&#xff1a;VideoToolbox框架概述 VideoToolbox是Apple提供的底层框架&#xff0c;首次在WWDC2014上推出&#xff0c;为iOS和macOS开发者提供直接访问硬件编码器和解码器的能力。作为Core Media框架的重要组成部分&#xff0c;VideoToolbox专注于视频压缩、解压缩以及Cor…

Python基础语法练习

本文涵盖了 Python 基础编程中的多个重要概念&#xff0c;从简单的输出语句到运算符、字符串操作、变量赋值等都有涉及。这些例子非常适合初学者学习和理解 Python 的基本语法。1. Hello World# 输出Hello Worldprint("Hello, World!")2. 变量赋值# 创建变量并赋值na…

关于“致命错误:‘https://github.com/....git/‘ 鉴权失败”

问题分析 错误信息&#xff1a; remote: Invalid username or token. Password authentication is not supported for Git operations. 致命错误&#xff1a;https://github.com/yarajia/LittleTestToolsProject.git/ 鉴权失败原因&#xff1a;GitHub从2021年8月13日起不再支持…

基于Flask + Vue3 的新闻数据分析平台源代码+数据库+使用说明,爬取今日头条新闻数据,采集与清洗、数据分析、建立数据模型、数据可视化

介绍 本项目为新闻数据分析平台&#xff0c;目的是爬取新闻(目前仅含爬取今日头条)数据&#xff0c;然后对数据进行展示、采集与清洗、数据分析、建立数据模型、数据可视化。本项目采用前后端分离模式&#xff0c;前端使用 Vue3 ArcoDesign 搭建&#xff0c;后端使用 Python …

LabVIEW数字抽取滤波

​基于 LabVIEW 平台设计数字抽取滤波器&#xff0c;用于动态测试领域&#xff0c;解决高采样率数据的大动态范围需求与频带划分问题。方案替换硬件为可靠性优异的品牌&#xff0c;通过虚拟仪器架构实现信号处理功能&#xff0c;为动态信号分析提供高效、可复用的设计参考。应用…

云原生时代的 Linux:容器、虚拟化与分布式的基石

&#x1f4dd;个人主页&#x1f339;&#xff1a;慌ZHANG-CSDN博客 &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; 在云计算与容器化快速发展的今天&#xff0c;Linux 已经不再只是服务器上的操作系统&#xff0c;而是整个云原生生态的底层基石。无论是运…

多场景两阶段分布式鲁棒优化模型、数据驱动的综合能源系统

基于数据驱动的综合能源系统多场景两阶段分布式鲁棒优化模型 鲁棒优化是应对数据不确定性的一种优化方法&#xff0c;但单阶段鲁棒优化过于保守。为了解决这一问题&#xff0c;引入了两阶段鲁棒优化(Two-stage Robust Optimization)以及更一般的多阶段鲁棒优化&#xff0c;其核…

Python实现点云PCA配准——粗配准

本节我们来介绍PCA&#xff08;主成分分析&#xff09;算法进行点云配准&#xff0c;这是一种经典的统计降维与特征提取工具&#xff0c;在三维点云处理中常被用来完成“粗配准”。其核心思想是&#xff1a;先把两个待对齐的点云各自进行主成分分解&#xff0c;获得各自的“主轴…

零基础深度学习规划路线:从数学公式到AI大模型的系统进阶指南

引言在人工智能革命席卷全球的2025年&#xff0c;深度学习已成为改变行业格局的核心技术。本规划路线整合最新教育资源与实践方法&#xff0c;为完全零基础的学习者构建一条从数学基础到AI大模型的系统学习路径。通过清华大佬的实战课程、吴恩达的经典理论、Kaggle竞赛的实战锤…

基于Vue.js和Golang构建高效在线客服系统:前端实现与后端交互详解

在当今互联网时代&#xff0c;在线客服系统已成为企业与用户沟通的重要桥梁。本文将详细介绍如何使用Vue.js作为前端框架&#xff0c;Gin作为后端框架&#xff0c;构建一个高效的在线客服系统。一、项目背景与技术选型项目背景随着电子商务的迅猛发展&#xff0c;用户对即时咨询…

虚幻GAS底层原理解剖九 (内存管理)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录前言一、整体内存管理思路概览二、核心对象的生命周期与托管逻辑UGameplayAbility 的管理GameplayEffect 的内存管理ActiveGameplayEffect 生命周期三、属性&#xf…

Rust 通用库新增 WebAssembly

1 先判断&#xff1a;也许你的 crate 已经能跑 Wasm&#xff01;排查阻碍因素 直接文件/网络 I/O块式&#xff08;同步&#xff09;I/Ostd::thread 线程创建并不受支持的 C 系统库绑定快速验证rustup target add wasm32-unknown-unknown cargo build --target wasm32-unknown-…

java分布式定时任务

一、分布式锁的底层实现细节&#xff08;以 Redis 为例&#xff09;分布式锁是解决任务重复执行的核心&#xff0c;需保证原子性、超时释放和可重入性。以下是生产级 Redis 锁实现&#xff1a;public class RedisDistributedLock {private final RedisTemplate<String, Stri…