机器学习基础练习题(4)聚类分析

作业题目

已知有20个样本,每个样本有2个特征,数据分布如下表所示,使用K均值法或K中心点法实现样本分离。要求:需要有结果展示,需要对方法和模型进行评价。
样本序号 1 2 3 4 5 6 7 8 9 10
特征1 0 1 0 1 2 1 2 3 6 7
特征2 0 0 1 1 1 2 2 2 6 6

样本序号 11 12 13 14 15 16 17 18 19 20
特征1 8 6 7 8 9 7 8 9 8 9
特征2 6 7 7 7 8 8 8 9 9 5

K均值原理

K-Means算法是一种无监督分类算法,假设有无标签数据集:
X = [ x ( 1 ) , x ( 2 ) , x ( 3 ) . . . x ( m ) ] T X=[x^{(1)},x^{(2)},x^{(3)}...x^{(m)}]^T X=[x(1),x(2),x(3)...x(m)]T
该算法的任务是将数据集聚类成k个簇, c = c 1 , c 2 , c 3 , … … , c k c=c_1,c_2,c_3,……,c_k c=c1,c2,c3,,ck.最小化损失函数为:
E = ∑ i = 1 k ∑ x ∈ C i ∣ ∣ x − μ i ∣ ∣ 2 E=\sum_{i=1}^k\sum_{x\in{C_i}}||x-\mu_i||^2 E=i=1kxCixμi2
其中 μ i μ_i μi为簇 c i c_i ci的中心点:
μ i = 1 C i ∑ x ∈ C i x \mu_i=\frac{1}{C_i}\sum_{x\in{C_i}}x μi=Ci1xCix
要找到以上问题的最优解需要遍历所有可能的簇划分,K-Means算法使用贪心策略求得一个近似解,具体步骤如下:
1)随机选取k个点作为各个簇的中心点;
2)计算所有样本点与各个簇中心之间的距离,然后把样本点划入最近的簇中;
3)根据簇中已有的样本点,重新计算簇中心;
4)重复2、3。
在python机器学习库中有kmeans算法的函数,我们可以利用该函数完成相关聚类分析操作。

python编程

聚类分析

首先,调用KMeans.fit函数,对feature进行K均值分类,n_clusters为分类类数。
clf = KMeans(n_clusters=4).fit(feature)
之后利用Kmeans.fit_predict函数对feature按之前的中心点进行分类。
label = KMeans(n_clusters=4).fit_predict(feature)

模型评价

1)轮廓系数
from sklearn.metrics import silhouette_score
从sklearn.metrics中调用silhouette_score函数,可以利用轮廓系数评价分类体系,可以将轮廓系数与分类个数化为曲线,曲线斜率变化最大的地方,分类效果越好。
2)Calinski-Harabasz指数评价
from sklearn.metrics import calinski_harabasz_score
从sklearn.metrics中调用calinski_harabasz_score函数,该函数可以直接对聚类模型进行打分。

分类结果

首先,运行分类模型评价程序,决定数据类别个数。在轮廓系数评价体系下,画出曲线为:
在这里插入图片描述
可以发现在类别数较少的情况下曲线斜率更大,分类效果更好。在Calinski-Harabasz指数评价下:
在这里插入图片描述
由此可知,将数据分为两类时分类效果最好。
在未分类前,数据的散点示意图如图所示:
在这里插入图片描述
分为两类后,有:
在这里插入图片描述
画出聚类中心点位置:
在这里插入图片描述

python代码

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score
from sklearn.metrics import calinski_harabasz_score

feature_1 = [0,1,0,1,2,1,2,3,6,7,8,6,7,8,9,7,8,9,8,9]
feature_2 = [0,0,1,1,1,2,2,2,6,6,6,7,7,7,8,8,8,9,9,5]

#plt.plot(feature_1,feature_2,'r*')
#plt.show()

feature = np.vstack((feature_1,feature_2))

print(feature)
feature = np.transpose(feature)

clf = KMeans(n_clusters=2).fit(feature)

print (clf.cluster_centers_)
print (clf.labels_)
print (clf.inertia_)

df = clf.cluster_centers_
label = KMeans(n_clusters=2).fit_predict(feature)
plt.scatter(feature[:,0],feature[:,1],c=label)
#plt.plot(df[0][0],df[0][1],'rD',df[1][0],df[1][1],'bD')
plt.show()

'''silhouettescore=[]
for i in range(2,10):
    kmeans=KMeans(n_clusters=i,random_state=123).fit(feature)
    score=silhouette_score(feature,kmeans.labels_)
    silhouettescore.append(score)
#plt.figure(figsize=(10,6))
plt.plot(range(2,10),silhouettescore,linewidth=1.5,linestyle='-')
plt.show()'''

