##K-means
import numpy as np
import pandas as pd
from sklearn.cluster import KMeans
#1.导入数据
#data = pd.read_csv(’’)
#2.数据预处理
#略,最终生成x_train,x_test
x_train = np.array([[1, 2, 3], [1, 4, 6], [1, 0, 9], [4, 6, 1], [7, 8, 9], [4, 5, 6], [5, 1, 3], [5, 6, 2], [6, 2, 1]])
#3.模型训练
model = KMeans(n_clusters=3, random_state=0)
model.fit(x_train)
#4.模型预测
x_test = np.array([[1, 2, 3], [1, 4, 6], [1, 0, 9]])
y_predict = model.predict(x_test)
print(y_predict)
#参数列表与调参方法
KMeans(n_clusters=8, init=’k-means++’, n_init=10, max_iter=300, tol=0.0001,
precompute_distances=’auto’, verbose=0, random_state=None, copy_x=True, n_jobs=None, algorithm=’auto’)
#n_clusters : int,可选,默认值:8,要形成的簇数以及要生成的质心数。
#init : {‘k-means ++’,‘random’或ndarray}
初始化方法,默认为’k-means ++’:
‘k-means ++’:以智能方式选择初始聚类中心进行k均值聚类,以加速收敛。有关更多详细信息,请参阅k_init中的注释部分。
‘random’:从初始质心的数据中随机选择k个观测值(行)。
如果传递了ndarray,它应该是自定义数组(n_clusters,n_features)并给出初始中心。
#n_init : int,默认值:10
使用不同质心种子运行k-means算法的时间。在惯性方面,最终结果将是n_init连续运行的最佳输出。
#max_iter : int,默认值:300
单次运行的k-means算法的最大迭代次数。
#tol : float,默认值:1e-4
关于声明收敛的惯性的相对容差
#precompute_distances : {‘auto’,True,False}
预计算距离(更快但需要更多内存)。
‘auto’:如果n_samples * n_clusters> 1200万,请不要预先计算距离。这相当于使用双精度的每个作业大约100MB的开销。
True:始终预先计算距离
False:从不预先计算距离
#verbose : int,默认值为0
详细模式。
#random_state : int,RandomState实例或None(默认)
确定质心初始化的随机数生成。使用int可以使随机性具有确定性。
#copy_x : 布尔值,可选
当预先计算距离时,首先使数据居中在数值上更准确。如果copy_x为True(默认值),则不修改原始数据,确保X是C连续的。
如果为False,原始数据被修改,并在函数返回之前返回,但是可以通过减去然后添加数据均值来引入小的数值差异,
在这种情况下,它也不能确保数据是C连续的,这可能导致显着放缓。
#n_jobs : int或None,可选(默认=无)
用于计算的作业数。这通过并行计算每个n_init运行来工作。
None除非在joblib.parallel_backend上下文中,否则表示1 。 -1表示使用所有处理器。
#algorithm : “auto”, “full” or “elkan”, default=”auto”
K-means算法使用。经典的EM风格算法是“full”。通过使用三角不等式,“elkan”变体更有效,但目前不支持稀疏数据。
“auto”选择“elkan”表示密集数据,“full”表示稀疏数据。