Python实现线性函数的拟合算法
文章目录
- (一)、读取数据
- (二)、获得拟合函数并绘制图象
- (三)、通过计算拟合优度评价拟合函数
- (四)、综合代码
- (五)、结果输出
关于Python数据分析在数学建模中的更多相关应用:Python数据分析在数学建模中的应用汇总(持续更新中!)
(一)、读取数据
#从excel文件中读取数据
def read(file):wb = xlrd.open_workbook(filename=file)#打开文件sheet = wb.sheet_by_index(0)#通过索引获取表格rows = sheet.nrows # 获取行数all_content = [] #存放读取的数据for j in range(0, 2): #取第1~第2列对的数据temp = []for i in range(1,rows) :cell = sheet.cell_value(i, j) #获取数据 temp.append(cell) all_content.append(temp) #按列添加到结果集中temp = []return np.array(all_content) #返回读取的数据
(二)、获得拟合函数并绘制图象
#获得拟合函数并绘制图象
def temp1(datas):x = datas[0] #获取自变量xy = datas[1] #获取因变量yn = np.size(answer1, axis = 1) #获取有多少个自变量,axis=1代表获取矩阵的列数#根据公式计算kk = (n*np.sum(x*y) - np.sum(x)*np.sum(y)) / (n*np.sum(np.power(x,2)) - np.sum(x) * np.sum(x)) #根据公式计算bb = (np.sum(np.power(x,2)) * np.sum(y) -np.sum(x) * np.sum(x*y)) / (n*np.sum(np.power(x,2)) - np.sum(x) * np.sum(x))las = k*x + b #根据公式得到拟合函数fig = plt.figure() #获得figure对象ax1 = fig.add_subplot(1,1,1) #添加一个图纸ax1.set_xlim([min(x)-0.5, max(x)+0.5]) #设置x轴刻度ax1.set_ylim([min(y) -0.5, max(y) +0.5]) #设置y轴刻度plt.plot(x,las,'k',label='拟合函数') #画出拟合函数plt.plot(x,y,'o',label = '样本数据') #画出样本数据plt.grid() #添加网格线ax1.legend(loc = 'best') #设置图例的位置为最佳bestreturn [k,b] #返回k和b
(三)、通过计算拟合优度评价拟合函数
#通过计算拟合优度评价拟合函数
def judge(datas,k,b):x = datas[0] #获取自变量xy = datas[1] #获取自变量yz = k * x + b #得到拟合函数SST = np.sum(np.power(y - np.average(y),2)) #根据公式计算SSTSSE = np.sum(np.power(y - z, 2)) #根据公式计算SSESSR = np.sum(np.power(z - np.average(y),2)) #根据公式计算SSRR_2 = SSR / SST #得到R_2print('k = ',k)print('b = ',b)print('SST = ',SST)print('SSE = ',SSE)print('SSR = ',SSR)print('R_2 = ',R_2)
(四)、综合代码
# -*- coding: utf-8 -*-
"""
Created on Mon Jul 29 11:03:49 2019@author: lenovo
"""
import xlrd
import numpy as np
import matplotlib.pyplot as plt#从excel文件中读取数据
def read(file):wb = xlrd.open_workbook(filename=file)#打开文件sheet = wb.sheet_by_index(0)#通过索引获取表格rows = sheet.nrows # 获取行数all_content = [] #存放读取的数据for j in range(0, 2): #取第1~第2列对的数据temp = []for i in range(1,rows) :cell = sheet.cell_value(i, j) #获取数据 temp.append(cell) all_content.append(temp) #按列添加到结果集中temp = []return np.array(all_content) #返回读取的数据
#获得拟合函数并绘制图象
def temp1(datas):x = datas[0] #获取自变量xy = datas[1] #获取因变量yn = np.size(answer1, axis = 1) #获取有多少个自变量,axis=1代表获取矩阵的列数#根据公式计算kk = (n*np.sum(x*y) - np.sum(x)*np.sum(y)) / (n*np.sum(np.power(x,2)) - np.sum(x) * np.sum(x)) #根据公式计算bb = (np.sum(np.power(x,2)) * np.sum(y) -np.sum(x) * np.sum(x*y)) / (n*np.sum(np.power(x,2)) - np.sum(x) * np.sum(x))las = k*x + b #根据公式得到拟合函数fig = plt.figure() #获得figure对象ax1 = fig.add_subplot(1,1,1) #添加一个图纸ax1.set_xlim([min(x)-0.5, max(x)+0.5]) #设置x轴刻度ax1.set_ylim([min(y) -0.5, max(y) +0.5]) #设置y轴刻度plt.plot(x,las,'k',label='拟合函数') #画出拟合函数plt.plot(x,y,'o',label = '样本数据') #画出样本数据plt.grid() #添加网格线ax1.legend(loc = 'best') #设置图例的位置为最佳bestreturn [k,b] #返回k和b
#通过计算拟合优度评价拟合函数
def judge(datas,k,b):x = datas[0] #获取自变量xy = datas[1] #获取自变量yz = k * x + b #得到拟合函数SST = np.sum(np.power(y - np.average(y),2)) #根据公式计算SSTSSE = np.sum(np.power(y - z, 2)) #根据公式计算SSESSR = np.sum(np.power(z - np.average(y),2)) #根据公式计算SSRR_2 = SSR / SST #得到R_2print('k = ',k)print('b = ',b)print('SST = ',SST)print('SSE = ',SSE)print('SSR = ',SSR)print('R_2 = ',R_2)answer1 = read('C:\\Users\\lenovo\\Desktop\\数学建模\\拟合算法\\第4讲.拟合7.21\\代码和例题数据\\data1.xlsx')
answer2 = temp1(answer1)
judge(answer1,answer2[0],answer2[1])
(五)、结果输出
Python实现线性函数的拟合算法相关推荐
- 数学建模学习笔记(四)——拟合算法
文章目录 拟合算法简介 一个线性规划的例子 最小二乘法 求解最小二乘法 拟合检验 总结 拟合算法简介 与插值算法不同,拟合算法的目的是得到一条确定的曲线:而插值是根据已有的数据来获得一系列新的&quo ...
- 数学建模4 拟合算法
1.插值与拟合 插值算法中,得到的多项式f(x)要经过所有样本点.但是如果样本点太多,那么这个多项式次数过高,会造成龙格现象.尽管我们可以选择分段的方法避免这种现象,但是更多时候我们倾向于得到一个确定 ...
- 《Python机器学习——预测分析核心算法》——2.4 基于因素变量的实数值预测:鲍鱼的年龄...
本节书摘来异步社区<Python机器学习--预测分析核心算法>一书中的第2章,第2.4节,作者:[美]Michael Bowles(鲍尔斯),更多章节内容可以访问云栖社区"异步社 ...
- python模型预测_《Python机器学习——预测分析核心算法》——1.5 构建预测模型的流程...
本节书摘来异步社区<Python机器学习--预测分析核心算法>一书中的第1章,第1.5节,作者:[美]Michael Bowles(鲍尔斯),更多章节内容可以访问云栖社区"异步社 ...
- 跟着清风学建模——拟合算法介绍及mathlab代码实现
目录 拟合算法定义 拟合好坏 mathlab代码部分: mathlab拟合工具使用 拟合算法定义 我们将随机的样本点为(xi,i),i=1,2,...,n,设置拟合曲线为y=kx+b.问题转为k和b值 ...
- python画抛物线_在python中利用最小二乘拟合二次抛物线函数的方法
1.最小二乘也可以拟合二次函数 我们都知道用最小二乘拟合线性函数没有问题,那么能不能拟合二次函数甚至更高次的函数呢?答案当然是可以的.下面我们就来试试用最小二乘来拟合抛物线形状的的图像. 对于二次函数 ...
- 【04】拟合算法:01-拟合算法模型讲解
第四讲:拟合算法 插值和拟合的区别 一个小例子 确定拟合曲线 最小二乘法的几何解释 求解最小二乘法 Matlab求解最小二乘 如何评价拟合的好坏 证明SST=SSE+SSR "线性函数&qu ...
- 数模学习(四)---拟合算法
一 Abstract 与插值问题不同,在拟合问题中不需要曲线一定经过给定的点.拟合问题的目标是去寻求一个函数(曲线),使得该曲线在某种准则下与所有的数据点最为接近,即曲线拟合的最好(最小化损失函数) ...
- 【4.0】 数学建模中拟合算法详解|内附清晰图片和详细代码实现
一.前言 与插值问题不同,在拟合问题中不需要曲线一定经过给定的点.拟合问题的目标是寻求一个函数(曲线),使得该曲线在某种准则下与所有的数据点最为接近,即曲线拟合的最好(最小损失函数) 插值和拟合的区别 ...
- 数学建模预测类——拟合算法
写在前文,懒编正准备参加数学建模并负责编程部分,写文章的初衷是为了加深自己的记忆.当然,如果可以帮助到其他人我也是很开心的.我主要介绍的是拟合算法的应用,所以接下来的文章更适合和我有一样工作的同学浏览 ...
最新文章
- 比特币现金对穷人更友善
- 基于RTP的h.264视频传输系统(二)
- 如何将int类型数据转换成byte数组
- java mysql 多表查询_解析Mysql多表查询的实现
- c++实现任意类型数组类的封装
- Java 集合系列目录(Category)
- C#中泛型类型约束条件
- Net-DataGridView
- 阶段3 2.Spring_09.JdbcTemplate的基本使用_5 JdbcTemplate在spring的ioc中使用
- 毕设过程小记—同步带传动选型计算+张紧机构
- 轻松掌握MySQL数据库锁机制的相关原理
- 爬取noi官网所有题目分析
- 《IS-IS网络设计解决方案》一第6章 最短路径优先算法6.1 SPF算法概述
- CNN入门讲解:准确率很高就感觉自己萌萌哒?NONONO,还有一点也重要
- 华为云服务权限在哪_华为云服务器如何开启密码登录Linux
- cookie、sesion
- vts传感器采取船舶的_在VTS系统中实现雷达信息与AIS信息融合的方法探讨
- ObjectARX:C# ObjectARX--起步
- 在树莓派上实现face++人脸识别
- 计算机考研没有科研经历和竞赛,2020考研复试:没有竞赛、科研经历,4个方法教你实现逆袭...
热门文章
- python 处理 图像和视频
- 开启安卓虚拟机后一直停在控制台页面_金九银十要来了?不要慌,这些安卓 BAT高级面试题刷一刷...
- 用scratch编程打字游戏
- java ip搜索功能_局域网ip搜索工具扫描设备的简单Java实现
- 2015款java 650b duina_整车推荐:9款5000元级别热销山地车
- 记一次某制造业ERP系统 CPU打爆事故分析
- MiiX私享会 · 第六期: BCH姜家志100分钟深聊BCH硬分叉与算力战!
- 百度地图导航工具类,包含骑行步行及驾车导航
- 3.字体样式,分隔线与段落
- 初识DNA甲基化芯片