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

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


相关文章
|
14天前
|
存储 数据采集 人工智能
Python编程入门:从零基础到实战应用
本文是一篇面向初学者的Python编程教程,旨在帮助读者从零开始学习Python编程语言。文章首先介绍了Python的基本概念和特点,然后通过一个简单的例子展示了如何编写Python代码。接下来,文章详细介绍了Python的数据类型、变量、运算符、控制结构、函数等基本语法知识。最后,文章通过一个实战项目——制作一个简单的计算器程序,帮助读者巩固所学知识并提高编程技能。
|
14天前
|
小程序 开发者 Python
探索Python编程:从基础到实战
本文将引导你走进Python编程的世界,从基础语法开始,逐步深入到实战项目。我们将一起探讨如何在编程中发挥创意,解决问题,并分享一些实用的技巧和心得。无论你是编程新手还是有一定经验的开发者,这篇文章都将为你提供有价值的参考。让我们一起开启Python编程的探索之旅吧!
40 10
|
21天前
|
机器学习/深度学习 人工智能 算法
探索人工智能中的强化学习:原理、算法与应用
探索人工智能中的强化学习:原理、算法与应用
|
20天前
|
机器学习/深度学习 算法 数据挖掘
C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出
本文探讨了C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出。文章还介绍了C语言在知名机器学习库中的作用,以及与Python等语言结合使用的案例,展望了其未来发展的挑战与机遇。
39 1
|
20天前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
49 1
|
21天前
|
机器学习/深度学习 人工智能 算法
探索人工智能中的强化学习:原理、算法及应用
探索人工智能中的强化学习:原理、算法及应用
|
2月前
|
机器学习/深度学习 算法 搜索推荐
从理论到实践,Python算法复杂度分析一站式教程,助你轻松驾驭大数据挑战!
【10月更文挑战第4天】在大数据时代,算法效率至关重要。本文从理论入手,介绍时间复杂度和空间复杂度两个核心概念,并通过冒泡排序和快速排序的Python实现详细分析其复杂度。冒泡排序的时间复杂度为O(n^2),空间复杂度为O(1);快速排序平均时间复杂度为O(n log n),空间复杂度为O(log n)。文章还介绍了算法选择、分而治之及空间换时间等优化策略,帮助你在大数据挑战中游刃有余。
86 4
|
5月前
|
机器学习/深度学习 算法 搜索推荐
从理论到实践,Python算法复杂度分析一站式教程,助你轻松驾驭大数据挑战!
【7月更文挑战第22天】在大数据领域,Python算法效率至关重要。本文深入解析时间与空间复杂度,用大O表示法衡量执行时间和存储需求。通过冒泡排序(O(n^2)时间,O(1)空间)与快速排序(平均O(n log n)时间,O(log n)空间)实例,展示Python代码实现与复杂度分析。策略包括算法适配、分治法应用及空间换取时间优化。掌握这些,可提升大数据处理能力,持续学习实践是关键。
134 1
|
6月前
|
存储 机器学习/深度学习 算法
Python算法基础教程
Python算法基础教程
36 0
|
数据采集 SQL 算法
C++、Python、数据结构与算法、计算机基础、数据库教程汇总!
C++、Python、数据结构与算法、计算机基础、数据库教程汇总!
223 0
C++、Python、数据结构与算法、计算机基础、数据库教程汇总!

热门文章

最新文章