肘部取值法 并给出应该选择k的大小

在K均值聚类中,"肘部取值法"是一种常用的方法,用于帮助选择最佳的聚类数量K。该方法涉及绘制不同K值下的聚类误差(通常是平方误差和)的图表,然后找出曲线出现拐点的位置,该拐点对应的K值通常被认为是最佳的选择。

下面是使用肘部取值法选择K的一般步骤:

  1. 对于给定的数据集,尝试使用不同的K值运行K均值聚类算法。
  2. 对每个K值计算聚类误差(通常是样本到其所属簇中心的平方距离之和)。
  3. 绘制K值与聚类误差的图表。
  4. 在图表中找到一个拐点,该拐点对应的K值通常被认为是最佳选择。

下面是一个简单的示例代码,用于实现肘部取值法:

import pandas as pd
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt

# 用于聚类的数据
# 这里假设你已经有了处理后的数据,可以直接使用上面的处理后的数据df
# 请将df替换为你的数据
# df = ...

# 存储不同K值下的聚类误差
sse = []

# 尝试不同的K值运行K均值聚类算法
for k in range(1, 11):
    kmeans = KMeans(n_clusters=k, random_state=42)
    kmeans.fit(df[['distance', 'longitude', 'latitude']])
    sse.append(kmeans.inertia_)

# 绘制K值与聚类误差的图表
plt.plot(range(1, 11), sse, marker='o')
plt.xlabel('K')
plt.ylabel('SSE')  # Sum of Squared Errors
plt.title('best k')//肘部法确定最佳K值
plt.show()

我的前边是这样的

import pandas as pd
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
import random
import numpy as np
from sklearn.preprocessing import MinMaxScaler # 归一化处理

df = pd.read_csv("./dinner.csv")
df = df.drop('Unnamed: 0', axis=1)

df.info()


df[['longitude', 'latitude']] = df['location'].str.split(',', expand=True)
# 重新排列列的顺序
df = df.drop('location',axis=1)
df.head()

跑出来

全部运行结果

o,真的好像胳膊肘哦

  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值