码迷,mamicode.com
首页 > 其他好文 > 详细

机器学习五讲———聚类

时间:2021-02-05 10:46:50      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:算法   图片大小   import   mamicode   imp   val   设置图   panda   plot   

一、学习资料:

北京博雅数据酷客平台大讲堂:http://cookdata.cn/auditorium/course_room/10016/

相关案例:http://cookdata.cn/note/view_run_note/fa6032a61276f7b5e53f4aab61f2a368/?viewer_id=41403&note_id=150293&own_id=41403

二、聚类介绍

1、什么是聚类

技术图片

2、K-Means:基本原理、优化目标和求解方法

技术图片

3、GMM:给类标签引入概率解释

技术图片

 

技术图片

 

 

4、EM算法:一种求解隐变量概率模型的通用方法

技术图片

 

 

5、K-Means的Python实现在图像分割

技术图片
#使用 PIL.Image.open 方法来打开图片,然后使用 matplotlib 中的 imshow 方法将图片可视化。
from PIL import Image
fig, ax = plt.subplots(figsize=(6, 5)) #设置图片大小
path = ./input/timg.jpg
img = Image.open(path)
plt.imshow(img)
plt.box(False) #去掉边框
plt.axis("off")#不显示坐标轴


#将一张图片转换成表格形式。每一行为一个像素,三列分别为像素的 R,B,G取值。获取图片的每一个像素  (i,j)(i,j)  的 RBG 值可以使用 Image 类的 getpixel 方法。
import pandas as pd
def image_dataframe(image): #将图片转换成DataFrame,每个像素对应每一行,每一行包括三列
    rbg_values = []
    for i in range(image.size[0]):
        for j in range(image.size[1]):
            x,y,z= image.getpixel((i,j)) # 获取图片的每一个像素  (i,j)(i,j)  的 RBG 值
            rbg_values.append([x,y,z])
    return pd.DataFrame(rbg_values,columns=["R","B","G"]),img.size[0],img.size[1]

img_df,m,n = image_dataframe(img)

img_df.head()

print(m,n,m*n,len(img_df))

labels, _ = k_means(img_df,2)

#将生成的灰度图可视化,对图像可视化使用 plt.imshow 方法。
fig, ax = plt.subplots(figsize=(6, 5)) #设置图片大小
labels = labels.reshape((m,n))
pic_new = Image.new("L",(m,n))
#根据类别向图片中添加灰度值
for i in range(m):
    for j in range(n):
        pic_new.putpixel((i,j),int(256/(labels[i][j] + 1)))
plt.imshow(pic_new)
plt.box(False) #去掉边框
plt.axis("off")#不显示坐标轴  
View Code

 

机器学习五讲———聚类

标签:算法   图片大小   import   mamicode   imp   val   设置图   panda   plot   

原文地址:https://www.cnblogs.com/hhjing/p/14374856.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!