KMeans算法的原理:
通过K-Means算法实现对成绩的预测,K-means算法是最为经典的基于划分的聚类方法,是十大经典数据挖掘算法之一。K-means算法的基本思想是:以空间中k个点为中心进行聚类,对最靠近他们的对象归类。通过迭代的方法,逐次更新各聚类中心的值,直至得到最好的聚类结果。
假设要把样本集分为k个类别,算法描述如下:
  (1)适当选择k个类的初始中心,最初一般为随机选取;
  (2)在每次迭代中,对任意一个样本,分别求其到k个中心的欧式距离,将该样本归到距离最短的中心所在的类;
  (3)利用均值方法更新该k个类的中心的值;
  (4)对于所有的k个聚类中心,重复(2)(3),类的中心值的移动距离满足一定条件时,则迭代结束,完成分类。
Kmeans聚类算法原理简单,效果也依赖于k值和类中初始点的选择。

import numpy as np
from sklearn.cluster import KMeans
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
from pyecharts.charts.map import Map
from pyecharts.charts.line import Linedf = pd.DataFrame(pd.read_excel('成绩.xls'))#放成绩的excel文档,存放两门数据。Linux成绩和云计算成绩,各13个。
print(df)
print(df.describe())plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False
sns.set()
sns.distplot(df.云计算, bins=5, hist=True, kde=False)plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False
# 散点图
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.scatter(df['Linux'], df['云计算'])
plt.xlabel('Linux')
plt.ylabel('云计算')
plt.title('Linux和云计算成绩散点图')
plt.show()# 箱形图
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
plt.title('云计算')
ax.boxplot(df['云计算'])
plt.show()# 家庭地址
city = ['太原市', '大同市', '忻州市', '临汾市', '运城市', '吕梁市']
values = [3, 1, 1, 2, 4, 2]
map = Map("学生家乡", '山西', width=1200, height=600)
map.add('山西', city, values, visual_range=[1, 10], maptype='山西', is_visualmap=True, visual_text_color='#000')
map.render(path="./山西地图.html")def loadData(filePath):fr = open(filePath, 'r+', encoding='utf-8')lines = fr.readlines()studentName = []studentGrade = []for line in lines:items = line.strip().split(",")studentGrade.append(items[0])studentName.append([float(items[i]) for i in range(1, len(items))])return studentName, studentGradeclass SingleLinearRegression:  #最小二乘法,散点图,计算回归曲线def __init__(self):self.a_ = None;self.b_ = None;def fit(self, x_train, y_train):x_mean = np.mean(x_train)y_mean = np.mean(y_train)fenzi = 0.0;fenmu = 0.0;for x_i, y_i in zip(x_train, y_train):fenzi += (x_i - x_mean) * (y_i - y_mean)fenmu += (x_i - x_mean) ** 2self.a = fenzi / fenmuself.b = y_mean - self.a * x_meanreturn selfdef predict(self, x_test_group):result = []for x_test in x_test_group:  # 对于每个输入的x都计算它对应的预测y值并加入列表中result.append(self.a * x_test + self.b)y_predict = np.array(result)  # 将列表转换为矩阵向量形式方便运算return y_predictif __name__ == '__main__':name, studentGrade = loadData('D:\\Pycharm\\homework\\成绩.txt')km = KMeans(n_clusters=4)label = km.fit_predict(name)avegrade = np.sum(km.cluster_centers_, axis=1)StudentCluster = [[], [], [], []]for i in range(len(studentGrade)):StudentCluster[label[i]].append(studentGrade[i])for i in range(len(StudentCluster)):print("avegrade:%.2f" % avegrade[i])print(StudentCluster[i])x = np.array([88, 86, 87, 84, 77, 76, 85, 88, 84, 80, 85, 75, 68])y = np.array([83, 92, 76, 90, 81, 78, 76, 80, 63, 75, 70, 68, 47])l = SingleLinearRegression()l.fit(x, y)print('Linux分数为90的预测云计算成绩为:')print(l.predict([90]))# 画出散点图和预测图plt.scatter(x, y, color='b')plt.plot(x, l.predict(x), color='r')  # 画出预测后的线plt.xlabel('Linux')plt.ylabel('云计算')plt.show()

结果:





