机器学习实验六:聚类

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

系列文章目录

  1. 机器学习实验一:线性回归
  2. 机器学习实验二:决策树模型
  3. 机器学习实验三:支持向量机模型
  4. 机器学习实验四:贝叶斯分类器
  5. 机器学习实验五:集成学习
  6. 机器学习实验六:聚类


一、实验目的

(1)掌握聚类的基本思想;
(2)掌握 K-means 算法,编程实现 K-means;
(3)掌握使用 K-Means 算法对鸢尾花三分类数据集进行聚类操作。

二、实验原理

1.聚类思想

聚类(Clustering)是一种典型的“无监督学习”,是把物理对象或抽象对
象的集合分组为由彼此类似的对象组成的多个类的分析过程。
聚类试图将数据集中的样本划分为若干个通常是不相交的子集,每个子集对
应一个簇。与分类的不同在于,聚类所要求的划分的类别是未知,类别个数也是
未知的。聚类的目标为簇内相似度尽可能高,簇间相似度尽可能低。

2.K 均值聚类算法 K-Means

K-means 是一种常用的基于欧式距离的聚类算法,其认为两个目标的距离越
近,相似度越大。其算法流程如下:机器学习实验六:聚类,吴恩达机器学习,机器学习,聚类,人工智能

三、实验内容

使用 Python 读取鸢尾花三分类数据集并训练最佳的 K-Means 模型,随后使
用生成的模型将数据进行聚类,并根据使用聚类纯度、兰德系数和 F1 值评测聚
类效果。
由于本次为聚类任务,因此使用聚类相关的混淆矩阵和评价指标。
聚类任务中的混淆矩阵与普通混淆矩阵的意义有一定区别,如下表所示:机器学习实验六:聚类,吴恩达机器学习,机器学习,聚类,人工智能
其中,TP 为两个同类样本在同一簇的数量;FP 为两个非同类样本在同一簇
的数量;TN 为两个非同类样本分别在两个簇的数量;FN 为两个同类样本分别在
两个簇的数量。
评价指标选择为聚类纯度 Purity、兰德系数 Rand Index(RI)、F1 度量值,
计算公式如下:机器学习实验六:聚类,吴恩达机器学习,机器学习,聚类,人工智能
代码实现时,可以直接调用 sklearn 库中的 pair_confusion_matrix()获得
混淆矩阵,随后利用公式进行计算。

四、实验步骤

1.训练 K-Means 模型

根据数据,我们已知鸢尾花分3类,因此我们这里的聚类数k=3。利用sklearn
的 KMeans()方法训练 K-Means 模型,并将结果用散点图表示,实现代码如下:

#训练 KMeans 模型
estimator = KMeans(n_clusters=3)
estimator.fit(X) #聚类
#绘制结果散点图
x0 = X[label_pred == 0]
x1 = X[label_pred == 1]
x2 = X[label_pred == 2]
plt.scatter(x0[:, 0], x0[:, 1], c = "red", marker='o', label='label0') 
plt.scatter(x1[:, 0], x1[:, 1], c = "green", marker='*', label='label1') 
plt.scatter(x2[:, 0], x2[:, 1], c = "blue", marker='+', label='label2') 
plt.xlabel('petal length') 
plt.ylabel('petal width') 
plt.legend(loc=2) 
plt.show() 


2. 计算聚类纯度、兰德系数和 F1 值,评测聚类效果

使用 sklearn.metrics 库中提供的 pair_confusion_matrix()方法求得当前
聚类的混淆矩阵,随后利用聚类纯度、兰德系数和 F1 值的计算公式计算得到当
前聚类效果的相应指标值。
以下为该部分代码:

#聚类纯度
def accuracy(labels_true, labels_pred):
 clusters = np.unique(labels_pred)
 labels_true = np.reshape(labels_true, (-1, 1))
 labels_pred = np.reshape(labels_pred, (-1, 1))
 count = []
 for c in clusters:
 idx = np.where(labels_pred == c)[0]
 labels_tmp = labels_true[idx, :].reshape(-1)
 count.append(np.bincount(labels_tmp).max())
 return np.sum(count) / labels_true.shape[0]
#兰德系数、F1 值
def get_rand_index_and_f_measure(labels_true, labels_pred, beta=1.):
 (tn, fp), (fn, tp) = pair_confusion_matrix(labels_true, labels_pred)
 ri = (tp + tn) / (tp + tn + fp + fn)
 p, r = tp / (tp + fp), tp / (tp + fn)
 f_beta = 2*p*r/(p+r)
 return ri, f_beta
#输出结果
purity = accuracy(y, y_pred)
ri, f_beta = get_rand_index_and_f_measure(y, y_pred, beta=1.)
print(f"聚类纯度:{purity}\n 兰德系数:{ri}\nF1 值:{f_beta}")

总结

