样本:

代码:

import numpy as np
import PIL.Image as image
from sklearn.cluster import KMeans def loadData(filePath):
f = open(filePath, 'rb') #二进制形式打开文件
data = []
img = image.open(f)
m, n = img.size #获取图片的大小
for i in range(m): #将每个像素点RGB颜色处理到0-1
for j in range(n):
x, y, z = img.getpixel((i, j)) #黑色为0,0,0 有颜色就好像是其他数字
#print(x, y, z)
data.append([x/256.0, y/256.0, z/256.0]) #二维列表[0.0, 0.0, 0.0]
f.close()
#print(data)
return np.mat(data), m, n #以矩阵形式返回data,以及图片大小 imgData, row, col = loadData('D:/python_source/Machine_study/mooc课程数据/课程数据/基于聚类的整图分割/bull.jpg')
#print(imgData, row, col)
label = KMeans(n_clusters=4).fit_predict(imgData)
#聚类获得每个像素所属的类别
label = label.reshape([row, col]) #二维列表
#print(label)
pic_new = image.new("L", (row, col)) #创建一张新的灰度图保存聚类后的效果
for i in range(row): #i,j为图片像素,例如 640*480. 根据所属类别向图片中添加灰度值
for j in range(col):
pic_new.putpixel((i, j), int(256/(label[i][j]+1)))
pic_new.save("result-bull-4.jpg", "JPEG")

效果图:

2019-07-31【机器学习】无监督学习之聚类 K-Means算法实例 (图像分割)的更多相关文章

  1. agentzh 的 Nginx 教程(版本 2019.07.31)

    agentzh 的 Nginx 教程(版本 2019.07.31) agentzh 的 Nginx 教程(版本 2019.07.31) https://openresty.org/download/a ...

  2. 斯坦福机器学习视频笔记 Week8 无监督学习:聚类与数据降维 Clusting & Dimensionality Reduction

    监督学习算法需要标记的样本(x,y),但是无监督学习算法只需要input(x). 您将了解聚类 - 用于市场分割,文本摘要,以及许多其他应用程序. Principal Components Analy ...

  3. <机器学习>无监督学习算法总结

    本文仅对常见的无监督学习算法进行了简单讲述,其他的如自动编码器,受限玻尔兹曼机用于无监督学习,神经网络用于无监督学习等未包括.同时虽然整体上分为了聚类和降维两大类,但实际上这两类并非完全正交,很多地方 ...

  4. 易百教程人工智能python修正-人工智能无监督学习(聚类)

    无监督机器学习算法没有任何监督者提供任何指导. 这就是为什么它们与真正的人工智能紧密结合的原因. 在无人监督的学习中,没有正确的答案,也没有监督者指导. 算法需要发现用于学习的有趣数据模式. 什么是聚 ...

  5. 5.无监督学习-DBSCAN聚类算法及应用

    DBSCAN方法及应用 1.DBSCAN密度聚类简介 DBSCAN 算法是一种基于密度的聚类算法: 1.聚类的时候不需要预先指定簇的个数 2.最终的簇的个数不确定DBSCAN算法将数据点分为三类: 1 ...

  6. 4.无监督学习--K-means聚类

    K-means方法及其应用 1.K-means聚类算法简介: k-means算法以k为参数,把n个对象分成k个簇,使簇内具有较高的相似度,而簇间的相似度较低.主要处理过程包括: 1.随机选择k个点作为 ...

  7. 聚类--K均值算法:自主实现与sklearn.cluster.KMeans调用

    1.用python实现K均值算法 import numpy as np x = np.random.randint(1,100,20)#产生的20个一到一百的随机整数 y = np.zeros(20) ...

  8. 2019-07-25【机器学习】无监督学习之聚类 K-Means算法实例 (1999年中国居民消费城市分类)

    样本 北京,2959.19,730.79,749.41,513.34,467.87,1141.82,478.42,457.64天津,2459.77,495.47,697.33,302.87,284.1 ...

  9. 2019-07-28【机器学习】无监督学习之聚类 DBSCAN方法及其应用 (在线大学生上网时间分析)

    样本: import numpy as np import sklearn.cluster as skc from sklearn import metrics import matplotlib.p ...

随机推荐

  1. Vue 使用百度地图 实现搜索 定位

    要求能定位到国外 及 查看了文档 百度支持东南亚大部分地区  满足需求 从而使用百度地图 <template> <div class="addHospital"& ...

  2. 李瑞红201771010111《面向对象程序设计(java)》第四周学习总结

    实验四:类与对象的定义及使用 第一部分:理论知识学习 1.类与对象概念 (1)类是构造对象的模板或蓝图,由类构造对象的过程称为创建类的实例.   (2)对象:即数据,对象有三个特性,行为.状态.标识. ...

  3. .NET Core使用NPOI导出复杂,美观的Excel详解

    前言: 这段时间一直专注于数据报表的开发,当然涉及到相关报表的开发数据导出肯定是一个不可避免的问题啦.客户要求要导出优雅,美观的Excel文档格式的来展示数据,当时的第一想法就是使用NPOI开源库来做 ...

  4. 动态规划-计数dp-Distinct Subsequences II

    2020-02-06 17:01:36 问题描述: 问题求解: 非常经典的计数dp问题,思路就是统计以每个字符为结尾的个数,最后求和即可. dp[i] = sum of (dp[j]) 0 <= ...

  5. Oracle 11g Windows下安装出现INS-30131错误

    1.错误信息 2.解决方法 问题分析:访问Temp文件夹缺少权限 方案1: 使用net use查看C盘是否共享,否则进行设置,这种方法网上有很多帖子,不详坠 方案2:打开cmd,到相应的解压后的set ...

  6. vue命令式组件和插件编写

    一直在写各种业务,好多基本用法都忘记了,回顾一下: 一.vue各种UI库里的命令式组件比如element-ui里Notification组件,可以这样调用 this.$notify({ title: ...

  7. Java集合工具类使用的一些坑,Arrays.asList()、Collection.toArray()、foreach

    Arrays.asList() 使用指南 最近使用Arrays.asList()遇到了一些坑,然后在网上看到这篇文章:Java Array to List Examples 感觉挺不错的,但是还不是特 ...

  8. MySQL优化之执行计划

    前言 研究SQL性能问题,其实本质就是优化索引,而优化索引,一个非常重要的工具就是执行计划(explain),它可以模拟SQL优化器执行SQL语句,从而让开发人员知道自己编写的SQL的运行情况. 执行 ...

  9. Oracle数据库的创建表全

    CREATE TABLE "库名"."表名" ( "FEE_ID" VARCHAR2(10 BYTE) constraint ABS_FEE ...

  10. class字节码的结构

    class字节码的结构 使用javap -verbose 命令分析一个.class字节码文件时(以下简称字节码文件),将会分析该字节码文件的魔数,版本号,常量池,类信息,类的构造方法,类中的方法信息, ...