文章目录

  • (一)、读取数据
  • (二)、获得拟合函数并绘制图象
  • (三)、通过计算拟合优度评价拟合函数
  • (四)、综合代码
  • (五)、结果输出

关于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实现线性函数的拟合算法相关推荐

  1. 数学建模学习笔记(四)——拟合算法

    文章目录 拟合算法简介 一个线性规划的例子 最小二乘法 求解最小二乘法 拟合检验 总结 拟合算法简介 与插值算法不同,拟合算法的目的是得到一条确定的曲线:而插值是根据已有的数据来获得一系列新的&quo ...

  2. 数学建模4 拟合算法

    1.插值与拟合 插值算法中,得到的多项式f(x)要经过所有样本点.但是如果样本点太多,那么这个多项式次数过高,会造成龙格现象.尽管我们可以选择分段的方法避免这种现象,但是更多时候我们倾向于得到一个确定 ...

  3. 《Python机器学习——预测分析核心算法》——2.4 基于因素变量的实数值预测:鲍鱼的年龄...

    本节书摘来异步社区<Python机器学习--预测分析核心算法>一书中的第2章,第2.4节,作者:[美]Michael Bowles(鲍尔斯),更多章节内容可以访问云栖社区"异步社 ...

  4. python模型预测_《Python机器学习——预测分析核心算法》——1.5 构建预测模型的流程...

    本节书摘来异步社区<Python机器学习--预测分析核心算法>一书中的第1章,第1.5节,作者:[美]Michael Bowles(鲍尔斯),更多章节内容可以访问云栖社区"异步社 ...

  5. 跟着清风学建模——拟合算法介绍及mathlab代码实现

    目录 拟合算法定义 拟合好坏 mathlab代码部分: mathlab拟合工具使用 拟合算法定义 我们将随机的样本点为(xi,i),i=1,2,...,n,设置拟合曲线为y=kx+b.问题转为k和b值 ...

  6. python画抛物线_在python中利用最小二乘拟合二次抛物线函数的方法

    1.最小二乘也可以拟合二次函数 我们都知道用最小二乘拟合线性函数没有问题,那么能不能拟合二次函数甚至更高次的函数呢?答案当然是可以的.下面我们就来试试用最小二乘来拟合抛物线形状的的图像. 对于二次函数 ...

  7. 【04】拟合算法:01-拟合算法模型讲解

    第四讲:拟合算法 插值和拟合的区别 一个小例子 确定拟合曲线 最小二乘法的几何解释 求解最小二乘法 Matlab求解最小二乘 如何评价拟合的好坏 证明SST=SSE+SSR "线性函数&qu ...

  8. 数模学习(四)---拟合算法

    一 Abstract 与插值问题不同,在拟合问题中不需要曲线一定经过给定的点.拟合问题的目标是去寻求一个函数(曲线),使得该曲线在某种准则下与所有的数据点最为接近,即曲线拟合的最好(最小化损失函数) ...

  9. 【4.0】 数学建模中拟合算法详解|内附清晰图片和详细代码实现

    一.前言 与插值问题不同,在拟合问题中不需要曲线一定经过给定的点.拟合问题的目标是寻求一个函数(曲线),使得该曲线在某种准则下与所有的数据点最为接近,即曲线拟合的最好(最小损失函数) 插值和拟合的区别 ...

  10. 数学建模预测类——拟合算法

    写在前文,懒编正准备参加数学建模并负责编程部分,写文章的初衷是为了加深自己的记忆.当然,如果可以帮助到其他人我也是很开心的.我主要介绍的是拟合算法的应用,所以接下来的文章更适合和我有一样工作的同学浏览 ...

最新文章

  1. 比特币现金对穷人更友善
  2. 基于RTP的h.264视频传输系统(二)
  3. 如何将int类型数据转换成byte数组
  4. java mysql 多表查询_解析Mysql多表查询的实现
  5. c++实现任意类型数组类的封装
  6. Java 集合系列目录(Category)
  7. C#中泛型类型约束条件
  8. Net-DataGridView
  9. 阶段3 2.Spring_09.JdbcTemplate的基本使用_5 JdbcTemplate在spring的ioc中使用
  10. 毕设过程小记—同步带传动选型计算+张紧机构
  11. 轻松掌握MySQL数据库锁机制的相关原理
  12. 爬取noi官网所有题目分析
  13. 《IS-IS网络设计解决方案》一第6章 最短路径优先算法6.1 SPF算法概述
  14. CNN入门讲解:准确率很高就感觉自己萌萌哒?NONONO,还有一点也重要
  15. 华为云服务权限在哪_华为云服务器如何开启密码登录Linux
  16. cookie、sesion
  17. vts传感器采取船舶的_在VTS系统中实现雷达信息与AIS信息融合的方法探讨
  18. ObjectARX:C# ObjectARX--起步
  19. 在树莓派上实现face++人脸识别
  20. 计算机考研没有科研经历和竞赛,2020考研复试:没有竞赛、科研经历,4个方法教你实现逆袭...

热门文章

  1. python 处理 图像和视频
  2. 开启安卓虚拟机后一直停在控制台页面_金九银十要来了?不要慌,这些安卓 BAT高级面试题刷一刷...
  3. 用scratch编程打字游戏
  4. java ip搜索功能_局域网ip搜索工具扫描设备的简单Java实现
  5. 2015款java 650b duina_整车推荐:9款5000元级别热销山地车
  6. 记一次某制造业ERP系统 CPU打爆事故分析
  7. MiiX私享会 · 第六期: BCH姜家志100分钟深聊BCH硬分叉与算力战!
  8. 百度地图导航工具类,包含骑行步行及驾车导航
  9. 3.字体样式,分隔线与段落
  10. 初识DNA甲基化芯片