赞
踩
确定 K 值是 K-means 聚类分析的一个重要步骤。不同的 K 值可能会产生不同的聚类结果,因此选择合适的 K 值非常重要。
以下是一些常见的方法来选择 K 值:
from sklearn.cluster import KMeans import matplotlib.pyplot as plt import numpy as np # 导入数据集 X = np.loadtxt('wholesale_customers_data.csv', delimiter=',', skiprows=1) # 定义 SSE 函数 def sse(X, k): kmeans = KMeans(n_clusters=k) kmeans.fit(X) return kmeans.inertia_ # 定义 K 值的范围 k_range = range(1, 11) # 计算每个 K 值对应的 SSE sse_list = [sse(X, k) for k in k_range] # 绘制 SSE 与 K 值之间的关系图 plt.plot(k_range, sse_list) plt.xlabel('K') plt.ylabel('SSE') plt.show() # 找到手肘点并将其打印出来 diffs = np.diff(sse_list) elbow_point = k_range[np.argmax(diffs) + 1] print(f"The elbow point is at K = { elbow_point}")
使用 NumPy 库中的 loadtxt() 函数从 CSV 文件中加载数据集。具体来说,该函数将 CSV 文件中的每一行视为一个样本,每一列视为一个特征,并将它们存储在一个 NumPy 数组中。
该函数的参数包括:
因此,X = np.loadtxt(‘wholesale_customers_data.csv’, - delimiter=‘,’, skiprows=1) 这行代码的作用是将 Wholesale customers 数据集从 CSV 文件中加载到名为 X 的 NumPy 数组中,以便用于后续的聚类分析。
kmeans.inertia_ 是 KMeans 聚类算法中的一个属性,它表示聚类模型的 SSE(Sum of Squared Errors,平方误差和),即
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。