kmeans

图像分割_KMeans 实现

≡放荡痞女 提交于 2020-03-02 14:20:44
图像分割是一种图像处理方法, 它是指将一副图像分割成若干个互不相交的区域; 图像分割实质就是像素的聚类; 图像分割可以分为两类:基于边缘的分割,基于区域的分割, 聚类就是基于区域的分割; KMeans 实现图像分割 KMeans 分割图像实质上是对像素的聚类,每个类有个代表像素,把原始像素替换成该类别对应的代表像素即完成分割; 每个类别对应一个分割区域,每个区域是个单通道图; 示例 import numpy as np from sklearn.cluster import KMeans from PIL import Image ### 原始像素 img = Image.open('e://55.jpg') print(img.size) np_img = np.array(img) print(np_img) print(np_img.shape) ### 聚类的数据预处理 np_flatten = np_img.flatten() ### 拉成一维 np_flatten = np_flatten[:, np.newaxis] ### kmeans 要求 二维 np_flatten_std = np_flatten / 256. ### 归一化 # print(np_flatten_std) ### 聚类 所有像素点 km = KMeans(n_clusters=3,

sklearn之kmeans

梦想与她 提交于 2020-02-25 21:49:54
Kmeans工作原理 sklearn.cluster.KMeans 1.参数n_clusters n_clusters是KMeans中的k,表示着我们告诉模型我们要分几类。这是KMeans当中唯一一个必填的参数,默认为8类,当我们拿到一个数据集,如果可能的话,我们希望能够通过绘图先观察一下这个数据集的数据分布,以此来为我们聚类时输入的n_clusters做一个参考。 2.参数init & random_state & n_init:如何放置初始质心 1.init: 可输入"k-means++",“random"或者一个n维数组。这是初始化质心的方法,默认"k-means++”。输入"k-means++":一种为K均值聚类选择初始聚类中心的聪明的办法,以加速收敛。如果输入了n维数组,数组的形状应该是(n_clusters,n_features)并给出初始质心。 2.random_state: 控制每次质心随机初始化的随机数种子 3.n_init: 整数,默认10,使用不同的质心随机初始化的种子来运行k-means算法的次数。最终结果会是基于Inertia来计算的n_init次连续运行后的最佳输出 k-means++优化后的初始化质心位置方法,一般情况下优化过后找最优解迭代次数比随机的迭代次数少 3.参数max_iter & tol:让迭代提前停下来 1.max_iter: 整数

基于KMeans聚类的协同过滤推荐算法推荐原理、过程、代码实现 Canopy聚类算法 KMeans+Canopy聚类算法 聚类算法程序实现 KMEans聚类算法代码java

耗尽温柔 提交于 2020-02-16 23:43:00
基于KMeans聚类的协同过滤推荐算法可运用于基于用户和基于项目的协同过滤推荐算法中,作为降低数据稀疏度和提高推荐准确率的方法之一,一个协同过滤推荐过程可实现多次KMeans聚类。 一、基于KMeans聚类的协同过滤推荐算法推荐原理 KMeans聚类算法是聚类算法中最基础最常用、最重要的聚类算法。KMeans聚类算法首先需要确定N个初始中心点,初始中心点的选择对聚类结果影响很大,常用的初始中心点的选择有随机选择、自定义、采用Canopy聚类算法结果作为初始中心点,然后是重复遍历点与簇中心的距离,并不断修正簇中心点,可设置遍历次数和点与簇中心的最小距离影响聚类结果。 聚类的数据可以是一维数组、二维数组、N维数组,其中一维和二维数组的聚类结果便于可视化,一维数组初始中心点的选择采用自定义,这样聚类效果偏好,二维和N维数组采用Canopy聚类算法的聚类结果作为初始中心点效果偏好。下面介绍一下Canopy聚类算法: Canopy聚类算法 Canopy聚类算法的基本原则是:首先应用成本低的近似的距离计算方法高效的将数据分为多个组,这里称为一个 Canopy,暂时翻译为“树冠”,Canopy之间可以有重叠的部分;然后采用严格的距离计算方式准确的计算在同一Canopy中的点,将他们分配与最合适的簇中。Canopy聚类算法经常用于K均值聚类算法的预处理,用来找合适的k值和簇中心。

基于密度聚类的DBSCAN和kmeans算法比较

