聚类算法初步涉猎

1. 聚类与分类的区别

(1)分类

举个🌰:大家平常使用的阿里邮箱、QQ邮箱、网易邮箱都有个「垃圾邮件」的功能,其原理是根据人们打标的结果进行分析,从而实现系统自动过滤垃圾软件的功能。

分类是从特定的数据中挖掘模式,做出判断的过程。本质是向事物分配标签,其本身是一种监督学习算法。

(2)聚类

聚类最终的目的也是实现数据分类,但是事先并不知道如何去划分,完全是通过算法判数据之间的相似性,它就是将相似的事物放在一起,其本身是一种无监督学习算法。

2. 聚类算法在现实生活中的应用

(1)用户画像
在这里插入图片描述
有效利用数据资源,深入挖掘客户潜在需求,能够个性化、精准化地营销,提升客户黏性,创造商业化价值。

(2)基于位置信息的商业推送
在这里插入图片描述
用户使用移动网络时,会自然地留下位置信息。软件通过定位用户的信息,结合附近商户的信息,给用户推送位置营销服务,提升商户效益。同时,也能为餐饮机构提供新店选址。

(3)搜索引擎与智能推荐
在这里插入图片描述
浏览器中使用最高频的就是搜索功能。很多网民的查询意图比较类似,通过对这些查询进行聚类,一方面可以使用内部的词进行关键词推荐;另一方面,如果聚类过程实现自动化,也有助于发现新的话题,还能减少存储空间。

3.聚类算法实现流程

1.随机设置K个特征空间内的点作为初始的聚类中心
在这里插入图片描述
2.对于其他每个点计算到K个中心的距离,未知的点选择最近的一个聚类中心点作为标记类别。
在这里插入图片描述
3.接着对着标记的聚类中心之后,重新计算每个聚类的新中心点(平均值)

4.如果计算得出的新中心点与原中心点一样(质心不再移动),那么结束,否则重新进行第二步过程。最终结果如下:
在这里插入图片描述

4.聚类算法API初步调用

数据集: NYC_Wi-Fi_Hotspot_Locations.csv (来源:https://www.kaggle.com/)
在这里插入图片描述

说明:数据集中有很多自字段,这边主要取X、Y的信息。探究:免费的公共WiFi是否倾向于聚集在某些(较富裕)区域附近?谁是免费的WiFi提供商,他们倾向于设置在哪里?

KMeans算法参数介绍:

参数参数说明
n_clusters生成的聚类数,缺省值为8
init制定初始化方法,可选k-means++ / random / 传递一个ndarray向量
n_init用不同的聚类中心初始化值运行算法的次数,缺省值为10
max_iter执行一次KMeans算法所进行的最大迭代数,缺省值为300
tol默认值为1e-4,确定收敛条件的参数之一
precompute_distances预先计算距离,可选auto / true / false
verbose是否输出详细信息,默认为0
random_state用于初始化质心的生成器,可选
copy_x在提前计算距离的时候起作用
n_jobs制定计算所用的进程数
algorithm优化算法的选择,可选auto / full / elkan

API简单调用及实现

import pandas as pd
from matplotlib import pyplot as plt
from sklearn.cluster import KMeans
from sklearn.metrics import calinski_harabasz_score
from sklearn.metrics import silhouette_score

# 读取数据
data = pd.read_csv("NYC_Wi-Fi_Hotspot_Locations.csv")

# 获取表格的列数据
x = data.iloc[:,[8, 9]].values

# kmeans训练,且可视化
pre = KMeans(n_clusters=5,random_state=9).fit_predict(x)

# 可视化展示
plt.scatter(x[pre == 0, 0], x[pre == 0, 1], s = 20, c = 'blue', label = '1')
plt.scatter(x[pre == 1, 0], x[pre == 1, 1], s = 20, c = 'cyan', label = '2')
plt.scatter(x[pre == 2, 0], x[pre == 2, 1], s = 20, c = 'green', label = '3')
plt.scatter(x[pre == 3, 0], x[pre == 3, 1], s = 20, c = 'red', label = '4')
plt.scatter(x[pre == 4, 0], x[pre == 4, 1], s = 20, c = 'yellow', label = '5')

plt.title('City Clustering')
plt.legend()
plt.grid(linestyle='-.',c='#E1E1E1')
plt.show()

# 使用CH指数评价
print("CH指数=",calinski_harabasz_score(x,pre))

# 使用轮廓系数评价
print("轮廓系数=",silhouette_score(x,pre))

结果分析

1.运行结果
在这里插入图片描述
本例使用了CH指数和轮廓指数进行评价。

CH指数: 通过计算类中各点与类中心的距离平方和来度量类内的紧密度,通过计算各类中心点与数据集中心点距离平方和来度量数据集的分离度,CH指标由分离度与紧密度的比值得到。因此,CH值越大代表着类自身越紧密,类与类之间越分散,即更优的聚类结果。

轮廓指数: 结合内聚度和分离度两种因素进行评价,可以用来评价聚类效果的好坏。轮廓指数越接近1,说明样本聚类越合理。

2.图像分析
在这里插入图片描述
通过聚类分析,对于纽约市WIFI热点分布有了清晰直观的了解。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值