赞
踩
聚类是机器学习算法中“新算法”出现最多、最快的领域。一个重要的原因是聚类不存在客观标准。下面我们分别介绍K-means聚类、DBSCAN算法(密度聚类)、AgglomerativeClustering算法(层次聚类)。
class sklearn.cluster.KMeans(n_clusters=8, *, init='k-means++', n_init=10, max_iter=300, tol=0.0001,
precompute_distances='deprecated', verbose=0, random_state=None, copy_x=True, n_jobs='deprecated', algorithm='auto')
参数介绍:
- ‘k-means++’:该初始化策略选择的初始均值向量相互之间都距离较远,它的效果较好(这个策略一定程度上可以解决K均值算法收敛依赖初始化的均值的问题)
- ‘random’:从数据集中随机选择K个样本作为初始均值向量。
- 或者提供一个数组,数组的形状为(n_clusters.n_features),该数组作为初始均值向量。
- auto’:如果n_samples*n_clusters > 12 million,则不提前计算;
- True:总是提前计算;
- False:总是不提前计算。
- 如果为整数,则它指定了随机数生成器的种子。
- 如果为RandomState实例,则指定了随机数生成器。
- 如果为None,则使用默认的随机数生成器。
- 如果为True,则预计算距离的时候,并不修改原始数据。
- 如果为False,则预计算距离的时候,会修改原始数据用于节省内存;然后当算法结束的时候,会将原始数据返还。但是可能会因为浮点数的表示,会有一些精度误差。
属性介绍:
方法介绍:
import numpy as np import matplotlib.pyplot as plt from sklearn.datasets.samples_generator import make_blobs from sklearn import cluster from sklearn.metrics import adjusted_rand_score # make_blobs函数产生的是分隔的高斯分布的聚类簇 def create_data(centers, num=100, std=0.7): X, labels_true = make_blobs(n_samples=num, centers=centers, cluster_std=std) return X, labels_true # 观察生成点 def plot_data(*data): X, labels_true = data labels = np.unique(labels_true) fig, ax = plt.subplots() colors = 'rgbyckm' for i, label in enumerate(labels): position = labels_true == label # 散点图 ax.scatter(X[position, 0], X[position, 1], label="cluster %d" % label, color=colors[i % len(colors)]) # 图例位置 ax.legend(loc='best') ax.set_xlabel("X_0") ax.set_ylabel("X_1") ax.set_title('data') plt.show() # 考察簇的数量 def test_Kmeans(*data): X, label_true = data nums = range(1, 20) # ARI指数 ARIS = [] Distances = [] for num in nums: cls = cluster.KMeans(n_clusters=num, init='k-means++') cls.fit(X) predicted_labels = cls.predict(X) # ARI指标 ARIS.append(adjusted_rand_score(label_true, predicted_labels)) # 距离之和 Distances.append(cls.inertia_) return nums, ARIS, Distances # 寻找最佳聚类中心 def plot_kmeans(*data
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。