微网站建设找哪家公司,wordpress加载变慢,网站主题及风格,浙江省住房和城乡建设厅 官方网站系列文章目录
机器学习实验一#xff1a;线性回归机器学习实验二#xff1a;决策树模型机器学习实验三#xff1a;支持向量机模型机器学习实验四#xff1a;贝叶斯分类器机器学习实验五#xff1a;集成学习机器学习实验六#xff1a;聚类 文章目录 系列文章目录一、实验…系列文章目录
机器学习实验一线性回归机器学习实验二决策树模型机器学习实验三支持向量机模型机器学习实验四贝叶斯分类器机器学习实验五集成学习机器学习实验六聚类 文章目录 系列文章目录一、实验目的二、实验原理1.聚类思想2.K 均值聚类算法 K-Means 三、实验内容四、实验步骤1.训练 K-Means 模型2. 计算聚类纯度、兰德系数和 F1 值评测聚类效果 总结 一、实验目的
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 IndexRI、F1 度量值 计算公式如下 代码实现时可以直接调用 sklearn 库中的 pair_confusion_matrix()获得 混淆矩阵随后利用公式进行计算。
四、实验步骤
1.训练 K-Means 模型
根据数据我们已知鸢尾花分3类因此我们这里的聚类数k3。利用sklearn 的 KMeans()方法训练 K-Means 模型并将结果用散点图表示实现代码如下
#训练 KMeans 模型
estimator KMeans(n_clusters3)
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, markero, labellabel0)
plt.scatter(x1[:, 0], x1[:, 1], c green, marker*, labellabel1)
plt.scatter(x2[:, 0], x2[:, 1], c blue, marker, labellabel2)
plt.xlabel(petal length)
plt.ylabel(petal width)
plt.legend(loc2)
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, beta1.):(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/(pr)return ri, f_beta
#输出结果
purity accuracy(y, y_pred)
ri, f_beta get_rand_index_and_f_measure(y, y_pred, beta1.)
print(f聚类纯度{purity}\n 兰德系数{ri}\nF1 值{f_beta})
总结
以上就是今天要讲的内容机器学习实验六聚类