会有一股神秘感。 提交于 2020-01-22 21:38:44
根据各行业特性,人们提出了多种聚类算法,简单分为:基于层次、划分、密度、图论、网格和模型的几大类。 其中,基于密度的聚类算法以DBSCAN最具有代表性。 场景 一 假设有如下图的一组数据, 生成数据的R代码如下 x1 <- seq(0,pi,length.out=100) y1 <- sin(x1) + 0.1*rnorm(100) x2 <- 1.5+ seq(0,pi,length.out=100) y2 <- cos(x2) + 0.1*rnorm(100) data <- data.frame(c(x1,x2),c(y1,y2)) names(data) <- c('x','y') qplot(data$x, data$y) 用密度聚类DBSCAN方法,可以看到聚类效果如下: library(ggplot2) p <- ggplot(data,aes(x,y)) library('fpc') model2 <- dbscan(data,eps=0.6,MinPts=4) p + geom_point(size=2.5, aes(colour=factor(model2$cluster)))+theme(legend.position='top') 同样,请读者看下k-means的聚类效果。 # 用K均值聚类 model1 <- kmeans(data,centers=2

用Python 来做 Market Segmentation with Cluster Analysis

狂风中的少年 提交于 2020-01-18 08:05:15
import numpy as np import pandas as pd import matplotlib . pyplot as plt import seaborn as sns sns . set ( ) from sklearn . cluster import KMeans data = pd . read_csv ( '3.12. Example.csv' ) print ( data ) 代码紧跟上面 # Plot the data plt . scatter ( data [ 'Satisfaction' ] , data [ 'Loyalty' ] ) plt . xlabel ( 'Satisfaction' ) plt . ylabel ( 'Loyalty' ) plt . show ( ) # Select the features x = data . copy ( ) # Clustering kmeans = KMeans ( 2 ) kmeans . fit ( x ) # Clustering results clusters = x . copy ( ) clusters [ 'cluster_pred' ] = kmeans . fit_predict ( x ) plt . scatter ( clusters [

KMeans《机器学习入门学习》

你离开我真会死。 提交于 2020-01-16 06:42:51
实验代码 # -*- coding: utf-8 -*- """ Created on Fri Jan 3 10:45:17 2020 @author: Administrator @blog:https://blog.csdn.net/liuyunshengsir 加返利机器人:lys20191020 """ import matplotlib.pyplot as plt from sklearn.cluster import KMeans from sklearn import datasets iris = datasets.load_iris() X = iris.data[:, :4] # #表示我们取特征空间中的4个维度 print(X.shape) # plt 中文乱码的处理 plt.rcParams['font.sans-serif']=['SimHei'] plt.rcParams['axes.unicode_minus'] = False # 绘制数据分布图 plt.scatter(X[:, 0], X[:, 1], c="red", marker='o', label='see') plt.xlabel('sepal length') plt.ylabel('sepal width') plt.legend(loc=2) plt.title('数据分布图')

KMeans

有些话、适合烂在心里 提交于 2020-01-15 00:37:42
概念: 聚类分析(cluster analysis ):是一组将研究对象分为相对同质的群组(clusters)的统计分析技术。聚类分析也叫分类分析,或者数值分类。聚类的输入是一组未被标记的样本,聚类根据数据自身的距离或者相似度将其划分成若干个组,划分的原则是组内距离最小化而组间(外部)距离最大化。聚类和分类的不同在于:聚类所要求划分的类是未知的。 聚类度量的方法:分距离和相似度来度量。 聚类研究分析的方法: 1.层次的方法(hierarchical method) 2.划分方法(partitioning method) 3.基于密度的方法(density-based method)DBSCAN 4.基于网格的方法(grid-based method) 5.基于模型的方法(model-based method) •K-Means 算法: •受离群点的影响较大,由于其迭代每次的中心点到全部样本点的距离和的平均值。 优点: 原理简单 速度快 对大数据集有比较好的伸缩性 缺点: 需要指定聚类 数量K 对异常值敏感 对初始值敏感 •以欧式距离来衡量距离大小,使用 误差平方和( Sum of the Squared Error,SSE ) 作为聚类的目标函数: k表示k个聚类中心,ci表示第几个中心,dist表示的是欧几里得距离 •算法步骤; •创建k个点作为初始的质心点(随机选择)

如何优化Kmeans?

