当前位置: 首页 > wzjs >正文

网站开发集成工具成都网站推广营销

网站开发集成工具,成都网站推广营销,wordpress建站是什么,safari浏览器目录 摘要 16 K-means 聚类算法 16.1 本章工作任务 16.2 本章技能目标 16.3 本章简介 16.4 编程实战 16.5 本章总结 16.6 本章作业 本章已完结!!! 摘要 本章实现的工作是:首先采用Python语言读取样本数据(学生的语文、数…

目录

摘要

16 K-means 聚类算法

16.1 本章工作任务

16.2 本章技能目标

16.3 本章简介

16.4 编程实战

16.5 本章总结

16.6 本章作业

本章已完结!!!


 

摘要

本章实现的工作是:首先采用Python语言读取样本数据(学生的语文、数学成绩)。然后建立 K-means 聚类算法模型并求解模型(得到质心坐标),同时得到每个样本点所属的簇。在二维平面中绘制样本点,样本点的形状由上述聚类的结果决定,最后画出质心。

本章掌握的技能是:1、掌握Python求解欧式距离的方法。2、掌握求解 K-means 模型的方法。3、使用Matplotlib 库实现聚类结果的可视化。

16 K-means 聚类算法

16.1 本章工作任务

采用 K-means 聚类算法编写程序,对100名学生的数学、语文成绩进行聚类。1、算法的输入是:100名学生的数学、语文成绩数据。2、算法模型需要求解的是:各个聚类质心(即聚类的中心)。3、算法的结果是:各个数据(每个 学生)所属簇(一类数据对象的集合)。

16.2 本章技能目标

掌握 K-means 聚类算法原理。

使用过Python实现对 K-means 聚类算法建模与求解。

依据 K-means 聚类算法模型计算样本数据所属簇。

使用Python对聚类结果进行可视化展示。

16.3 本章简介

聚类是指:将相似的对象归到同一簇中的过程。

K-means 聚类是指:一种迭代求解的聚类分析算法,算法的核心内容是找到 K 个聚类中心,使得各样本点距离其聚类中心距离最近。

K-means 算法可以解决的实际应用问题是:已知100名学生的语文和数学成绩,准备将这些聚为3类,聚类结束后,进一步根据第 k 个类别中学生的成绩分析出第 k 个类别的特征(例如,如果第k个类别的学生,数学成绩均大于90分,语文成绩均小于60分,则可以将第k个类别解释为理科生)。

本章的重点是:K-means 聚类过程的理解和使用。

16.4 编程实战

步骤1 导入外部包,引入NumPy包,random和os库,其中os库是系统与文件操作模块,可以处理文件和目录。引入matplotlib.pyplot 和 pandas库,并分别命名为 plt 和 pd。

from numpy import *
import random
import matplotlib.pyplot as plt
import os
import pandas as pd

步骤2 定义计算欧式距离的函数。函数名为 calDistance,函数的功能是计算欧式距离。函数的参数是:1、第一个点的坐标 vec1 。 2、第二个点的坐标 vec2。函数的返回值是:两点之间的欧式距离。

def calDistance(vec1, vec2):vec1 = array(vec1)vec2 = array(vec2)return sqrt(sum(pow(vec1-vec2, 2)))

步骤3 定义随机选取初始质心函数。函数名为 getInitCentroid。函数的功能是:随机初始化 k 个质心(这些质心与样本点可以重合,也可以不重合)。函数的参数是:1、训练样本 dataSet。2、聚类的簇数 k。函数的返回值是:k 个随机初始化的质心坐标。

def getInitCentroid(dataSet, k):m,n = shape(dataSet)centroid = zeros((k, n))for i in range(k):index = random.uniform(0, len(dataSet))centroid[i, :] = dataSet[int(index),:]return mat(centroid)

步骤4 定义 K-means 模型求解函数。函数名为 kmeans。函数的功能是:根据样本数据,计算出稳定的质心和聚类结果。函数的参数是:1、数据集dataSet。2、聚类的簇数k。函数的返回值是:质心坐标和每个点所属的簇。

def kmeans(dataSet, k):m, n = shape(dataSet)clusterAssment = mat(zeros((m, 1)))centroid = getInitCentroid(dataSet, k)isEnd = Truewhile isEnd:isEnd = Falsefor i in range(len(dataSet)):minDistance = 10000minindex = -1for j in range(k):distance = calDistance(dataSet[i, :], centroid[j, :])if distance < minDistance:minDistance = distanceminindex = jif clusterAssment[i, 0] != minindex:isEnd = TrueclusterAssment[i, 0] = minindexfor n in range(k):test1 = clusterAssment[:, 0].A == ntest2 = nonzero(test1)test3 = test2[0]test4 = dataSet[test3]centroid[n, :] = mean(test4, axis=0)return centroid, clusterAssment

步骤5 预先定义聚类结果绘制图函数,函数名为 showCluster。函数的功能是:画出聚类结果的图像。函数的参数是:1、数据集 dataSet。2、聚类的簇数k。3、质心坐标 centroids。4、每个点所属簇 clusterAssment。

def showCluster(dataSet, k, centroids, clusterAssment):numSamples, dim = dataSet.shapeif dim != 2:print("Sorry! I can not draw because the dimension of your data is not 2!")return 1mark = ['or', 'ob', 'og', 'ok', '^r', '+r', 'sr', 'dr', '<r', 'pr']if k > len(mark):print("Sorry! Your k is too large!")return 1markers = ['x', 'o', 'v', 'd', '+', 'l', '8', 's', 'p', '*']for i in range(numSamples):markIndex = int(clusterAssment[i,0])plt.plot(dataSet[i,0], dataSet[i, 1], mark[markIndex],marker=markers[markIndex])mark = ['Dr', 'Db', 'Dg', 'Dk', '^b', '+b', 'sb', 'db', '<b', 'pb']for i in range(k):plt.plot(centroids[i, 0], centroids[i, 1], mark[i], markersize=6)plt.show()

步骤6 设置当前工作路径。其中,os.path.abspath()用于将相对路径转化为绝对路径。os.chdir()用于改变当前工作目录。os.getcwd()用于获取当前工作目录(默认为当前文件所在文件夹,不同设备的路径可能不同)。

thisFilePath = os.path.abspath('.')
os.chdir(thisFilePath)
os.getcwd()输出结果:
'D:\\MyPythonFiles'

步骤7 导入数据集。pd.read_csv用于读取储存学生成绩的CSV文件。

dataSet = pd.read_csv('python3.12.csv')
dataSet.head()

输出结果:

步骤8 从样本数据集中提取训练集。将dataSet中的语文和数学成绩用mat函数转化为矩阵格式并保存为dataSet_matrix,方便后续操作。其中用iloc函数提取出第二列和第三列(Python默认为前闭后开)。

type(dataSet)
dataSet_matrix = mat(dataSet.iloc[:, 1:3])
type(dataSet_matrix)
dataSet_matrix[1:5]输出结果:matrix([[90, 55],[77, 84],[73, 81],[56, 80]], dtype=int64)

步骤9 求解 K-means 模型,根据模型计算所有测试样本的聚类结果。得出质心坐标及每个点所属簇。判断出每个点所属簇 clusterAssment 的类型,结果应为矩阵。

centroid, clusterAssment = kmeans(dataSet_matrix, 3)
type(clusterAssment)输出结果:numpy.matrix

步骤10 显示样本数据的聚类结果和所有聚类质心。显示 clusterAssment 的前5行数据和 centroid 的数据。其中,clusterAssment是每个点所属簇,centroid是质心坐标。

clusterAssment[1:5]输出结果:matrix([[0.],[1.],[1.],[2.]])

步骤11 将样本数据和聚类结果一同显示。输出带有聚类信息的DataFrame对象,将语文成绩和数学成绩和类别合成一个矩阵 dataSet_matrix_merge。之后用column_stack将这两个低维数据进行拼接组合,合成一个有语文和数学成绩以及聚类结果的矩阵。用 DataFrame函数将得到的矩阵dataSet_matrix_merge 加上列标题,创建DataFrame对象 dataSet_df_merge,并显示前5行。

dataSet_matrix_merge = column_stack((dataSet_matrix, clusterAssment+1))
dataSet_df_merge = pd.DataFrame(dataSet_matrix_merge, columns=['yuwen','shuxue','Kmeans-type'])
dataSet_df_merge.head(5)

输出结果:

步骤12 聚类结果可视化。画出显示聚类结果的二维图。使用在步骤5中国 预定义的showCluster函数,对聚类结果进行可视化处理。图中的横轴是语文成绩,纵轴是数学成绩,不同形状(圆、倒三角,叉)代表不同的簇,第 k 个点表示第 k 个学生的成绩,菱形表示第 k 个质心。

showCluster(dataSet_matrix, 3, centroid, clusterAssment)
plt.show()

 输出结果:

 

16.5 本章总结

本章实现的工作是:首先采用Python语言读取样本数据(学生的语文、数学成绩)。然后建立 K-means 聚类算法模型并求解模型(得到质心坐标),同时得到每个样本点所属的簇。在二维平面中绘制样本点,样本点的形状由上述聚类的结果决定,最后画出质心。

本章掌握的技能是:1、掌握Python求解欧式距离的方法。2、掌握求解 K-means 模型的方法。3、使用Matplotlib 库实现聚类结果的可视化。

16.6 本章作业

实现本章的案例,即读取样本数据,实现 K-means 聚类算法的建模、求解和将数据可视化。

本章已完结!!!

 


文章转载自:

http://K7YP4UWf.mzzqs.cn
http://XCkWbsBv.mzzqs.cn
http://ReD2QyV2.mzzqs.cn
http://StXJlXVb.mzzqs.cn
http://GyfJPyDi.mzzqs.cn
http://GXNCPDO3.mzzqs.cn
http://7DzzPPze.mzzqs.cn
http://f8RdmqnD.mzzqs.cn
http://qeysPRf1.mzzqs.cn
http://6FHFqh4Q.mzzqs.cn
http://VsN1u7kO.mzzqs.cn
http://EarwSXDJ.mzzqs.cn
http://HGE3Hpz9.mzzqs.cn
http://U9izdz77.mzzqs.cn
http://yivNIhIZ.mzzqs.cn
http://kEIDSv3R.mzzqs.cn
http://r9aCQtEx.mzzqs.cn
http://fsmk8ITD.mzzqs.cn
http://Y3swXfS1.mzzqs.cn
http://5Yhp9tYi.mzzqs.cn
http://HPXoyZdA.mzzqs.cn
http://tbG3hW9o.mzzqs.cn
http://1bBRuFxg.mzzqs.cn
http://1yEN6kNv.mzzqs.cn
http://ilwdIOyn.mzzqs.cn
http://glHUb8CQ.mzzqs.cn
http://pVqh9JWn.mzzqs.cn
http://NZIqVhck.mzzqs.cn
http://VfUuE7uW.mzzqs.cn
http://keyh9iGH.mzzqs.cn
http://www.dtcms.com/wzjs/761090.html

相关文章:

  • 黄冈网站优化公司哪家好进入百度首页
  • 站牛网是做什么的setnet科技网站建设
  • 怎样做一个自己的网站做网站的市场有那么大吗
  • 如何做产品网站网页设计风机网站怎么做
  • 网站更换程序网站底部版权怎么做
  • 自建网站教程视频wordpress各个文件
  • 扁平化设计网站 源码建站之星7大核心价值
  • 怎么在微信公众号上做网站餐饮网站建设思路
  • 网站设计和营销山东省城乡和住房建设厅网站
  • 建站快车用户登录校园app开发费用
  • 哪个网站可以做结婚证深圳最大的软件开发公司
  • 长沙企业网站优化淄博专业做网站
  • 江苏省交通厅门户网站建设管理开发工具eclipse
  • 免费行情软件网站大全入口个人网页设计模板网站
  • 金融做网站wordpress拷站
  • 北京想象力网站建设wordpress实现自动重定向
  • 论坛申请网站备案前置审批中英网站建立
  • 做公众好号的网站吗建设国际互联网网站
  • 建设企业网站管理系统目的dw网页设计作品简单
  • jsp网站模版公司官网源码下载
  • 聚焦伟业网站怎么做推广专做药材的网站有哪些
  • 沂水县住房和建设局网站wordpress 维基插件
  • 桐乡城市建设局网站做竞赛的平台或网站
  • 做直播网站有哪些成都专业的网站建设制作公司哪家好
  • 海拉尔建网站杭州响应式网站开发
  • 网站建设便捷山西省最新干部调整
  • 一级A做爰片秋欲浓网站wordpress二次开发手册
  • wordpress国内视频网站吗上海有哪些做网站的公司
  • 门户网站推广介绍方案网站主页布局
  • 重庆商城网站建设WordPress评论昵称显示错误