码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 吴恩达-机器学习-k-means聚类算法


    目录

    吴恩达-机器学习2022版 k-means聚类算法实现整理

    1.核心函数四个:

    1.find_closest_centroids    :寻找最近的质心

    2.compute_centroids    :迭代重新计算质心

    3.kMeans_init_centroids    :随机初始化质心

    4.run_kMeans   :执行k-means算法

    2.实例:使用k-means算法对图片像素进行压缩 255色压缩到1色

    1.代码

    2.运行结果


    吴恩达-机器学习2022版 k-means聚类算法实现整理

    1.核心函数四个:

    1. import numpy as np
    2. import matplotlib.pyplot as plt

    1.find_closest_centroids    :寻找最近的质心

    1. #寻找最近的质心
    2. def find_closest_centroids(X, centroids):
    3. K = centroids.shape[0]
    4. idx = np.zeros(X.shape[0], dtype=int)
    5. for i in range(X.shape[0]):
    6. distance = []
    7. for j in range(K):
    8. norm_ij = np.linalg.norm(X[i] - centroids[j])
    9. distance.append(norm_ij)
    10. idx[i] = np.argmin(distance)
    11. return idx

    2.compute_centroids    :迭代重新计算质心

    1. def compute_centroids(X, idx, K):
    2. m, n = X.shape
    3. centroids = np.zeros((K, n))
    4. for k in range(K):
    5. points = X[idx == k]
    6. centroids[k] = np.mean(points, axis = 0)
    7. return centroids

    3.kMeans_init_centroids    :随机初始化质心

    1. def kMeans_init_centroids(X, K):
    2. randidx = np.random.permutation(X.shape[0])
    3. centroids = X[randidx[:K]]
    4. return centroids

    4.run_kMeans   :执行k-means算法

    1. def run_kMeans(X, initial_centroids, max_iters=10, plot_progress=False):
    2. m, n = X.shape
    3. K = initial_centroids.shape[0]
    4. centroids = initial_centroids
    5. previous_centroids = centroids
    6. idx = np.zeros(m)
    7. for i in range(max_iters):
    8. print("K-Means iteration %d/%d" % (i, max_iters-1))
    9. idx = find_closest_centroids(X, centroids)
    10. if plot_progress:
    11. plot_progress_kMeans(X, centroids, previous_centroids, idx, K, i)
    12. previous_centroids = centroids
    13. centroids = compute_centroids(X, idx, K)
    14. plt.show()
    15. return centroids, idx


    2.实例:使用k-means算法对图片像素进行压缩 255色压缩到1色

    1.代码

    1. #进行图片压缩
    2. #读取图片
    3. original_img = plt.imread('bird_small.png')
    4. #数据标准化 使像素值全部落在0-1之间
    5. original_img = original_img / 255
    6. X_img = np.reshape(original_img, (original_img.shape[0] * original_img.shape[1], 3))
    7. K = 16
    8. max_iters = 10
    9. initial_centroids = kMeans_init_centroids(X_img, K)
    10. centroids, idx = run_kMeans(X_img, initial_centroids, max_iters)
    11. X_recovered = centroids[idx, :]
    12. X_recovered = np.reshape(X_recovered, original_img.shape)
    13. fig, ax = plt.subplots(1,2, figsize=(8,8))
    14. plt.axis('off')
    15. #展示原图片
    16. ax[0].imshow(original_img*255)
    17. ax[0].set_title('Original')
    18. ax[0].set_axis_off()
    19. #展示压缩后图片
    20. ax[1].imshow(X_recovered*255)
    21. ax[1].set_title('Compressed with %d colours'%K)
    22. ax[1].set_axis_off()

    2.运行结果

     

     

  • 相关阅读:
    AIGC——ComfyUI 安装与基础使用
    基于springboot的社区疫情管理系统源码
    Java学习笔记(十八)
    Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单人脸检测/识别实战案例 之二 简单人脸检测添加戴眼镜效果
    Effective C++改善程序与设计的55个具体做法 9. 杂项讨论
    Linux——进程池
    再战sortablejs
    Minikube采坑记录
    【牛客刷题】——Python入门 05 运算符(下)
    「高效程序员的修炼」快速入门python主流测试框架pytest以及单元测试编写
  • 原文地址:https://blog.csdn.net/StrawBerryTreea/article/details/127986062
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号