用KMeans算法实现成绩的预测(并对一些数据进行可视化)相关推荐

  1. MATLAB实现k-means算法(k-均值)对无标签数据进行聚类,并通过肘部法则确定聚类类别

    应一个小伙伴的要求介绍了一下K均值聚类算法.本人也不是很专业,这是之前自学的,如果有错,大家可以提出来,共同进步嘛. 文章目录 一.k-means算法(k-均值) 1.k-means算法介绍 2.k- ...

  2. 机器学习7—聚类算法之K-means算法

    K-均值算法(K-means) 前言 聚类算法模型 常见的聚类算法 一.K-means算法描述 二.示例说明K-means算法流程 三.K-means算法中Kmean()函数说明 四.K-means算 ...

  3. kmeans算法入门案例以聚类中心数的确定

    目录 kmeans案例分析 kmeans具体流程 案例讲解 生成的数据 代码 结果 聚类中心数的确定 肘部法 手肘法案例分析 生成的数据 代码 结果 kmeans案例分析 kmeans具体流程 第一步 ...

  4. 无监督学习之Kmeans算法

    Kmeans算法 1.算法区别 1.1.无监督学习与聚类算法理论的区别 1.2.聚类和分类算法的区别 2.Kmeans算法原理 2.1算法属性含义 2.2 算法结果预测 2.3 `Kmeans`有损失 ...

  5. c均值聚类matlab程序_聚类算法之kmeans算法

    一.k-means算法介绍 k-means最早是由James MacQueen在1967年提出的,这一观点能够追溯到1957年Hugo Steinhaus所提出的想法.1957年,斯图亚特最先提出这一 ...

  6. scikit-learn学习之K-means聚类算法与 Mini Batch K-Means算法

    ====================================================================== 本系列博客主要参考 Scikit-Learn 官方网站上的 ...

  7. 机器学习算法实践——K-Means算法与图像分割

    一.理论准备 1.1.图像分割 图像分割是图像处理中的一种方法,图像分割是指将一幅图像分解成若干互不相交区域的集合,其实质可以看成是一种像素的聚类过程.通常使用到的图像分割的方法可以分为: 基于边缘的 ...

  8. 机器学习 K-Means(++)算法

    文章目录 聚类概念 聚类与Kmeans K-Means算法步骤: 优缺点 K-Means++算法 K-Means++算法的基本思路 二分K-Means算法 Mini Batch K-Means算法 K ...

  9. k-means算法及python实现

    本篇文章主要讲解聚类分析中的一种常用的算法k-means,它的全称叫作k均值算法. k-means原理 k-means算法是一种基于原型的.划分的聚类技术. 基于原型可以理解为基于质心,也就是说,每个 ...

最新文章

  1. leetcode解题文件夹
  2. 上接[翻译]ASP.NET 2.0中的健康监测系统(Health Monitoring)(1) - 基本应用
  3. 图像水平梯度和竖直梯度代码_20行代码发一篇NeurIPS:梯度共享已经不安全了
  4. 12 python语言语句块的标记是_7. 简单语句
  5. 求一个序列中最大的子序列_最大的斐波那契子序列
  6. 演练 网站的头部导航栏的制作 1014 HTML
  7. Bootstrap系列 -- 36. 向上弹起的下拉菜单
  8. 如何提取html的文本,如何从html标签之间提取文本?
  9. C#面向对象编程的3个支柱
  10. 标题:印刷电路板的设计
  11. zbbz 坐标标注lisp_cad坐标标注插件怎么用
  12. C++ 二进制读入和Minist图片展示
  13. 2020年11月总结
  14. HEALTH_WARN 1 filesystem is degraded,一直在rejoin状态
  15. 百度网盘电脑登录二维码加载不出来解决方法
  16. 微信服务号、订阅号和企业号的差别(运营和开发两个角度)
  17. WIndow10下安装UR机器人接口ur_rtde
  18. 动词ing基本用法_(完整版)英语动词ing的用法
  19. win10 休眠设置无效_win10电脑休眠后无法唤醒的解决办法
  20. 360天擎无密码退出和卸载

热门文章

  1. 从万物互联到万物智联,一字之差,却是时代的进步!
  2. 三星s4开机显示无服务器,三星S4无法连接电脑,USB连接后手机只出现充电提示,电脑无反应...
  3. 魅族与小米 一个向左一个向右
  4. 安卓模拟器BlueStacks+TCPdump对APP抓包分析
  5. 说说对测试培训的一些看法
  6. cocoscreator2.0.10 热更新大厅子游戏模式 学习使用记录
  7. sap abap alv 实现某行,单元格可编辑与不可编辑 REUSE_ALV_GRID_DISPLAY_LVC
  8. 手把手带你学会Odoo OWL组件开发(2):OWL的使用
  9. BaoStock:一个免费、开源的python证券数据接口包(转载)
  10. 新闻采访如何运用计算机技术学校,新闻采访教学方法和改革.doc