sklearn.KMeans解析

sklearn版本

  • scikit-learn 0.23.2

sklearn.KMeans使用实例

  • 实例1 Iris,鸢尾花数据集(UC Irvine Machine Learning Repository)

    Iris可以从sklearn包内部导入,常常用作分类的训练数据集。这里为了方便展示聚类效果(二维在平面图中效果明显),选取Iris的前两个维度作为聚类依据。代码参见Iris_KMeans.py。左图为全部数据点,右图为KMeans聚类(n_cluseters=3,Iris数据集本就采集自3种鸢尾花)结果,不同颜色代表不同簇。
  • 实例2 RandomData,在二维坐标轴排列成一条直线的随机数据

    这一个例子主要展现不同簇数量(n_cluseters)对聚类效果的影响。为此首先用make_blobs生成属于4个簇的随机点,最后用Calinski-Harabasz Index评估方式为不同簇数量的聚类打分,代码参见RandomData_KMeans.py。最左图为全部数据点。剩余三张图分别为簇数量为3、4、5的KMeans聚类结果。显然n_cluseters=4时效果是最好的。

sklearn.KMeans解析

sklearn中包括KMeans和MiniBatchKMeans两种k-means聚类,后者对大规模数据集进行采样后执行k-means,避免计算量过大。本节分析sklearn.KMeans中的主要函数。

  • KMea

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
data=xlsread('D:\usedata\lastdata3.xlsx') data=data(:,1:2) from sklearn.cluster import KMeans from sklearn.metrics import pairwise_distances_argmin def fuzzy_c_means_clustering(X, n_clusters): # 使用 k-means 算法初始化聚类中心 kmeans = KMeans(n_clusters=n_clusters) kmeans.fit(X) centers = kmeans.cluster_centers_ # 调用 fcm 函数进行模糊聚类 u, _, _, _, _, _ = fcm(X, centers, 2, error=1e-5, maxiter=1000) # 找到每个样本所属的聚类 labels = pairwise_distances_argmin(X, centers, axis=1) return u, centers, labels options = [2, 100, 1e-5, 0]; % 运行FCM聚类 [centers,U] = fcm(data, 4, options); % 可视化结果 figure;plot(data(:,1), data(:,2), 'o'); hold on; maxU = max(U); index1 = find(U(1,:) == maxU); index2 = find(U(2,:) == maxU); index3 = find(U(3,:) == maxU); index4 = find(U(4,:) == maxU); line(data(index1,1), data(index1,2), 'linestyle', 'none', 'marker', 'o', 'color', 'g'); line(data(index2,1), data(index2,2), 'linestyle', 'none', 'marker', 'o', 'color', 'r'); line(data(index3,1), data(index3,2), 'linestyle', 'none', 'marker', 'o', 'color', 'b'); line(data(index4,1), data(index4,2), 'linestyle', 'none', 'marker', 'o', 'color', 'c'); plot(centers(1,1), centers(1,2), 'x', 'linewidth', 2, 'markersize', 8, 'color', 'k'); plot(centers(2,1), centers(2,2), 'x', 'linewidth', 2, 'markersize', 8, 'color', 'k'); plot(centers(3,1), centers(3,2), 'x', 'linewidth', 2, 'markersize', 8, 'color', 'k'); plot(centers(4,1), centers(4,2), 'x', 'linewidth', 2, 'markersize', 8, 'color', 'k'); disp('聚类中心:') disp(centers) for i = 1:size(centers,1) disp(['第',num2str(i),'个聚类的范围:']) index = find(U(i,:) == maxU); range = [min(data(index,1)), max(data(index,1)), min(data(index,2)), max(data(index,2))]; disp(range) end代码的问题
05-18
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值