python数据分析——聚类

参考资料:活用pandas库

1、k均值聚类

        使用k均值算法,首先要选定数据中的群集数(k)。它会随机选取数据中的k个点,计算每个数据点到最初选取的k个点之间的距离。最接近某个群集的点会被划分到同一个集群组。然后把每个群集的中心指定为新的集群中心。重复该过程,计算每个点到每个群集中心的距离,并将其分配给一个群集,然后选择一些新的中心。该算法会重复执行直至收敛。

# 导入pandas库
import pandas as pd
# 读取数据集
wine=pd.read_csv(r"...\data\wine.csv")
# 数据展示,注意:数据值全是数值
print(wine.head())
# 删除Cultivar列,因为它与数据中的实际群集关联太过紧密
wine=wine.drop("Cultivar",axis=1)

# 导入KMeans模块
from sklearn.cluster import KMeans
# 创建3个群集
# 设置随机种子
kmeans=KMeans(n_clusters=3,random_state=42).fit(wine.values)
# 输出kmeans对象
print(kmeans)

import numpy as np
print(np.unique(kmeans.labels_,return_counts=True))

        由于人眼只能看到三维空间中的事物,所以需要减少数据的维数(至少要降至3维)。而且由于在纸张上绘制这些点,应尽量把维数降至2。

        主成分分析(PCA)是一种投影技术,用于减少数据集的维数。其工作原理是在数据中找到较低的维数,将方差最大化。

# 从sklearn库中导入PCA模块
from sklearn.decomposition import PCA
# 把数据投射到两个成分上
pca=PCA(n_components=2).fit(wine)
# 转换数据到新空间
pca_trans=pca.transform(wine)
# 为投影命名
pca_trans_df=pd.DataFrame(pca_trans,columns=['pca1','pca2'])
# 连接数据
kmeans_3=pd.DataFrame(kmeans.labels_,columns=['cluster'])
kmeans_3=pd.concat([kmeans_3,pca_trans_df],axis=1)
print(kmeans_3.head())
# 绘制散点图
import seaborn as sns
import matplotlib.pyplot as plt
fig=sns.lmplot(x='pca1',y='pca2',data=kmeans_3,
              hue='cluster',fit_reg=False)

2、层次聚类

        层次聚类旨在构建群体层次结构。具体实现方法有两种:一种是自下而上的凝聚法,另一种是从上到下的分裂法。

(1)最长距离法

# 导入hierarchy模块
from scipy.cluster import hierarchy
wine_complete=hierarchy.complete(wine)
fig=plt.figure()
dn=hierarchy.dendrogram(wine_complete)

(2)最短距离法

wine_single=hierarchy.single(wine)
fig=plt.figure()
dn=hierarchy.dendrogram(wine_single)

(3)平均距离法

wine_average=hierarchy.average(wine)
dn=hierarchy.dendrogram(wine_average)

(4)重心法

wine_centroid=hierarchy.centroid(wine)
dn=hierarchy.dendrogram(wine_centroid)

(5)手动设置阈值

        可以为color_threshold传入值来根据特定阈值给组着色。scipy默认使用预设的MATLAB值。

wine_complete=hierarchy.complete(wine)
fig=plt.figure()
dn=hierarchy.dendrogram(
    wine_complete,
    # 默认MATLAB阈值
    color_threshold=0.7*max(wine_complete[:,2]),
    above_threshold_color='y'
)

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-09 09:28:01       91 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-09 09:28:01       97 阅读
  3. 在Django里面运行非项目文件

    2024-06-09 09:28:01       78 阅读
  4. Python语言-面向对象

    2024-06-09 09:28:01       88 阅读

热门阅读

  1. C语言学习笔记 库文件

    2024-06-09 09:28:01       29 阅读
  2. 使用uniapp的canvas制作签名组件

    2024-06-09 09:28:01       32 阅读
  3. linux cron 执行url

    2024-06-09 09:28:01       26 阅读
  4. Linux Swap Cache

    2024-06-09 09:28:01       23 阅读
  5. QUAST安装及使用(Bioinformatics工具-022)

    2024-06-09 09:28:01       23 阅读
  6. c++【入门】求梯形的面积

    2024-06-09 09:28:01       32 阅读
  7. 360数字安全:2024年2月勒索软件流行态势分析报告

    2024-06-09 09:28:01       27 阅读
  8. 我更看好开源大模型的发展前景

    2024-06-09 09:28:01       27 阅读
  9. 云上小知识:企业选择云服务的小Tips

    2024-06-09 09:28:01       31 阅读
  10. Oracle Streams XStreams?

    2024-06-09 09:28:01       21 阅读
  11. 沪深历史行情下载,金融数据库查询

    2024-06-09 09:28:01       26 阅读
  12. TalkingData数据统计:洞察与应用

    2024-06-09 09:28:01       34 阅读