zoukankan      html  css  js  c++  java
  • 机器学习五讲——聚类

    一、学习资料:

    北京博雅数据酷客平台大讲堂: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
  • 相关阅读:
    linux查找某个命令属于哪个rpm包
    dashboard安装
    yum下载的rpm包离线安装
    jQuery的选择器
    jQuery介绍
    client、offset、scroll系列
    BOM
    js 中的定时器
    JS中的面相对象
    关于DOM操作的相关案例
  • 原文地址:https://www.cnblogs.com/hhjing/p/14374856.html
Copyright © 2011-2022 走看看