K-means K 值选择
拍脑袋法
一个非常快速的,拍脑袋的方法是将样本量除以2再平方出来的值作为K值:
# python 求平方根函数
import numpy as np
import math
# numpy 库
print("np.sqrt(4):",np.sqrt(4))
# 内置函数
print("pow(4,0.5):", pow(4,0.5))
# math 库
print("math.sqrt(4):",math.sqrt(4))
# n 为样本数
n=200
k=np.sqrt(n/2)
k
肘部法则
Elbow Method :Elbow意思是手肘,此种方法适用于 K 值相对较小的情况,当选择的k值小于真正的时,k每增加1,cost值就会大幅的减小;当选择的k值大于真正的K时, k每增加1,cost值的变化就不会那么明显。这样,正确的k值就会在这个转折点,类似elbow的地方。
# clustering dataset
# determine k using elbow method
from sklearn.cluster import KMeans
from scipy.spatial.distance import cdist
import numpy as np
import matplotlib.pyplot as plt
x1 = np.array([3, 1, 1, 2, 1, 6, 6, 6, 5, 6, 7, 8, 9, 8, 9, 9, 8])
x2 = np.array([5, 4, 5, 6, 5, 8,