多元指数回归模型(加法)
  X5zJxoD00Cah 2023年11月12日 30 0
import pandas as pd
import numpy as np

class_amount = 2
experiment_amount_per_class = 10
observation_amount_per_experiment = 10

experiment = np.repeat(
    ['experiment' + str(i+1) for i in range(class_amount*experiment_amount_per_class)], 
    observation_amount_per_experiment
)

x1 = np.tile(
    [i+1 for i in range(class_amount*experiment_amount_per_class)],
    observation_amount_per_experiment
)

x2 = np.repeat(
    [i+1 for i in range(class_amount*experiment_amount_per_class)], 
    observation_amount_per_experiment
)[::-1]

class_ = np.repeat(
    ['class' + str(i+1) for i in range(class_amount)], 
    experiment_amount_per_class*observation_amount_per_experiment
)

y0 = np.repeat(
    [i*100 for i in range(class_amount*experiment_amount_per_class)], 
    observation_amount_per_experiment
)

df = pd.DataFrame(
    data=[experiment, x1, x2, class_, y0],
    index=['experiment', 'x1', 'x2', 'class', 'y0']
).T

df = pd.get_dummies(
    df,
    columns=['class'],
    drop_first=True
)

df['y'] = df.apply(
    func=lambda x: x['y0'] * np.exp(-0.1*x['x1']) * np.exp(-0.2*x['x2']) * np.exp(-0.3*0) + 1
        if x['class_class2'] == 0
        else x['y0'] * np.exp(-0.1*x['x1']) * np.exp(-0.2*x['x2']) * np.exp(-0.3*1) + 1,
    axis=1
)

# 使用python 多元指数回归模型 拟合 y0, x1, x2, class_class2 对 y 的影响
import pandas as pd
import numpy as np
from scipy.optimize import curve_fit

#定义多元指数回归模型
def model(x, k0, k1, k2, k3, b):
    y0, x1, x2, class_class2 = x
    return k0*y0 * np.exp(k0*x1) * np.exp(k1*x1) * np.exp(k2*x2) * np.exp(k3*class_class2) + b

#读取数据

#提取自变量和因变量
xdata = df[["y0", "x1", "x2", "class_class2"]].values.T
ydata = df["y"].values

#拟合模型并输出参数
popt, _ = curve_fit(model, xdata, ydata, maxfev=1000000)
print(popt)

# 验证
model(df.loc[0, ["y0", "x1", "x2", "class_class2"]], *popt)
import pandas as pd
import numpy as np

class_amount = 2
experiment_amount_per_class = 10
observation_amount_per_experiment = 10

experiment = np.repeat(
    ['experiment' + str(i+1) for i in range(class_amount*experiment_amount_per_class)], 
    observation_amount_per_experiment
)

x1 = np.tile(
    [i+1 for i in range(class_amount*experiment_amount_per_class)],
    observation_amount_per_experiment
)

x2 = np.repeat(
    [i+1 for i in range(class_amount*experiment_amount_per_class)], 
    observation_amount_per_experiment
)[::-1]

class_ = np.repeat(
    ['class' + str(i+1) for i in range(class_amount)], 
    experiment_amount_per_class*observation_amount_per_experiment
)

y0 = np.repeat(
    [i*100 for i in range(class_amount*experiment_amount_per_class)], 
    observation_amount_per_experiment
)

df = pd.DataFrame(
    data=[experiment, x1, x2, class_, y0],
    index=['experiment', 'x1', 'x2', 'class', 'y0']
).T

df = pd.get_dummies(
    df,
    columns=['class'],
    drop_first=True
)

df['y'] = df.apply(
    func=lambda x: x['y0'] + np.exp(0.1*x['x1']) + np.exp(-0.2*x['x2']) + np.exp(1) + 1
        if x['class_class2'] == 0
        else x['y0'] + np.exp(0.1*x['x1']) + np.exp(-0.2*x['x2']) + np.exp(-1) + 1,
    axis=1
)

# 使用python 多元指数回归模型 拟合 y0, x1, x2, class_class_2 对 y 的影响
import pandas as pd
import numpy as np
from scipy.optimize import curve_fit

#定义多元指数回归模型
def model(x, a, b, c, d):
    x1, x2, class_class_2 = x
    return a + b * np.exp(c * x1) + np.exp(d * x2) + np.exp(class_class_2)

#读取数据

#提取自变量和因变量
xdata = df[["x1", "x2", "class_class2"]].values.T
ydata = df["y"].values

#拟合模型并输出参数
popt, pcov = curve_fit(model, xdata, ydata, maxfev=1000000)
print(popt)
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月12日 0

暂无评论

推荐阅读
  gBkHYLY8jvYd   2023年12月09日   30   0   0 cii++数据
  X5zJxoD00Cah   2023年12月11日   27   0   0 知乎Python迭代器
  X5zJxoD00Cah   2023年12月12日   34   0   0 Python.net
  gBkHYLY8jvYd   2023年12月08日   22   0   0 #includecii++
  gBkHYLY8jvYd   2023年12月11日   20   0   0 cic++最小值
X5zJxoD00Cah