数据挖掘——对鸢尾花数据进行聚类分析

算法原理

k-means算法是一种聚类算法,所谓聚类,即根据相似性原则,将具有较高相似度的数据对象划分至同一类簇,将具有较高相异度的数据对象划分至不同类簇。聚类与分类最大的区别在于,聚类过程为无监督过程,即待处理数据对象没有任何先验知识,而分类过程为有监督过程,即存在有先验知识的训练数据集。
k-means算法中的k代表类簇个数,means代表类簇内数据对象的均值(这种均值是一种对类簇中心的描述),因此,k-means算法又称为k-均值算法。k-means算法是一种基于划分的聚类算法,以距离作为数据对象间相似性度量的标准,即数据对象间的距离越小,则它们的相似性越高,则它们越有可能在同一个类簇。数据对象间距离的计算有很多种,k-means算法通常采用欧氏距离来计算数据对象间的距离。

实验内容

1、随机生成100个数,并对这100个数进行k-mean聚类(k=3,4,5,6)(并用matplot画图)

import numpy as np
import matplotlib
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
matplotlib.rcParams['font.family'] = 'SimHei'  # 中文显示
dataSet = np.random.rand(100, 3)  # 生成一个随机数据,样本大小为100, 特征数为3
for k in range(3, 7):
    clf = KMeans(n_clusters=k)  # 设定k
    s = clf.fit(dataSet)  # 加载数据集合
    numSamples = len(dataSet)
    centroids = clf.labels_
    print(centroids, type(centroids))  # 显示中心点
    print(clf.inertia_)  # 显示聚类效果
    mark = ['or', 'ob', 'og', 'ok', '^r', '+r', 'sr', 'dr', '<r', 'pr']
    # 画出所有样例点 属于同一分类的绘制同样的颜色
    for i in range(numSamples):
        # markIndex = int(clusterAssment[i, 0])
        plt.plot(dataSet[i][0], dataSet[i][1], mark[clf.labels_[i]])  # mark[markIndex])
    mark = ['Dr', 'Db', 'Dg', 'Dk', '^b', '+b', 'sb', 'db', '<b', 'pb']
    # 画出质点,用特殊图型
    centroids = clf.cluster_centers_
    for i in range(k):
        plt.plot(centroids[i][0], centroids[i][1], mark[i], markersize=12)
        # print centroids[i, 0], centroids[i, 1]
    plt.title(str(k)+"-mean聚类")
    plt.show()

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述实验结果分析
由实验结果可以直观看出选择类簇个数不同,分类效果不同,当分为三类时每个点到其簇的质心距离之和最大,随簇数增加,每个点到其簇的质心距离之和减小,但有图可以看出当簇增大时分类较杂乱
2、对鸢尾花数据进行K-means算法聚类(并用matplot画图)

import matplotlib
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn.datasets import load_iris
matplotlib.rcParams['font.family'] = 'SimHei'  # 中文显示
# 鸢尾花K-means聚类散点图
iris = load_iris().data
K_means = KMeans(n_clusters=3)  # 三个聚类中心
result = K_means.fit(iris)  # means 自动分类
kc = result.cluster_centers_  # 自动分类后的聚类中心
y_means = K_means.predict(iris)  # 预测y值
plt.title("鸢尾花数据集的K-means聚类散点图", fontsize=16)
plt.scatter(iris[:,0],iris[:,2],c=y_means, marker='.',label='see')
plt.show()

在这里插入图片描述实验结果分析
通过数据集iris的属性值将鸢尾花分为3类,即K值为3,可视化图形后可直观明了的看出3类鸢尾花的散点图,进而基于K均值模型可进一步预测鸢尾花类型。

  • 4
    点赞
  • 77
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

筱文rr

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值