用KMeans算法实现成绩的预测(并对一些数据进行可视化)
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算法实现成绩的预测(并对一些数据进行可视化)相关推荐
- MATLAB实现k-means算法(k-均值)对无标签数据进行聚类,并通过肘部法则确定聚类类别
应一个小伙伴的要求介绍了一下K均值聚类算法.本人也不是很专业,这是之前自学的,如果有错,大家可以提出来,共同进步嘛. 文章目录 一.k-means算法(k-均值) 1.k-means算法介绍 2.k- ...
- 机器学习7—聚类算法之K-means算法
K-均值算法(K-means) 前言 聚类算法模型 常见的聚类算法 一.K-means算法描述 二.示例说明K-means算法流程 三.K-means算法中Kmean()函数说明 四.K-means算 ...
- kmeans算法入门案例以聚类中心数的确定
目录 kmeans案例分析 kmeans具体流程 案例讲解 生成的数据 代码 结果 聚类中心数的确定 肘部法 手肘法案例分析 生成的数据 代码 结果 kmeans案例分析 kmeans具体流程 第一步 ...
- 无监督学习之Kmeans算法
Kmeans算法 1.算法区别 1.1.无监督学习与聚类算法理论的区别 1.2.聚类和分类算法的区别 2.Kmeans算法原理 2.1算法属性含义 2.2 算法结果预测 2.3 `Kmeans`有损失 ...
- c均值聚类matlab程序_聚类算法之kmeans算法
一.k-means算法介绍 k-means最早是由James MacQueen在1967年提出的,这一观点能够追溯到1957年Hugo Steinhaus所提出的想法.1957年,斯图亚特最先提出这一 ...
- scikit-learn学习之K-means聚类算法与 Mini Batch K-Means算法
====================================================================== 本系列博客主要参考 Scikit-Learn 官方网站上的 ...
- 机器学习算法实践——K-Means算法与图像分割
一.理论准备 1.1.图像分割 图像分割是图像处理中的一种方法,图像分割是指将一幅图像分解成若干互不相交区域的集合,其实质可以看成是一种像素的聚类过程.通常使用到的图像分割的方法可以分为: 基于边缘的 ...
- 机器学习 K-Means(++)算法
文章目录 聚类概念 聚类与Kmeans K-Means算法步骤: 优缺点 K-Means++算法 K-Means++算法的基本思路 二分K-Means算法 Mini Batch K-Means算法 K ...
- k-means算法及python实现
本篇文章主要讲解聚类分析中的一种常用的算法k-means,它的全称叫作k均值算法. k-means原理 k-means算法是一种基于原型的.划分的聚类技术. 基于原型可以理解为基于质心,也就是说,每个 ...
最新文章
- leetcode解题文件夹
- 上接[翻译]ASP.NET 2.0中的健康监测系统(Health Monitoring)(1) - 基本应用
- 图像水平梯度和竖直梯度代码_20行代码发一篇NeurIPS:梯度共享已经不安全了
- 12 python语言语句块的标记是_7. 简单语句
- 求一个序列中最大的子序列_最大的斐波那契子序列
- 演练 网站的头部导航栏的制作 1014 HTML
- Bootstrap系列 -- 36. 向上弹起的下拉菜单
- 如何提取html的文本,如何从html标签之间提取文本?
- C#面向对象编程的3个支柱
- 标题:印刷电路板的设计
- zbbz 坐标标注lisp_cad坐标标注插件怎么用
- C++ 二进制读入和Minist图片展示
- 2020年11月总结
- HEALTH_WARN 1 filesystem is degraded,一直在rejoin状态
- 百度网盘电脑登录二维码加载不出来解决方法
- 微信服务号、订阅号和企业号的差别(运营和开发两个角度)
- WIndow10下安装UR机器人接口ur_rtde
- 动词ing基本用法_(完整版)英语动词ing的用法
- win10 休眠设置无效_win10电脑休眠后无法唤醒的解决办法
- 360天擎无密码退出和卸载
热门文章
- 从万物互联到万物智联,一字之差,却是时代的进步!
- 三星s4开机显示无服务器,三星S4无法连接电脑,USB连接后手机只出现充电提示,电脑无反应...
- 魅族与小米 一个向左一个向右
- 安卓模拟器BlueStacks+TCPdump对APP抓包分析
- 说说对测试培训的一些看法
- cocoscreator2.0.10 热更新大厅子游戏模式 学习使用记录
- sap abap alv 实现某行,单元格可编辑与不可编辑 REUSE_ALV_GRID_DISPLAY_LVC
- 手把手带你学会Odoo OWL组件开发(2):OWL的使用
- BaoStock:一个免费、开源的python证券数据接口包(转载)
- 新闻采访如何运用计算机技术学校,新闻采访教学方法和改革.doc