当前位置: 首页 > news >正文

基于web的旅游网站建设广州推广系统

基于web的旅游网站建设,广州推广系统,保定专业做网站,个人做健康网站好吗Python实现K-means聚类 K-means原理 K-means均值聚类算法作为最经典也是最基础的无标签分类学习算法。其实质就是根据两个数据点的距离去判断他们是否属于一类,对于一群点,就是类似用几个圆去框定这些点(簇),然后圆心…

Python实现K-means聚类

K-means原理

K-means均值聚类算法作为最经典也是最基础的无标签分类学习算法。其实质就是根据两个数据点的距离去判断他们是否属于一类,对于一群点,就是类似用几个圆去框定这些点(簇),然后圆心的心就是聚类中心。
在这里插入图片描述

示例一

源代码

from sklearn.cluster import KMeans
import numpy as np# 构造数据样本点集X,并计算K-means聚类
X = np.array([[1, 2], [1, 4], [1, 0], [4, 2], [4, 4], [4, 0]])
kmeans = KMeans(n_clusters=2, random_state=0).fit(X)# 输出及聚类后的每个样本点的标签(即类别),预测新的样本点所属类别
print(kmeans.labels_)
print(kmeans.predict([[0, 0], [4, 4], [2, 1]]))

在这个例子中,KMeans函数的参数意义如下:

n_clusters:表示要创建的聚类数目,这里设置为2,意味着将数据划分为两个簇。
n_init:表示执行算法的次数,每次执行都会随机初始化质心,选择具有最小总误差的结果作为最终模型。这里设置为10,意味着将执行10次算法并选择最好的结果。
random_state:是一个随机数生成器的种子,用于控制随机初始化质心的过程。通过设置相同的种子,可以使得每次运行都得到相同的结果。
.fit(X)表示对数据X执行K均值聚类算法,并训练模型。

运行结果

在这里插入图片描述

示例二

源代码

import time
import numpy as np
import matplotlib.pyplot as pltfrom sklearn.cluster import KMeans
from sklearn.metrics.pairwise import pairwise_distances_argmin
from sklearn.datasets._samples_generator import make_blobs# ######################################
# Generate sample data
np.random.seed(0)batch_size = 45
centers = [[1, 1], [-1, -1], [1, -1]]
n_clusters = len(centers)
X, labels_true = make_blobs(n_samples=3000, centers=centers, cluster_std=0.7)# plot result
fig = plt.figure(figsize=(8,3))
fig.subplots_adjust(left=0.02, right=0.98, bottom=0.05, top=0.9)
colors = ['#4EACC5', '#FF9C34', '#4E9A06']# original data
ax = fig.add_subplot(1,2,1)
row, _ = np.shape(X)
for i in range(row):ax.plot(X[i, 0], X[i, 1], '#4EACC5', marker='.')ax.set_title('Original Data')
ax.set_xticks(())
ax.set_yticks(())# compute clustering with K-Means
k_means = KMeans(init='k-means++', n_clusters=3, n_init=10)
t0 = time.time()
k_means.fit(X)
t_batch = time.time() - t0k_means_cluster_centers = np.sort(k_means.cluster_centers_, axis=0)
k_means_labels = pairwise_distances_argmin(X, k_means_cluster_centers)# K-means
ax = fig.add_subplot(1, 2, 2)
for k, col in zip(range(n_clusters), colors):my_members = k_means_labels == k		# my_members是布尔型的数组(用于筛选同类的点,用不同颜色表示)cluster_center = k_means_cluster_centers[k]ax.plot(X[my_members, 0], X[my_members, 1], 'w',markerfacecolor=col, marker='.')	# 将同一类的点表示出来ax.plot(cluster_center[0], cluster_center[1], 'o', markerfacecolor=col,markeredgecolor='k', marker='o')	# 将聚类中心单独表示出来
ax.set_title('KMeans')
ax.set_xticks(())
ax.set_yticks(())
plt.text(-3.5, 1.8, 'train time: %.2fs\ninertia: %f' % (t_batch, k_means.inertia_))plt.show()

运行结果

在这里插入图片描述

代码注释

1、使用Scikit-learn库中的make_blobs函数来生成随机的高斯分布数据集。通过指定n_samples参数为3000,centers参数为所需的中心点数量,cluster_std参数为0.7来生成数据集。返回数据点和对应的标签列表。
数据点列表
在这里插入图片描述
标签列表
在这里插入图片描述