廉价感情. 提交于 2020-01-11 04:21:50
想要知道如何优化Kmeans,首先得知道: 什么是Kmeans? Kmeans的优点; Kmeans的缺陷; 知道了以上这些知识点,我们才能针对性优化Kmeans。 Kmeans是一种非监督的聚类算法,首先选取K值,并随机初始化K个质心,计算每个样本与质心的相似度,将样本划分到距离其最近的一个质心的堆簇,然后计算每个堆簇的新的质心,迭代上述过程,直到质心没有新的变动。如果数据集很大,Kmeans的收敛速度会很慢。 Kmeans的算法流程 • 初始化常数K,随机选取初始点为质心 • 重复计算以下过程,直到质心不再改变 o 计算样本与每个质心之间的相似度,将样本归类到最相似的类中 o 重新计算质心 • 输出最终的质心以及每个类 Kmeans的优点: 非常简单,易于实现。 Kmeans的缺陷: K值需要预先选定,K值的选择对于最后的聚类效果影响非常大。需要一定的先验知识。 Kmeans对于质心的初始点位置敏感,不同的初始化位置会导致不同的聚类结果。 对离群点(异常点)敏感。 针对以上三个缺陷,提出如下三个优化方法: 针对K值选择,使用先验知识选取K的备选。 针对初始化质心,二分K-均值。具体:首先将数据集划分为一个群簇(整体),然后将其一分为二,最大限度降低聚类代价函数(误差平方和函数),形成两个群簇。迭代这个过程,直到群簇数量等于K值。 对数据集的异常样本做处理。 更多学习资料

6. 聚类算法之K-Means

对着背影说爱祢 提交于 2020-01-01 16:10:19
有监督学习&无监督学习: 决策树,随机森林,PCA和逻辑回归,他们虽然有着不同的功能,但却都属于“有监督学习”的一部分,即是说,模型在训练的时候,即需要特征矩阵X,也需要真实标签y。 机器学习当中,还有相当一部分算法属于“无监督学习”,无监督的算法在训练的时候只需要特征矩阵X,不需要标签。而聚类算法,就是无监督学习的代表算法。 K-Means的定义: 作为聚类算法的典型代表,KMeans可以说是最简单的聚类算法没有之一,那它是怎么完成聚类的呢? 答: KMeans算法将一组N个样本的特征矩阵X划分为K个无交集的簇,直观上来看是簇是一组一组聚集在一起的数据,在一个簇中的数据就认为是同一类。簇就是聚类的结果表现。 簇中所有数据的均值通常被称为这个簇的“质心”(centroids)。 在一个二维平面中,一簇数据点的质心的横坐标就是这一簇数据点的横坐标的均值,质心的纵坐标就是这一簇数据点的纵坐标的均值。同理可推广至高维空间。 簇的个数K是一个超参数,需要我们人为输入来确定。KMeans的核心任务就是根据我们设定好的K,找出K个最优的质心,并将离这些质心最近的数据分别分配到这些质心代表的簇中去。 K-Means的过程: 1 随机抽取K个样本作为最初的质心 2 开始循环: 2.1 将每个样本点分配到离他们最近的质心,生成K个簇 2.2 对于每个簇,计算所有被分到该簇的样本点的平均值作为新的质心

KMeans (K均值)算法讲解及实现

╄→гoц情女王★ 提交于 2019-12-27 05:52:21
算法原理 KMeans算法是典型的基于距离的聚类算法,采用距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越大。该算法认为簇是由距离靠近的对象组成的,因此把得到紧凑且独立的簇作为最终目标。 K个初始聚类中心点的选取对聚类结果具有较大的影响,因为在该算法第一步中是随机地选取任意k个对象作为初始聚类中心,初始地代表一个簇。该算法在每次迭代中对数据集中剩余的每个对象,根据其与各个簇中心的距离赋给最近的簇。当考查完所有数据对象后,一次迭代运算完成,新的聚类中心被计算出来。 算法过程如下: (1)从N个数据文档(样本)随机选取K个数据文档作为质心(聚类中心)。 本文在聚类中心初始化实现过程中采取在样本空间范围内随机生成K个聚类中心。 (2)对每个数据文档测量其到每个质心的距离,并把它归到最近的质心的类。 (3)重新计算已经得到的各个类的质心。 (4)迭代(2)~(3步直至新的质心与原质心相等或小于指定阈值,算法结束。 本文采用所有样本所属的质心都不再变化时,算法收敛。 代码实现 本文在实现过程中采用数据集4k2_far.txt,聚类算法实现过程中默认的类别数量为4。 (1)辅助函数myUtil.py # -*- coding:utf-8 -*- from numpy import * # 数据文件转矩阵 # path: 数据文件路径 # delimiter: 行内字段分隔符