以上就是今天要讲的内容,机器学习实验六:聚类文章来源地址https://www.toymoban.com/news/detail-759651.html

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

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

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

相关文章

  • 吴恩达机器学习week2实验答案Practice Lab Linear Regression【C1_W2_Linear_Regression】

    Exercise 1 Complete the compute_cost below to: Iterate over the training examples, and for each example, compute: The prediction of the model for that example f w b ( x ( i ) ) = w x ( i ) + b f_{wb}(x^{(i)}) = wx^{(i)} + b f w b ​ ( x ( i ) ) = w x ( i ) + b The cost for that example c o s t ( i ) = ( f w b − y ( i ) ) 2 cost^{(i)} = (f_{wb} - y^{(i)})^

    2024年02月09日
    浏览(30)
  • 【机器学习】机器学习笔记(吴恩达)

    https://github.com/fengdu78/Coursera-ML-AndrewNg-Notes https://www.bilibili.com/video/BV164411b7dx?p=4 https://study.163.com/course/courseLearn.htm?courseId=1210076550#/learn/video?lessonId=1280912351courseId=1210076550 定义机器学习为:在进行特定编程的情况下,给予计算机 学习能力的领域。目前存在几种不同类型的学习算

    2024年02月06日
    浏览(36)
  • 机器学习(吴恩达第一课)

    课程链接 从给出“正确答案”的数据集中学习 1、回归(Regression) 2、分类(Classification) 总结 1.术语。 2.单变量线性回归 平方误差代价函数 梯度下降算法选择不同的起点,可能会得到不同的结果,因为它得到的是一个局部最小值。 1、学习率 2、用于线性回归的梯度下降 线性回

    2024年02月09日
    浏览(27)
  • 吴恩达机器学习2022-Jupyter-机器学习实例

    在这个实验室里: 探索特征工程和多项式回归,它可以让你使用线性回归机制来适应非常复杂,甚至非常非线性的函数。 您将利用在以前的实验中开发的函数以及matplotlib和NumPy。 线性回归提供了一种模型方法,公式形式为: 如果您的特性/数据是非线性的或者是特性的组合,该

    2024年02月16日
    浏览(30)
  • 吴恩达《机器学习》1-4:无监督学习

    一、无监督学习 无监督学习就像你拿到一堆未分类的东西,没有标签告诉你它们是什么,然后你的任务是自己找出它们之间的关系或者分成不同的组,而不依赖于任何人给你关于这些东西的指导。 以聚类为例,无监督学习算法可以将数据点分成具有相似特征的群组,而不需

    2024年02月07日
    浏览(39)
  • 吴恩达机器学习2022-Jupyter

    在这个实验室中,您将扩展数据结构和以前开发的例程,以支持多个特性。一些程序被更新使得实验室看起来很长,但是它对以前的程序做了一些小的调整使得它可以很快的回顾。 扩展我们的回归模型例程以支持多个特性 扩展数据结构以支持多个特性 重写预测,成本和梯度

    2024年02月16日
    浏览(32)
  • 吴恩达《机器学习》5-6:向量化

    在深度学习和数值计算中,效率和性能是至关重要的。一个有效的方法是使用向量化技术,它可以显著提高计算速度,减少代码的复杂性。接下来将介绍向量化的概念以及如何在不同编程语言和工具中应用它,包括 Octave、MATLAB、Python、NumPy、C和C++。 一、什么是向量化? 向量

    2024年02月05日
    浏览(33)
  • 【机器学习】吴恩达课程1-Introduction

    计算机程序从经验E中学习,解决某一任务T,进行某一性能P,通过P测定在T上的表现因经验E而提高。 跳棋程序 E:程序自身下的上万盘棋局 T:下跳棋 P:与新对手下跳棋时赢的概率 给算法一个数据集,其中包含了正确答案,算法的目的是给出更多的正确答案。 (1)预测房价

    2024年02月16日
    浏览(31)
  • 吴恩达《机器学习》2-2->2-4:代价函数

    一、代价函数的概念 代价函数是在监督学习中用于评估模型的性能和帮助选择最佳模型参数的重要工具。它表示了模型的预测输出与实际目标值之间的差距,即建模误差。代价函数的目标是找到使建模误差最小化的模型参数。 二、代价函数的理解 训练集数据 :假设我们有一

    2024年02月07日
    浏览(27)
  • 关于吴恩达机器学习中反向传播的理解

    在机器学习视频反向传播章节 [1] 中: 我们用 (delta) 来表示误差,则: (boldsymboldelta^{left(4right)}=boldsymbol a^{left(4right)}−boldsymbol y) 。我们利用这个误差值来计算前一层的误差: (boldsymboldelta^{left(3right)}=left(boldsymbolTheta^{left(3right)}right)^Tboldsymboldelta^{left(4rig

    2024年02月01日
    浏览(38)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包