IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 数据科学【五】:聚类(一) -> 正文阅读

[人工智能]数据科学【五】:聚类(一)

数据科学【五】:聚类(一)

本文代码基于数据科学【四】:基本可视化(二)

Kmeans 聚类

示例:使用longitude, latitude, price, number_of_reviews四个特征对房产进行聚类,并将聚类在地图上可视化。不同聚类使用不同颜色显示。

from sklearn.cluster import KMeans
df_h = airbnb_df[['latitude', 'longitude', 'price','number_of_reviews']]
data_h = df_h.values
data_list = data_h.tolist()
kmeans_h = KMeans(n_clusters=5).fit(data_h)
labels_h = kmeans_h.labels_.tolist()

colors = ['red', 'blue', 'gray', 'green', 'purple']
map_nyc_h = folium.Map(nyc_base, zoom_start=8)
for i in range(len(labels_h)):
    folium.CircleMarker([data_list[i][0], data_list[i][1]], color=colors[labels_h[i]]).add_to(map_nyc_h)

map_nyc_h.save("map_1h.html")

效果如图:
在这里插入图片描述
很诡异对吧,诡异就对了。因为相较于price和number_of_reviews,经纬度在不同数据之间的差距非常小,所以聚类基本上是按照经纬度均匀分布的,也就是在地图上混在一起。

聚类效果评价

聚类效果的评价指标可以使用sklearn的silhouette score评价。这个值越大,说明不同聚类之间分的越明显,效果越好。在KMeans聚类时有时我们不确定k为和值时效果最好,这时可以试验多个k值,取silhouette score最大的k值。

示例:对上文的四个特征进行聚类,看最佳k值

from sklearn import metrics

for cluster_num in range(2, 7):
    kmeans_j = KMeans(cluster_num).fit(data_h)
    labels_j = kmeans_j.labels_
    print(metrics.silhouette_score(data_h, labels_j))
0.9777638276553681
0.8463525243386326
0.7289984978753536
0.5977807377876659
0.5978460763136394

很明显,最佳k值是2。

层次聚类可视化:树状图

我们可以使用树状图(dendrogram)来可视化层次聚类的过程。
示例:对于标签为shared_room的房产,使用树状图可视化基于经纬度以及价格的层次聚类:

注意:由于层次聚类可视化需要获得数据之间的“距离”,我们需要先计算距离矩阵,使用distance.pdist()

df_l = airbnb_df[airbnb_df.room_type=='Shared room'][['longitude', 'latitude','price']]
data_l = df_l.values

from scipy.cluster.hierarchy import linkage, dendrogram, distance

disMat_l =distance.pdist(data_l, 'euclidean')

plt.figure(figsize=(20, 8), dpi=80)
Z_l = linkage(disMat_l)
P_l = dendrogram(Z_l, 0)
plt.show()

在这里插入图片描述
示例:将数据正则化之后可视化:

df_n = df_l
df_n['price'] = (df_n['price'] - df_n['price'].mean())/df_n['price'].std()
data_n = df_n.values

disMat_n =distance.pdist(data_n, 'euclidean')

plt.figure(figsize=(20, 8), dpi=80)
Z_n = linkage(disMat_n)
P_n = dendrogram(Z_n, 0)
plt.show()

在这里插入图片描述

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-05-24 18:10:12  更:2022-05-24 18:13:41 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 5:58:24-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码