python数据挖掘之K-Means 二分K-means K-means++ 以及DBSCAN算法的实战应用(超详细必看)

简介: python数据挖掘之K-Means 二分K-means K-means++ 以及DBSCAN算法的实战应用(超详细必看)

二分K-means以及K-means++是K-means的两种变体,可以解决K-means算法质心敏感,过拟合等等问题


运行环境是anaconda+pytorch


项目结构如下

1666444147534.jpg

scutVec.npy中存放数据集


main函数中你可以用不同的方法去跑不同的数据集来观察他们之间的区别


其他几个python文件的代码请点赞关注收藏请评论区留言


main函数代码如下


import numpy as np
from sklearn.preprocessing import StandardScaler, MinMaxScaler
import matplotlib.pyplot as plt
import sklearn.datasets as datasets
import DBSCAN
import KMeansRelevant
def show_cluster_result(cluster, normal_data, cluster_method):
    # 第一幅图展示原始图
    plt.figure(figsize=(24, 10), dpi=80)
    plt.subplot(1, 2, 1)
    plt.scatter(normal_data[:, 0], normal_data[:, 1], color='black')
    plt.title('raw graph')
    # 第二幅图聚类结果
    plt.subplot(1, 2, 2)
    plt.scatter(normal_data[:, 0], normal_data[:, 1], c=cluster, marker='o')
    plt.title(cluster_method)
    plt.legend(labels=['x', 'y'])
    plt.show()
def show_K_dis(data, K):
    distance = DBSCAN.k_nearest_neighbour_distance(dataSet, K)
    x = [i for i in range(distance.shape[0])]
    plt.scatter(x, distance)
    plt.title("Points Sorted by Distance to %ith Nearest Neighbor" % K)
    plt.legend()
    plt.show()
scutJPG = np.load("scutVec.npy")  # 窝工校徽
n_samples = 2500
noisy_circles, _ = datasets.make_circles(n_samples=n_samples, factor=0.5, noise=0.05,random_state=8)
noisy_moons, _ = datasets.make_moons(n_samples=n_samples, noise=0.05,random_state=8)
blobs, _ = datasets.make_blobs(n_samples=n_samples, random_state=8)
# 1,选择不同的数据集
dataSet = scutJPG  # ['noisy_circles', 'noisy_moons', 'blobs', 'scutJPG']
# 2, 对数据进行处理
scaler = StandardScaler()
normal_data = scaler.fit_transform(dataSet)
# 3, 选择并运行聚类算法
cluster_method = "kMeans"  # ['kMeans', 'biKMeans', 'kMeans++', 'DBSCAN']
if cluster_method == "DBSCAN":
    # DBSCAN的参数设置与运行, 请根据K-dis图像来获得大致的eps值
    min_pts = 8
    # 查看k-dist
    show_K_dis(normal_data, min_pts)
    eps = 0.08  # 0.09
    cluster = DBSCAN.dbscan(normal_data, eps, min_pts)
elif cluster_method == "biKMeans":  # 运行二分K-means算法,请指定k值
    cluster = KMeansRelevant.biKMeans(normal_data, 10)
elif cluster_method == "kMeans++":  # 运行K-means++算法,请指定k值
    cluster = KMeansRelevant.kMeansPP(normal_data, 10)
else: # 默认其他跑KMeans
    cluster = KMeansRelevant.origin_kMeans(normal_data, 10)
# 4, 输出聚类结果
num = cluster.max(0)
print("cluster num is:", num + 1)
show_cluster_result(cluster, normal_data, cluster_method)

运行结果如下

1666444162017.jpg

结果可视化如下

1666444187938.jpg

1666444195473.jpg

1666444208234.jpg

需要完整代码和数据集请点赞关注收藏后评论区留言


相关文章
|
5月前
|
数据采集 Web App开发 数据可视化
Python零基础爬取东方财富网股票行情数据指南
东方财富网数据稳定、反爬宽松,适合爬虫入门。本文详解使用Python抓取股票行情数据,涵盖请求发送、HTML解析、动态加载处理、代理IP切换及数据可视化,助你快速掌握金融数据爬取技能。
3485 1
|
5月前
|
Java 数据挖掘 数据处理
(Pandas)Python做数据处理必选框架之一!(一):介绍Pandas中的两个数据结构;刨析Series:如何访问数据;数据去重、取众数、总和、标准差、方差、平均值等;判断缺失值、获取索引...
Pandas 是一个开源的数据分析和数据处理库,它是基于 Python 编程语言的。 Pandas 提供了易于使用的数据结构和数据分析工具,特别适用于处理结构化数据,如表格型数据(类似于Excel表格)。 Pandas 是数据科学和分析领域中常用的工具之一,它使得用户能够轻松地从各种数据源中导入数据,并对数据进行高效的操作和分析。 Pandas 主要引入了两种新的数据结构:Series 和 DataFrame。
631 0
|
5月前
|
JSON 算法 API
Python采集淘宝商品评论API接口及JSON数据返回全程指南
Python采集淘宝商品评论API接口及JSON数据返回全程指南
|
5月前
|
JSON API 数据安全/隐私保护
Python采集淘宝拍立淘按图搜索API接口及JSON数据返回全流程指南
通过以上流程,可实现淘宝拍立淘按图搜索的完整调用链路,并获取结构化的JSON商品数据,支撑电商比价、智能推荐等业务场景。
|
6月前
|
数据采集 关系型数据库 MySQL
python爬取数据存入数据库
Python爬虫结合Scrapy与SQLAlchemy,实现高效数据采集并存入MySQL/PostgreSQL/SQLite。通过ORM映射、连接池优化与批量提交,支持百万级数据高速写入,具备良好的可扩展性与稳定性。
|
6月前
|
运维 监控 JavaScript
基于 Node.js 图结构的局域网设备拓扑分析算法在局域网内监控软件中的应用研究
本文探讨图结构在局域网监控系统中的应用,通过Node.js实现设备拓扑建模、路径分析与故障定位,提升网络可视化、可追溯性与运维效率,结合模拟实验验证其高效性与准确性。
384 3
|
6月前
|
JSON API 数据安全/隐私保护
Python采集淘宝评论API接口及JSON数据返回全流程指南
Python采集淘宝评论API接口及JSON数据返回全流程指南
|
6月前
|
机器学习/深度学习 边缘计算 人工智能
粒子群算法模型深度解析与实战应用
蒋星熠Jaxonic是一位深耕智能优化算法领域多年的技术探索者,专注于粒子群优化(PSO)算法的研究与应用。他深入剖析了PSO的数学模型、核心公式及实现方法,并通过大量实践验证了其在神经网络优化、工程设计等复杂问题上的卓越性能。本文全面展示了PSO的理论基础、改进策略与前沿发展方向,为读者提供了一份详尽的技术指南。
粒子群算法模型深度解析与实战应用
|
6月前
|
机器学习/深度学习 算法 安全
小场景大市场:猫狗识别算法在宠物智能设备中的应用
将猫狗识别算法应用于宠物智能设备,是AIoT领域的重要垂直场景。本文从核心技术、应用场景、挑战与趋势四个方面,全面解析这一融合算法、硬件与用户体验的系统工程。
606 0

推荐镜像

更多