news 2026/4/24 1:28:22

机器学习算法及案例

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
机器学习算法及案例

一、机器学习入门算法总结

本次课程学习了经典机器学习基础算法,涵盖监督学习和无监督学习两大核心方向,是入门机器学习的基石,以下是算法核心原理、适用场景、优缺点总结:

1. 监督学习

监督学习的核心是用已知标签的训练数据,学习输入到输出的映射关系,最终对新数据做预测。

(1)线性回归
  • 核心原理:拟合一条线性直线/超平面,最小化预测值与真实值的误差,用于连续数值预测。
  • 适用场景:房价预测、销售额预测、气温预测、股票走势简单预估。
  • 优点:模型简单、训练快、可解释性强。
  • 缺点:只能拟合线性关系,无法处理复杂非线性数据。
(2)逻辑回归
  • 核心原理:在线性回归基础上加入Sigmoid函数,将输出映射到0-1之间,用于二分类任务。
  • 适用场景:垃圾邮件分类、疾病诊断、用户流失预测、信用卡欺诈检测。
  • 优点:训练效率高、输出结果是概率值、可解释性强。
  • 缺点:仅适用于线性可分数据,无法处理复杂分类场景。
(3)K 近邻(KNN)
  • 核心原理:物以类聚,新数据的类别由距离它最近的 K 个训练样本投票决定。
  • 适用场景:手写数字识别、简单图像分类、推荐系统初筛。
  • 优点:无需训练模型、原理简单、适合小数据集。
  • 缺点:预测速度慢(需计算所有样本距离)、对异常值和数据尺度敏感。

2. 无监督学习

无监督学习的核心是从无标签数据中自动发现隐藏结构,无需人工标注数据。

K-means 聚类
  • 核心原理:随机选取 K 个中心点,迭代将数据分配到最近的簇,更新簇中心,直到簇不再变化。
  • 适用场景:用户分群、图像颜色压缩、商品分类、异常检测、文本聚类。
  • 优点:算法高效、原理简单、适合大规模数据。
  • 缺点:需手动指定 K 值、对初始中心点和异常值敏感。

二、实战案例:基于 K-means 的图像主色提取(颜色聚类)

案例选择理由

结合课程学习的K-means 聚类算法,选择图像主色提取作为实战案例:

  1. 贴合课程知识点,纯用 K-means 实现,无额外复杂算法;
  2. 可视化效果直观,能清晰看到聚类结果;
  3. 借助 AI 工具快速生成代码、调试优化,符合作业要求;
  4. 可扩展到车票 / 车牌识别的预处理环节。

一、设计思路

  1. 需求:输入一张图片,用 K-means 聚类将图片中所有像素的颜色,聚合成指定数量的主色调,输出聚类后的图像;
  2. 流程:读取图片 → 像素数据预处理 → K-means 聚类训练 → 像素替换为簇中心颜色 → 还原图像尺寸 → 可视化结果;
  3. 核心逻辑:图像的每个像素是 RGB 三维数据,K-means 对所有像素颜色聚类,同类像素用同一颜色表示。

二、环境准备

安装依赖库:

pip install numpy opencv-python matplotlib scikit-learn

三、完整代码

# 导入所需库 import cv2 import numpy as np import matplotlib.pyplot as plt from sklearn.cluster import KMeans # ---------------------- 1. 读取并预处理图像 ---------------------- # 读取图片 image = cv2.imread("test.jpg") # OpenCV默认BGR格式,转换为RGB image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) # 获取图像尺寸 h, w, ch = image.shape print(f"图像尺寸:高{h},宽{w},通道数{ch}") # 将图像 reshape 为 (像素总数, 3) 的二维数组,适配K-means输入 pixels = image.reshape((-1, 3)) print(f"像素数据形状:{pixels.shape}") # ---------------------- 2. K-means聚类训练 ---------------------- # 设置聚类数量 n_clusters = 4 # 创建K-means模型 kmeans = KMeans(n_clusters=n_clusters, random_state=42) # 训练模型 kmeans.fit(pixels) # ---------------------- 3. 生成聚类后的图像 ---------------------- # 获取聚类中心 colors = kmeans.cluster_centers_ # 获取每个像素的聚类标签 labels = kmeans.labels_ # 将每个像素替换为对应簇的中心颜色 result_pixels = colors[labels].astype(np.uint8) # 还原为原始图像尺寸 result_image = result_pixels.reshape((h, w, ch)) # ---------------------- 4. 结果可视化 ---------------------- plt.rcParams["font.sans-serif"] = ["SimHei"] # 显示中文 plt.figure(figsize=(12, 5)) # 子图1:原始图像 plt.subplot(1, 2, 1) plt.imshow(image) plt.title("原始图像") plt.axis("off") # 子图2:K-means聚类后主色图像 plt.subplot(1, 2, 2) plt.imshow(result_image) plt.title(f"K-means聚类结果({n_clusters}种主色)") plt.axis("off") # 打印提取到的主色RGB值 print("\n提取的主色RGB值:") for i, color in enumerate(colors): print(f"主色{i+1}:R={int(color[0])}, G={int(color[1])}, B={int(color[2])}") plt.show()

