K-means的python实现(备注详细)

本文详细介绍了如何使用Python的Scikit-Learn库进行K-Means聚类分析。从数据加载到模型训练,再到结果可视化,每一步都有详细的代码实现。特别展示了如何将.mat文件中的数据读取并用于K-Means算法,最后通过散点图直观展示聚类效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入代码片#-*- coding: utf-8 -*-
import numpy as np
from scipy import io as spio
from matplotlib import pyplot as plt
from sklearn.cluster import KMeans


def kMenas():
    #下载数据
    #已经改为绝对路径
    data = spio.loadmat("/Users/macbook/Desktop/MachineLearning_Python-master/K-Means/data.mat")
    #准备数据一般都用X大写表示,源于f(x)=y
    '''在读取的.mat的数据中,全部数据就叫做X
    '''
    X = data['X']   
    model = KMeans(n_clusters=5).fit(X) # n_clusters指定3类,拟合数据
    centroids = model.cluster_centers_  # 聚类中心
    #scatte中的x[:,0]是shape数组方法
    #x=reshape((2,2))两行两列
    #x=reshape((2,2,2))三维数组 2 2 2 
    #shape方法可以输出矩阵的维度,shape[0]和shape[1]分别代表行和列的长度,
    
    #我们不知道z的shape属性是多少,但是想让z变成只有一列,行数不知道多少,通过`z.reshape(-1,1)`,
    # Numpy自动计算出有12行,新的数组shape属性为(16, 1),与原来的(4, 4)配套。
    plt.xlim(-1,10)
    plt.ylim(-1,6)
    plt.scatter(X[:,0], X[:,1],color="gray")     # 原数据的散点图
    #scatter中[:,0] :前表示行,右表示列 
    #A=B(2,:)   取B的第二行
    #C=B(:,2)   取B的第二列
    plt.plot(centroids[:,0],centroids[:,1],'g*',markersize=10)  # 聚类中心
    #r* r^h
    plt.show()

if __name__ == "__main__":
    kMenas()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值