栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

【数据聚类】本专栏中涉及数据集、可视化及注意事项

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【数据聚类】本专栏中涉及数据集、可视化及注意事项

文章目录
  • 一:聚类常用数据集
    • (1)常用数据集
    • (2)下载
  • 二:数据归一化
  • 三:可视化处理
    • (1)方法一
    • (2)方法二
  • 四:一些总结

一:聚类常用数据集 (1)常用数据集

Iris数据集


人造数据集之438-3

Jain数据集

melon数据集

Spril数据集

threeCircles数据集

Square数据集

lineblobs数据集

788points数据集

gassian数据集

arrevation数据集

(2)下载

点击关注后私信我(片刻回复)

  • 由于链接极易失效且为了方便更新,请见谅
二:数据归一化

为了统一量纲,需要对数据集进行归一,这里使用最常见的“0-1归一化”方式即可

min_vals = train_data.min(0)
max_vals = train_data.max(0)
ranges = max_vals - min_vals
normal_data = np.zeros(np.shape(train_data))
nums = train_data.shape[0]
normal_data = train_data - np.tile(min_vals, (nums, 1))
normal_data = normal_data / np.tile(ranges, (nums, 1))
print(normal_data)
三:可视化处理

聚类效果展示是非常重要的环节,这里给出几个例子,适用于不同聚类类型的聚类算法,读者可以在你的代码上稍作修改

  • 建议有Python绘图基础
(1)方法一
  • 一般适用于基于划分的聚类算法(如K-Means)
  • 算法一般会返回聚类中心和样本点所属簇的编号这两个列表
import pandas as pd
import matplotlib.pyplot as plt
import KMeans2
import numpy as np

Iris_types = ['Iris-setosa', 'Iris-versicolor', 'Iris-virginica']  # 花类型
Iris_data = pd.read_csv('./Iris.csv')
x_axis = 'PetalLengthCm'  # 花瓣长度
y_axis = 'PetalWidthCm'   # 花瓣宽度
# x_axis = 'SepalLengthCm'  # 花萼长度
# y_axis = 'SepalWidthCm'  # 花萼宽度

examples_num = Iris_data.shape[0]  # 样本数量
train_data = Iris_data[[x_axis, y_axis]].values.reshape(examples_num, 2)  # 整理数据

# 归一化
min_vals = train_data.min(0)
max_vals = train_data.max(0)
ranges = max_vals - min_vals
normal_data = np.zeros(np.shape(train_data))
nums = train_data.shape[0]
normal_data = train_data - np.tile(min_vals, (nums, 1))
normal_data = normal_data / np.tile(ranges, (nums, 1))

#  训练参数
k = 3  # 簇数
max_iterations = 50  # 最大迭代次数
centroids, cluster = KMeans2.k_means(normal_data, k, max_iterations)


plt.figure(figsize=(12, 5), dpi=80)

#  第一幅图是已知标签或全部数据
plt.subplot(1, 2, 1)

for Iris_type in Iris_types:
        plt.scatter(Iris_data[x_axis], Iris_data[y_axis], c='black')
plt.title('raw')

# 第二幅图是聚类结果
plt.subplot(1, 2, 2)
for centroid_id, centroid in enumerate(centroids):  # 非聚类中心
    current_examples_index = (cluster == centroid_id).flatten()
    plt.scatter(normal_data[current_examples_index, 0], normal_data[current_examples_index, 1])

for centroid_id, centroid in enumerate(centroids):  # 聚类中心
    plt.scatter(centroid[0], centroid[1], c='red', marker='x')
plt.title('label kemans')
plt.show()




(2)方法二

暂略

四:一些总结
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/969419.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号