四、运行结果示例

1.控制台输出

图像尺寸:高1442,宽960,通道数3 像素数据形状:(1384320, 3) 提取的主色RGB值: 主色1:R=104, G=103, B=147 主色2:R=214, G=173, B=152 主色3:R=247, G=248, B=248 主色4:R=54, G=27, B=69

2.可视化结果

  • 左侧:原始彩色图像;
  • 右侧:仅保留 4 种主色的聚类图像,颜色更简洁,轮廓更清晰。

四、扩展应用

  1. 车牌 / 车票识别预处理:用 K-means 提取车牌主色(蓝色 / 黄色),过滤背景杂色,提升识别准确率;
  2. 图像压缩:用少量主色代替全颜色,减小图片体积;
  3. 图像分割:区分前景和背景,为目标检测做预处理。

三、学习过程总结

  1. 算法理解:区分了不同计算机学习算法的核心区别,掌握了线性回归、逻辑回归、KNN、K-means 的适用场景;
  2. 实战能力:学会用 AI 工具辅助机器学习开发;
  3. 核心收获:机器学习的核心是数据 + 算法 + 目标,K-means 作为无监督学习经典算法,在图像、数据挖掘中应用广泛;
  4. 后续方向:可将本次案例结合车牌 / 车票定位,完成完整的识别项目。

总结

  1. 本次课程 4 大算法:线性回归(数值预测)、逻辑回归(二分类)、KNN(近邻分类)、K-means(无监督聚类);
  2. 实战案例用K-means 实现图像主色提取,借助 AI 工具快速完成代码、可视化、优化;
  3. 可扩展到车牌 / 车票识别预处理。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/24 1:20:16

机械臂抓取失败检测:多传感器融合与实时分析

1. 项目背景与核心挑战去年冬天,我在实验室调试一台六轴机械臂时遇到了一个有趣的问题:当它试图抓取不同形状的物体时,成功率始终徘徊在60%左右。更令人困惑的是,机械臂似乎完全无法判断自己是否成功抓取了物体——它会用同样的动…

作者头像 李华
网站建设 2026/4/24 1:03:35

leetcode 80.删除有序数组中的重复项

题目: 给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使得出现次数超过两次的元素只出现两次 ,返回删除后数组的新长度。 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件…

作者头像 李华
网站建设 2026/4/24 1:01:00

2025届必备的五大AI辅助论文方案推荐

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 想要降低文本被认作是AIGC的可能性,给出如下维度的优化建议:第一点&a…

作者头像 李华
网站建设 2026/4/24 0:58:36

无需Root!在安卓Termux上部署Routersploit,实战检测家用路由器安全

1. 为什么要在安卓手机上检测路由器安全? 家里用的路由器就像网络世界的看门人,它负责把互联网连接分配给手机、电脑、智能家电。但很多人不知道,这个"看门人"可能自己就漏洞百出。去年某安全机构抽查发现,市面上76%的家…

作者头像 李华
网站建设 2026/4/24 0:58:17

鸿蒙的“中国范式”:自主操作系统如何平衡开放与可控

鸿蒙的“中国范式”:自主操作系统如何平衡开放与可控2025年11月21日,2025开放原子开发者大会开幕式上,开放原子开源基金会正式宣布开源鸿蒙(OpenHarmony)项目达成开源孵化目标、顺利毕业。这一时刻,距离202…

作者头像 李华