吴恩达-机器学习-k-means聚类算法
创始人
2024-02-07 11:22:37

目录

吴恩达-机器学习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.核心函数四个:

import numpy as np
import matplotlib.pyplot as plt

1.find_closest_centroids    :寻找最近的质心

#寻找最近的质心
def find_closest_centroids(X, centroids):K = centroids.shape[0]idx = np.zeros(X.shape[0], dtype=int)for i in range(X.shape[0]):distance = []        for j in range(K):         norm_ij = np.linalg.norm(X[i] - centroids[j])distance.append(norm_ij)           idx[i] = np.argmin(distance)return idx

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

def compute_centroids(X, idx, K):m, n = X.shapecentroids = np.zeros((K, n))   for k in range(K):points = X[idx == k] centroids[k] = np.mean(points, axis = 0)return centroids

3.kMeans_init_centroids    :随机初始化质心

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

4.run_kMeans   :执行k-means算法

def run_kMeans(X, initial_centroids, max_iters=10, plot_progress=False):m, n = X.shapeK = initial_centroids.shape[0]centroids = initial_centroidsprevious_centroids = centroids    idx = np.zeros(m)for i in range(max_iters):     print("K-Means iteration %d/%d" % (i, max_iters-1))       idx = find_closest_centroids(X, centroids)      if plot_progress:plot_progress_kMeans(X, centroids, previous_centroids, idx, K, i)previous_centroids = centroidscentroids = compute_centroids(X, idx, K)plt.show() return centroids, idx


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

1.代码

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

2.运行结果

 

 

相关内容

热门资讯

苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...