机器学习 | 聚类问题

这篇具有很好参考价值的文章主要介绍了机器学习 | 聚类问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、K均值聚类

这里我们用鸢尾花数据及进行聚类分析,这种含有标签数据的数据集,只要不调用标签数据,就可以为无监督学习所采用。鸢尾花数据具有4个特征,为了可视化这里选取前两个特征进行聚类分析并指定聚为3类。

#导入库
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
#### 默认设置下matplotlib图片清晰度不够,可以将图设置成矢量格式
%config InlineBackend.figure_format='svg'
from sklearn.cluster import KMeans
from sklearn.datasets import load_iris

#记载数据
data=load_iris()
x=data.data
X=x[:,:2]

#构建模型及预测
model=KMeans(n_clusters=3)  #调用KMeans模型并指定聚为3类
model.fit(X)  #对数据进行学习
y_pred=model.predict(X)  #预测结果
print(y_pred)  #输出标签的预测结果

#画图
fig,ax=plt.subplots(1,2)
plt.subplot(1,2,1)
plt.scatter(X[:,0],X[:,1])  #将构建的数据点画出
plt.xlabel("Sepal Length")  #x轴标签
plt.ylabel("Sepal Width")  #y轴标签

plt.subplot(1,2,2)  #画子图2
plt.scatter(X[:,0],X[:,1],c=y_pred)  #经过聚类后的散点图
plt.scatter(model.cluster_centers_[:,0],model.cluster_centers_[:,1],
           marker='*',c='r',linewidth=7)  #画出中心点
plt.xlabel("Sepal Length")
plt.ylabel("Sepal Width")
#调整子图的间距
plt.subplots_adjust(left=None,bottom=None,right=None,
                  top=None,wspace=0.5,hspace=None)
plt.show()

机器学习 | 聚类问题

 尽管都属于超参数,需要人为设置,但K均值聚类中的K与k近邻算法中的k明显不同。

在k近邻算法中,由于是分类问题,这种监督学习的类别数是早已知晓的,其k的含义是选择k个样本点参与“投票”,而K均值聚类中的K则是将数据聚为k类,此时的K决定了结果中的类别数量。

选择聚类问题中的K值,最佳的取值可以利用手肘法进行评估,它是一种用于确定数据集中聚类数量的启发式算法。

import numpy as np
import pandas as pd
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
#### 默认设置下matplotlib图片清晰度不够,可以将图设置成矢量格式
%config InlineBackend.figure_format='svg'
%matplotlib inline

rd=pd.read_csv('regional data.csv')
X=rd.iloc[:,1]

K=[]  #空列表
Score=[]  #空列表
for k in range(1,11):
    kmeans=KMeans(n_clusters=k)
    kmeans.fit(X)
    score=kmeans.interia_  #整体平方和
    K.append(k)  #空列表追加赋值
    Score.append(score)  #空列表追加赋值
plt.plot(K,Score,marker='o')  #画图
plt.xlabel('K')  #x轴标签
plt.ylabel('SSE')  #y轴标签
plt.show()

机器学习 | 聚类问题

图中横轴为K的取值,因为数据集有10个特征,因此取值从1至10。纵轴是 误差平方和,它是所有样本的聚类误差,是衡量聚类效果优劣的一个指标。图中折线下降最快的K值称为手肘部,当K从4开始折线趋于平缓,我们认为进行K均值聚类时,K应该设置为4。

二、系统聚类

系统聚类是聚类分析中最常用的方法之一。它的基本思路是:先将每个样本视为一类,然后计算类与类之间的距离并按照一定的准则将两类合并为新类,依此类推,直到一步步将所有的样本归为一类后聚类终止。

首先输入6个样本点并给出散点图。

import numpy as np
from matplotlib import pyplot as plt
#### 默认设置下matplotlib图片清晰度不够,可以将图设置成矢量格式
%config InlineBackend.figure_format='svg'
from scipy.cluster.hierarchy import dendrogram,linkage
data=np.array([[1.4,0.2],[1.4,0.1],[4.7,1.4],[4.5,1.5],[5.9,2.1],[5.6,1.8]])
plt.scatter(data[:,0],data[:,1])
plt.ylim([0,5])  #设置纵轴数值范围
plt.xlim([0,10])  #设置横轴数值范围
plt.show()

机器学习 | 聚类问题

下面的代码中,我们利用参数single(最短距离法)进行距离的计算,根据时间情况的需要,我们还可以选择average(类平均法)、complete(最长距离法)、ward(瓦尔德法)等方法进行系统聚类。

Dist_data=linkage(data,"single")  #用single法计算距离
print(Dist_data)

机器学习 | 聚类问题

聚焦第一行:前两个值代表“类”,Python从0开始计数,最初每个数据点各为一类,所以0和1这两个数据点表示为两类,第三个数字0.1就是0和1两个点的距离,这两个点被合并为一个类,第四个数字2表示该类中含有两个子类。

聚类完成后,还可以画出系统聚类树状图进行观察,代码如下:

dendrogram(Dist_data)  #画图
plt.title("Hierachial Clustering Dendrogram")
plt.xlabel("Cluster label")
plt.ylabel("Distance")
plt.axhline(y=2)  #给出指定的分类线
plt.show()

机器学习 | 聚类问题

上图中,横轴表示类别标签,纵轴表示并类距离,是之前求得的类间距距离。从上图中很容易看到各成一类的数据是如何一步步汇聚成一个大类的。

综上,系统聚类的全部代码如下:文章来源地址https://www.toymoban.com/news/detail-475914.html

