0%

sklearn入门-非监督学习

对不带标签的数据进行学习。

k均值算法(k-Means)(sklearn.cluster.KMeans)

最基本的聚类算法。

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=8 聚类数。
init='k-means++' 初始化聚类中心方法。/ ‘auto’ / 数组shape (n_clusters, n_features)
n_init=1 算法选择不同聚类中心运行的次数,保留最好的结果。
max_iter=300 单次运行的最大迭代数目。
tol=0.0001 停止迭代的相对误差界限。
precompute_distances='auto' {‘auto’, True, False}是否预先计算距离,选择’auto’时,当n_samples * n_clusters>1,000,000 则不预先计算。
verbose=0 int
random_state=None 如果是int,则random_state是随机数生成器使用的种子; 如果是RandomState实例,则random_state是随机数生成器; 如果为None,则随机数生成器是np.random。
copy_x=True 是否拷贝训练数据。
n_jobs=None 并行作业数。
algorithm='auto' “auto”, “full” or “elkan”. 指定要使用的算法。

1
2
3
4
5
from sklearn.cluster import KMeans
km_model = KMeans(n_clusters=8, random_state=None)
km_model.fit_transform()
centers = km_model.cluster_centers_ #聚类中心
y_pre = km_model.labels_ #每个样本点的标签

自底向上层次聚类(sklearn.cluster.AgglomerativeClustering)

层次聚类可分为两类:自顶向下, diverse;自底向上, agglomerative。

AgglomerativeClustering(n_clusters=2, affinity=’euclidean’, memory=None, connectivity=None, compute_full_tree=’auto’, linkage=’ward’, pooling_func=’deprecated’)
n_clusters=2 最终的聚类数。
affinity='euclidean' {‘euclidean’, ‘l1’, ‘l2’, ‘manhattan’, ‘cosine’, ‘precomputed’}. 用于计算距离,当linkage=’ward’,只支持’euclidean’。
memory=None 默认不缓存计算树的输出,以字符指定缓存路径。
connectivity=None 一个数组或者可调用对象或者None,用于指定连接矩阵
compute_full_tree='auto' 通常当训练了n_clusters后,训练过程就会停止,但是如果compute_full_tree=True,则会继续训练从而生成一颗完整的树。
linkage='ward' 一个字符串,用于指定链接算法。’ward’:单链接; ‘complete’:全链接; ‘average’:均连接。
pooling_func='deprecated' 一个可调用对象,它的输入是一组特征的值,输出是一个数

1
2
from sklearn.cluster import AgglomerativeClustering
agg_cluster = AAgglomerativeClustering(n_clusters=2, linkage='ward')