python 一元回归拟合(含幂函数,对数,S函数,指数函数,一次、二次、三次,逆函数,生长、复合函数)


提示

目录

因为工作最近需要对数据进行拟合生成指标

一、最后的成果

二、导入数据

三、将数据中的自变量因变量都抽出来,进行九种回归拟合

1.代码如下:

2.这里补充下变换知识

三 对数据进行绘图,画出拟合曲线和散点图,把公式也写上去

总结:撒花~写完了这里


因为工作最近需要对数据进行拟合生成指标

所以打算写一个含有十种函数的拟合模型,去看那种拟合的r2最高,将r2最高的函数函数作为最终拟合函数。


一、最后的成果

 用n 组数据生产 n组数据 拟合十种回归,保留r2最大的画出期曲线和散点图,标注好函数公式,(图是假数据,已经打码处理,大概理解下就行)

下是本篇文章正文内容,下面案例可供参考

二、导入数据

import matplotlib.pyplot as plt
import numpy as  np
import pandas as pd

plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号



##

io=r'C:\Users\Viki\Desktop\****'#根据自己的需要换
city_pr2=pd.read_excel(io,sheet_name='Sheet1')

三、将数据中的自变量因变量都抽出来,进行九种回归拟合

1.代码如下

 
 

df_d = pd.DataFrame(columns=('名称','类型','r2','系数'))

from sklearn.metrics import r2_score


#我这里原本是写了循环的 因为这种回归,肯定不是一组数据进行十种回归,这样还不如用spss
#所以这里是有 city_pr2['标签']==i   里面每个标签拿出来的数据都回归十次,选出每组数据r2最大的回归#函数,感觉大家都会加循环,我就不删了,方便大家改,可能让人难懂~算了随缘
for i in a: 
    jj=city_pr2[(city_pr2['位置']==i)]
    # jj=city_pr2

    #十种函数的回归从这里开始写了~
    ##线性
    x_data_2=jj[['自变量']].values.tolist()
    y_data_2=jj[['因变量']].values.tolist()
    x_data_2=sum(x_data_2,[])
    y_data_2=sum(y_data_2,[])
    L=np.polyfit(x_data_2, y_data_2, 1)
    print(L)
    Z=np.polyval(L,x_data_2,)
    score = r2_score(y_data_2, Z, multioutput='raw_values')
    print('线性:'+str(score))
    new=pd.DataFrame({'名称':i,
                      '类型':'线性',
                      'r2':score,
                      '系数':[L]})
    
    df_d=df_d.append(new,ignore_index=(True))
    
    
    ##指数
    x_data_2=jj[['自变量']].values.tolist()
    y_data_2=jj[['因变量']].values.tolist()
    x_data_2=sum(x_data_2,[])
    y_data_2=sum(y_data_2,[])
    L=np.polyfit(x_data_2, np.log(y_data_2), 1)
    Z=np.polyval(L,x_data_2)
    true=np.exp(Z)
    score = r2_score(y_data_2,true, multioutput='raw_values')
    print('指数:'+str(score))
    new=pd.DataFrame({'名称':i,
                      '类型':'指数',
                      'r2':score,
                      '系数':[L]})
    
    df_d=df_d.append(new,ignore_index=(True))
    
    
    
    
    ##二次
    x_data_2=jj[['自变量']].values.tolist()
    y_data_2=jj[['因变量']].values.tolist()
    x_data_2=sum(x_data_2,[])
    y_data_2=sum(y_data_2,[])
    L=np.polyfit(x_data_2, y_data_2, 2)
    print(L)
    Z=np.polyval(L,x_data_2,)
    score = r2_score(y_data_2, Z, multioutput='raw_values')
    print('二次:'+str(score)
  • 9
    点赞
  • 91
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
一元二次回归是一种线性回归的扩展,通过将二次函数进行变换,使其变成线性函数的形式。在Python中,可以使用最小二乘法来进行一元二次回归。根据引用的描述,可以将8种函数进行变换,将其转化为线性形式。 在Python中,可以使用`matplotlib`库进行数据可视化,`numpy`库进行数值计算,`pandas`库进行数据处理。根据引用的代码,可以导入相应的库,并进行配置以确保中文显示正常。 具体实现一元二次回归的过程,需要先读取数据并进行预处理,然后使用最小二乘法拟合一元二次回归模型。根据引用中的代码,可以看到使用`pd.read_excel`函数读取Excel文件中的数据,并将其存储在`city_pr2`变量中。 然后,可以使用`numpy`库的函数来进行一元二次回归拟合,具体方法是使用`np.polyfit`函数拟合数据点,得到回归方程的系数。最后,可以使用`matplotlib`库的函数绘制出回归曲线,并将其与原始数据点进行比较。 需要注意的是,上述过程只是一种实现一元二次回归的方法,具体实现方式可能会因应用场景的不同而有所差异。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [python 一元回归拟合幂函数对数,S函数指数函数一次二次三次逆函数生长复合函数)](https://blog.csdn.net/viki_2/article/details/118897386)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [Python爬虫解析笔记.md](https://download.csdn.net/download/weixin_52057528/88258586)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值