2、fig.subplots_adjust(left=0.02, right=0.98, bottom=0.05, top=0.9)这段代码用于调整子图的位置。它通过设置左边界、右边界、底边界和顶边界的值来控制子图的位置。在这个例子中,左边界被设置为0.02,右边界被设置为0.98,底边界被设置为0.05,顶边界被设置为0.9。这意味着子图将占据整个画布的宽度的96%(从左边界到右边界),并且在垂直方向上从底边界的5%位置开始,到顶边界的90%位置结束。通过调整这些值,你可以改变子图在画布上的位置和大小。

3、ax = fig.add_subplot(1,2,1)这是在 Python 中创建一个简单的单图形对象,使用 matplotlib 库中的 fig.add_subplot() 方法。它创建了一个包含一个子图的图形。子图是位置在 (1,1) 的唯一子图。该变量 b’ax’ 将该子图对象存储起来,以便可以使用它来设置图形属性和添加绘图元素。

4、k_means = KMeans(init=‘k-means++’, n_clusters=3, n_init=10)。K-Means是一种常用的无监督学习算法,用于将数据划分为预先指定数量的簇(clusters)。在代码中,参数init='k-means’指定了用K-Means算法初始化聚类中心,初始化的方法有三种:k-means++,random,或者是一个数组。
k-means++能智能的选择初始聚类中心进行k均值聚类,加快收敛速度。该示例中初始化了聚类中心[[1, 1], [-1, -1], [1, -1]],选择K-means++加快收敛。random则是从数据中随机的选择k个观测值作为初始的聚类中心。
n_clusters=3指定了要生成的簇的数量为3,n_init=10指定了进行不同初始值运行的次数,以选择最佳的聚类结果。
对比
使用k-means++方法
在这里插入图片描述
在这里插入图片描述

使用random方法的3个聚类中心
在这里插入图片描述
运算时间为0.14s在这里插入图片描述
两种方法总内部方差一样,运算时间也一样,当更换为更大的数据时30000样本时,在相同运算时间下,k-means++计算的总内部方差更小,收敛效果更好。

5、k_means.fit(X)。使用了k-means算法的fit()方法来拟合数据集X。

6、k_means_cluster_centers = np.sort(k_means.cluster_centers_, axis=0)。在这段代码中,k_means是聚类模型,k_means.cluster_centers_是获取聚类中心的属性,np.sort是对聚类中心进行排序的函数,axis=0表示按照列的顺序进行排序。最后,k_means_cluster_centers存储了排序后的聚类中心。
聚类中心的属性如下:
在这里插入图片描述
排序后结果如下:
在这里插入图片描述
7、k_means_labels = pairwise_distances_argmin(X, k_means_cluster_centers)pairwise_distances_argmin()是一个函数,它根据输入的数据点X和K-means聚类算法的中心点k_means_cluster_centers,计算每个数据点最近的中心点,并返回对应的标签。换句话说,它会将数据点分配到最近的簇中,并返回每个数据点所属的簇标签。
在这里插入图片描述
8、my_members = k_means_labels == k
得到一个布尔值列表,用于下面索引选出不同的类
在这里插入图片描述

参考博文

Python学习——K-means聚类
一文速学数模-聚类模型(一)K-means聚类算法详解+Python代码实例

http://www.qdjiajiao.com/news/12013.html

相关文章:

  • 最牛网站设计公司网络营销外包公司
  • 马和人做人和牛做网站重庆seo排名公司
  • 网站推广的作用是百度大搜
  • 锦州制作网站公司谷歌搜索引擎免费入口2022
  • 做编程网站怎么查搜索关键词排名
  • 注册万维网网站营销网络
  • wordpress 网址导航页快速seo软件
  • wordpress 注册登录插件seo服务外包价格
  • wordpress 字体样式茂名seo顾问服务
  • 公司网站的主页优化微营销推广方案
  • wordpress写文章 字号成都正规搜索引擎优化
  • 微网站是手机网站吗上海网络推广
  • 网站开发语言facebook权威解读当前经济热点问题
  • 建自己的网站多少钱国内快速建站
  • 网站建设pdf下载专业网站推广优化
  • 网站logo在线设计聚合搜索引擎入口
  • 西安网站托管百度爱采购官网首页
  • 网上申报食品经营许可证流程油烟机seo关键词
  • 阜阳网站制作公司报价运营seo是什么意思
  • 天津做车抵的公司58同城关键词怎么优化
  • 图库网站模板什么是网站优化
  • 在网站建设中什么用于搭建页面结构关键词智能优化排名
  • 编译安装wordpress南京百度seo排名
  • 网站设计的专业流程资源搜索器
  • 自己有网站怎么做app优化关键词的方法正确的是
  • 绿色在线网站模板下载咸阳网站建设公司
  • wordpress做小说站企拓客app骗局
  • 网站制作公司代理google搜索关键词热度
  • 做公章网站软文新闻发布平台
  • 个人网站名称怎么取容易备案搜索引擎营销的概念及特点