'''for i in range(2,7):
    kmeans=KMeans(n_clusters=i,random_state=123).fit(feature)
    score=calinski_harabasz_score(feature,kmeans.labels_)
    print("聚类%d簇的calinski_harabaz分数为:%f" %(i,score))'''

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 机器学习实战是一本使用Python3语言编写的教程,提供了丰富的示例代码和实际应用案例,帮助读者深入了解机器学习算法和实践。本书具体介绍了Python机器学习库scikit-learn的常用功能和使用方法,以及如何应用这些算法解决实际问。 该书分为七个部分,分别是:机器学习基础、k-近邻算法、决策树、朴素贝叶斯分类器、逻辑回归、支持向量机和集成方法。每个部分都包含多个章节,通过讲解算法原理、提供示例代码和实战案例来帮助读者逐步学习和应用机器学习。 本书适合有一定Python编程基础的读者学习,对于想要深入理解机器学习算法和应用的开发者来说,这是一本很好的入门书籍。读者可以通过跟随书中的示例代码和练习题,逐步掌握Python编程和机器学习算法的实践技巧。 机器学习实战的亮点是注重实践应用,书中大量的案例和实例代码帮助读者更好地理解和掌握机器学习算法。另外,本书还介绍了一些常用的数据预处理和特征工程方法,以及如何评估和优化模型的性能。通过这些内容的学习,读者可以开始尝试在自己的项目中使用机器学习模型进行预测和分类任务。 总之,《机器学习实战》是一本很好的Python3机器学习实践教程,提供了丰富的示例代码和实际案例,帮助读者深入理解机器学习算法的原理和实践技巧。无论是对于初学者还是有一定经验的开发者来说,这本书都是学习和应用机器学习的有力工具。 ### 回答2: 《机器学习实战 Python3版本》是一本关于机器学习算法实现的经典教材。本书使用Python3作为编程语言,详细介绍了常用的机器学习算法及其在实际问中的应用。 本书的主要内容包括监督学习、无监督学习和半监督学习等方面。其中,监督学习部分介绍了K近邻算法、决策树、朴素贝叶斯、逻辑回归、支持向量机等常用的分类算法,以及回归算法,如线性回归和岭回归。无监督学习部分介绍了聚类算法,如K均值和层次聚类,以及降维算法,如主成分分析。半监督学习部分介绍了半监督聚类和标签传播算法。 本书着重强调算法的实现,以及如何解决实际问。每个算法都会给出实现的Python代码,并通过实例详细说明如何使用该算法解决实际问。读者可以通过运行代码来进一步理解算法的原理和应用。 《机器学习实战 Python3版本》既适合初学者入门,也适合有一定基础的读者深入学习。对于初学者来说,本书提供了基本的机器学习知识和实现代码,帮助他们快速上手。对于有一定基础的读者来说,本书提供了更多实战经验和案例,帮助他们在实际项目中应用机器学习算法。 总之,本书《机器学习实战 Python3版本》以Python语言为工具,详细介绍了机器学习常用算法的实现和应用。对于想要学习机器学习并在实际问中应用的读者来说,这是一本很好的教材。 ### 回答3: 《机器学习实战 Python3》是一本深入介绍机器学习算法及其实践应用的教材。本书以Python3作为主要编程语言,通过示例代码和案例分析帮助读者理解和应用机器学习技术。 这本书主要分为两部分:第一部分是机器学习基础知识的介绍,包括数据预处理、特征选择、模型训练和评估等内容。读者可以学习如何将原始数据转换为可供算法使用的格式,以及如何选择合适的特征来建立模型。此外,还介绍了常用的机器学习算法,如决策树、朴素贝叶斯、支持向量机等。 第二部分则是实践应用,通过多个具体的案例来展示机器学习算法在实际问中的应用。比如,如何利用分类算法进行垃圾邮件的识别,如何利用回归算法进行房价预测,如何通过聚类算法进行用户分群等。每个案例都会详细介绍问背景、数据准备、模型选择、结果评估等步骤,读者可以按照作者的指导一步步完成任务。 这本书适合对机器学习有一定兴趣的初级读者。读者需要具备一定的Python编程基础,并对统计学和概率论等有一定的了解。通过阅读本书,读者可以掌握机器学习的基本概念和常用技术,并能够运用Python编程语言进行机器学习实践。 总之,《机器学习实战 Python3》是一本适合初学者入门的机器学习教材。通过学习本书,读者可以系统地了解机器学习的基本理论和实践技巧,并能够在实际问中应用机器学习算法。这本书对于希望掌握机器学习技术的读者来说是一本不可多得的参考资料。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值