首页 > 其他分享 ># 定义函数,单个自变量+单个序列(独热编码)控制变量 # curve_fit函数要求X中的元素都是可以转换为浮点数的数值

# 定义函数,单个自变量+单个序列(独热编码)控制变量 # curve_fit函数要求X中的元素都是可以转换为浮点数的数值

时间:2023-10-14 13:02:29浏览次数:45  
标签:函数 300 30 df popt test exp 单个 控制变量

import numpy as np
import pandas as pd
from scipy.optimize import curve_fit

# 定义函数,单个自变量
def fun_exp(
    X, k
):
    a, x, b = X
    Y = a * np.exp(k*x) + b
    return Y

# 读取数据
df_test = pd.DataFrame(
    [
        [300, 0, 30, 300],
        [300, 10, 30, 100]
    ])

# 提取自变量和因变量
X = df_test.iloc[:, :-1].values.T
Y = df_test.iloc[:, -1].values
X

# 拟合模型并输出参数
popt, pcov = curve_fit(fun_exp, X, Y)
print(popt)


# 定义函数,单个自变量+单个数值型控制变量
def fun_exp(
    X, k1, k2
):
    a, x, b, z1 = X
    k = k1*z1 + k2
    Y = a * np.exp(k*x) + b
    return Y

# 读取数据
df_test = pd.DataFrame(
    [
        [300, 0, 30, 1, 300],
        [300, 10, 30, 1, 100],
        [300, 0, 30, 2, 300],
        [300, 10, 30, 2, 200]
    ])

# 提取自变量和因变量
X = df_test.iloc[:, :-1].values.T
Y = df_test.iloc[:, -1].values
X

# 拟合模型并输出参数
popt, pcov = curve_fit(fun_exp, X, Y)  # 如果实验数据未体现变量相关性 OptimizeWarning: Covariance could not be estimated
print(popt)


# 定义函数,单个自变量+单个序列(独热编码)控制变量
# curve_fit函数要求X中的元素都是可以转换为浮点数的数值
def fun_exp(
    X, k1, k2, k3
):
    a, x, b, z1, z2 = X
    k = np.dot([k1, k2], [z1, z2]) + k3
    Y = a * np.exp(k*x) + b
    return Y

# 读取数据
df_test = pd.DataFrame(
    [
        [300, 0, 30, [1,0], 300],
        [300, 10, 30, [1,0], 100],
        [300, 0, 30, [0,1], 300],
        [300, 10, 30, [0,1], 200]
    ])

# 提取自变量和因变量
# 将独热编码list拆分为两列
X = pd.concat(
    [
        df_test.iloc[:, :-2],
        df_test.iloc[:, -2].apply(pd.Series)
    ],
    axis=1
).values.T
Y = df_test.iloc[:, -1].values

# 拟合模型并输出参数
popt, pcov = curve_fit(fun_exp, X, Y)  # curve_fit 函数要求输入的 X 必须是包含数值型元素的 NumPy 数组
print(popt)
print(fun_exp(X.T[1], *popt))  # 基本准确

标签:函数,300,30,df,popt,test,exp,单个,控制变量
From: https://blog.51cto.com/u_16055028/7860092

相关文章

  • Vue3| 模板引用、defineExpose宏函数
    模板引用的概念:通过ref标识获取真实的dom对象或者组件实例对象 使用:1.调用ref函数生成一个ref对象<script setup>import {ref} from 'vue'const h1Ref=ref(null)</script>2.通过ref标识绑定ref对象到标签<script setup>import {ref......
  • 无涯教程-Matplotlib - Subplot2grid函数
    Subplot2grid函数为在特定位置创建轴对象提供了更大的灵活性,它还允许axis对象跨越多个行或列。Plt.subplot2grid(shape,location,rowspan,colspan)在以下示例中,图形对象的3X3网格填充行和列跨度大小不同的轴对象,每个对象都显示不同的图。importmatplotlib.pyplotasplt......
  • 前端map函数
    前端中的map函数是JavaScript中的数组方法,它可以用于遍历数组并返回一个新的数组。map函数接受一个回调函数作为参数,该回调函数会对数组中的每个元素执行某个操作,并将操作后的结果存储在新的数组中。以下是map函数的基本语法:array.map(callback(currentValue[,index[,array]])[,......
  • math库常用函数+产生随机数总结
    math库常用函数+产生随机数总结1.对x开平方doublesqrt(x);//返回值为double类型,输入的x类型随意,只要是数的类型2.求常数e的x次方doubleexp(x);//返回值为double类型,输入的x类型随意,只要是数的类型3.求x的y次方double pow(x,y);//注意计算机没有储存自然常数e,不能直接输......
  • 学习C语言心得-自定义函数 输入两个数字求和
    输入两个数字求和#include<stdio.h>intsum(inta,intb){ returna+b;}intmain(){ inta=0; intb=0; printf("请输入ab的值:"); scanf("%d%d",&a,&b); intSum=sum(a,b); printf("Sum=%d",Sum); return0;}运行......
  • 学习C语言心得-运用自定义函数求素数
    自定义函数求素数#include<stdio.h>intpanduan(inta){ inti=0; for(i=2;i<a;i++) { if(a%i==0) { returna; } } return0;}intmain(){ intnumber=0; printf("请输入一个数:"); scanf("%d",&number); int......
  • Vue3| 组合式API——computed 计算属性函数
    计算属性基本思想和Vue2的完全一致,组合式API下的计算属性只是修改了写法 核心步骤:1.导入computed函数<scriptsetup>import{computed}from'vue'</script>2.执行函数在回调参数中return基于响应式数据做计算的值,用变量接收<scriptsetup>import{com......
  • Vue3| 组合式API——reactive 和 ref 函数
    Vue中默认的数据并不是响应式的,如果我们希望数据是响应式的,则需要通过reactive或者ref进行处理。 reactive():作用:接收对象类型的数据作为参数传入并返回一个响应式对象reactive不能处理简单类型的数据 reactive使用步骤:1.在<scriptsetup>里,从vue包中导入......
  • 内联函数
    内联函数(inlinefunction)是一种编程语言特性,通常用于C++和类似的编程语言,用于在程序编译时将函数的代码直接嵌入到函数调用的位置,而不是通过函数调用的方式执行代码。以下是内联函数的详细介绍:概念:内联函数是一种函数,其定义中的代码可以在每次调用该函数时直接嵌入到调用点......
  • sprintf、snprintf、vsprintf、asprintf、vasprintf函数
    1.sprintfexternintsprintf(char*__restrict__s,constchar*__restrict__format,...);2.snprintf/*MaximumcharsofoutputtowriteinMAXLEN.*/externintsnprintf(char*__restrict__s,size_t__maxlen,......