import numpy as np
from matplotlib import pyplot as plt
#### 默认设置下matplotlib图片清晰度不够,可以将图设置成矢量格式
%config InlineBackend.figure_format='svg'
from scipy.cluster.hierarchy import dendrogram,linkage
data=np.array([[1.4,0.2],[1.4,0.1],[4.7,1.4],[4.5,1.5],[5.9,2.1],[5.6,1.8]])
plt.scatter(data[:,0],data[:,1])
plt.ylim([0,5])  #设置纵轴数值范围
plt.xlim([0,10])  #设置横轴数值范围
plt.show()

#进行系统聚类
Dist_data=linkage(data,"single")  #用single法计算距离
print(Dist_data)

#画出系统聚类树状图
dendrogram(Dist_data)  #画图
plt.title("Hierachial Clustering Dendrogram")
plt.xlabel("Cluster label")
plt.ylabel("Distance")
plt.axhline(y=2)  #给出指定的分类线
plt.show()

到了这里,关于机器学习 | 聚类问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 机器学习——聚类问题

    📕参考:西瓜书+ysu老师课件+博客(3)聚类算法之DBSCAN算法 - 知乎 (zhihu.com) 目录 1.聚类任务  2.聚类算法的实现 2.1 划分式聚类方法 2.1.1 k均值算法 k均值算法基本原理: k均值算法算法流程: 2.2 基于密度聚类方法 2.2.1 DBSCAN  DBSCAN的基本概念  DBSCAN算法定义 2.3 基于层次聚类

    2024年02月20日
    浏览(32)
  • 机器学习 | 聚类问题

    这里我们用鸢尾花数据及进行聚类分析,这种含有标签数据的数据集,只要不调用标签数据,就可以为无监督学习所采用。鸢尾花数据具有4个特征,为了可视化这里选取前两个特征进行聚类分析并指定聚为3类。  尽管都属于超参数,需要人为设置,但K均值聚类中的K与k近邻

    2024年02月08日
    浏览(39)
  • 机器学习算法基础--聚类问题的评价指标

    2.1.兰德系数(RI)计算方法   首先我们定义两两配对变量a和b:   a:数据集的样本对既属于相同簇C也属于相同簇K的个数   b:数据集的样本对不属于相同簇C也不属于相同簇K的个数   比如对于如下的真实簇和预测簇向量:     真实簇向量:[ 0, 0, 0, 1, 1, 1 ]     

    2024年02月07日
    浏览(35)
  • 131基于matlab的差分进化算法优化K均值聚类问题

    基于matlab的差分进化算法优化K均值聚类问题,可调整K参数得到最佳聚类结果。输出聚类可视化图和优化迭代曲线。可替换自己的数据,程序已调通,可直接运行。 131matlab差分进化算法K均值聚类 (xiaohongshu.com)

    2024年01月16日
    浏览(53)
  • 稀疏光流法跟中移动物体、监督学习聚类、K均值聚类、加载深度神经网络模型、深度神经网络模型的使用

    目录 1、稀疏光流法跟中移动物体 2、监督学习聚类 3、K均值聚类 4、加载深度神经网络模型 5、深度神经网络模型的使用          

    2024年02月16日
    浏览(47)
  • SPSS聚类分析(含k-均值聚类,系统聚类和二阶聚类)

    本篇博客主要是根据 1、聚类的基本知识点_哔哩哔哩_bilibili系列视频进行的学习记录 聚类分析(Cluster analysis)又叫做群集分析,通过一些属性将对象或变量 分成不同的组别 ,在 同一类下的对象或变量在这些属性上具有一些相似的特点 。 两种聚类类型 对个案(样品、对象、被

    2024年02月06日
    浏览(46)
  • 【机器学习】机器学习上机作业聚类算法

    自编代码实现C均值聚类和FCM聚类,在“IRIS数据集(鸢尾花数据集)”上进行实验,验证所编代码是否正确,并计算准确率。 Iris鸢尾花数|据集:包含花萼长度、花萼宽度、花瓣长度、花瓣宽度四个属性,用于预测鸢尾花种类,标签0、1、2分别表示山鸢尾、变色鸢尾、维吉尼亚鸢

    2024年01月22日
    浏览(43)
  • 模糊聚类算法——模糊C均值聚类及matlab实现

    模糊C均值聚类算法(Fuzzy C-Means, FCM)。 1. 算法概述 模糊C均值聚类算法是一种经典的模糊聚类算法,用于无监督学习中的数据聚类问题。它通过为每个数据点分配模糊隶属度,将数据点划分到不同的聚类中心。与传统的硬聚类算法不同,模糊C均值聚类允许数据点同时属于多

    2024年01月24日
    浏览(43)
  • K均值聚类分析流程

    K均值聚类分析流程 在某体育赛事中,意大利、韩国、罗马尼亚、法国、中国、美国、俄罗斯七个国家的裁判对300名运动员进行评分,现在想要通过评分上的差异将300名选手进行分类,计划将选手分为高水平、中水平、低水平三个类别。因为评分均为定量数据,所以通过K均值

    2023年04月13日
    浏览(37)
  • 【K 均值聚类】02/5:简介

            k-mean算法是一种聚类算法,它的主要思想是基于数据点之间的距离进行聚类。 K-means聚类是一种无监督的机器学习算法。让我们再解释一下这句话。 聚类分析的目标是将数据划分为同类聚类。每个聚类中的点彼此之间比其他聚类中的点更相似。         无监督机

    2024年02月09日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包