首页 > 其他分享 >生成一个指数回归模型,以预测温度与其他变量的关系, 并给出模型的函数

生成一个指数回归模型,以预测温度与其他变量的关系, 并给出模型的函数

时间:2023-10-07 15:08:35浏览次数:37  
标签:变量 data 模型 num log np model Type 函数

# 导入所需的库
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score

# 指定支持中文的字体,例如SimHei或者Microsoft YaHei
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False  # 解决负号显示问题

# 生成数据
def fun_data():
    # 定义物料数量
    num_materials = 40

    # 定义每个物料的温度测量次数和时间间隔
    num_measurements = 10
    time_interval_hours = 6

    # 创建一个时间数组,模拟测量时间点
    measurement_times = np.arange(0, num_measurements * time_interval_hours, time_interval_hours)

    # 创建一个空的DataFrame来存储数据
    data = pd.DataFrame(columns=['Material_ID', 'Measurement_Time', 'Width', 'Thickness', 'Weight', 'Workshop_Temperature',
                                 'Annealing_Type', 'Cooling_Type', 'Temperature'])

    # 模拟每个物料的数据
    for material_id in range(1, num_materials + 1):
        # 生成物料特征数据(宽度、厚度、重量、车间温度、退火类型、冷却类型)
        width = np.random.uniform(5, 20)  # 宽度范围在5到20之间
        thickness = np.random.uniform(1, 5)  # 厚度范围在1到5之间
        weight = np.random.uniform(10, 100)  # 重量范围在10到100之间
        workshop_temperature = np.random.uniform(20, 30)  # 车间温度范围在20到30之间
        annealing_type = np.random.choice(['O态', 'H2态'])  # 随机选择退火类型
        cooling_type = np.random.choice(['自然冷却', '单面风机', '双面风机'])  # 随机选择冷却类型

        # 模拟温度数据(指数衰减)
        initial_temperature = np.random.uniform(100, 200)  # 初始温度范围在100到200之间
        decay_rate = np.random.uniform(0.01, 0.1)  # 衰减速率范围在0.01到0.1之间
        temperature_data = initial_temperature * np.exp(-decay_rate * measurement_times)

        # 创建一个临时DataFrame来存储物料的数据
        material_data = pd.DataFrame({
            'Material_ID': [material_id] * num_measurements,
            'Measurement_Time': measurement_times,
            'Width': [width] * num_measurements,
            'Thickness': [thickness] * num_measurements,
            'Weight': [weight] * num_measurements,
            'Workshop_Temperature': [workshop_temperature] * num_measurements,
            'Annealing_Type': [annealing_type] * num_measurements,
            'Cooling_Type': [cooling_type] * num_measurements,
            'Temperature': temperature_data
        })

        # 将物料数据添加到总体数据中
        data = pd.concat([data, material_data], ignore_index=True)
        
        # 修改数据类型
        data['Measurement_Time'] = data['Measurement_Time'].astype("float64")
        
    return data

# 导入数据
data = fun_data()

# 定义自变量和因变量
# 对类别型的自变量进行编码,使用独热编码(one-hot encoding),其他默认为数值型自变量
X = data[['Measurement_Time', 'Width', 'Thickness', 'Weight', 'Workshop_Temperature', 'Annealing_Type', 'Cooling_Type']]
X = pd.get_dummies(X, columns=['Annealing_Type', 'Cooling_Type']) # 将退火类型和冷却类型转换为哑变量
y = data['Temperature'] # 选择温度作为因变量

# 划分训练集和测试集,使用8:2的比例
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 设置随机种子为42

# 生成一个指数回归模型,以预测温度与其他变量的关系, 并给出模型的函数

# 对因变量进行对数变换
y_train_log = np.log(y_train)
y_test_log = np.log(y_test)

# 创建线性回归模型对象
model = LinearRegression()

# 拟合训练数据
model.fit(X_train, y_train_log)

# 预测测试数据
y_pred_log = model.predict(X_test)

# 计算均方误差(MSE)和决定系数(R2)
mse = mean_squared_error(y_test_log, y_pred_log)
r2 = r2_score(y_test_log, y_pred_log)

# 打印模型的参数和评估指标
print("Intercept:", model.intercept_)
print("Coefficients:", model.coef_)
print("MSE:", mse)
print("R2:", r2)

# 将模型的函数表示为指数形式
def exp_model(x):
    # x是一个包含所有自变量的数组
    # 返回一个预测的温度值
    log_y = model.intercept_ + np.dot(model.coef_, x)
    y = np.exp(log_y)
    return y

# 打印模型的函数
print("The exponential regression model is:")
print("Temperature = exp({:.4f} + {:.4f} * Measurement_Time + {:.4f} * Width + {:.4f} * Thickness + {:.4f} * Weight + {:.4f} * Workshop_Temperature + {:.4f} * Annealing_Type_O态 + {:.4f} * Annealing_Type_H2态 + {:.4f} * Cooling_Type_自然冷却 + {:.4f} * Cooling_Type_单面风机 + {:.4f} * Cooling_Type_双面风机)".format(model.intercept_, *model.coef_))

标签:变量,data,模型,num,log,np,model,Type,函数
From: https://blog.51cto.com/u_16055028/7737582

相关文章

  • 大语言模型黑盒被打破;Meta 元宇宙硬件亏损可能高于市场共识丨 RTE 开发者日报 Vol.60
     开发者朋友们大家好:这里是「RTE开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享RTE (RealTimeEngagement) 领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表编辑的个人观点,欢迎......
  • GPU通用计算编程模型
    这是我阅读General-PurposeGraphicsProcessorArchitecture的一篇笔记,本文对应书中第二章的内容。执行模型现代GPU普遍采用SIMD来实现数据级(data-level)并行,程序员通过诸如CUDA等API以在GPU上启动一系列的线程(thread)执行工作。其中,每个线程可以有独立的执行路径(executionpath),......
  • 核函数
     李政轩老师系列视频https://www.bilibili.com/video/BV1nx41157xz/?spm_id_from=333.337.search-card.all.click&vd_source=6292df769fba3b00eb2ff1859b99d79e   低纬度空间线性不可分,转换到高维空间,可以线性分开。  核函数 ......
  • 函数的基础概念介绍
    函数是什么?简单来说,指一个实数映射到另一个实数的过程;详细来说,指用于描述两个数集之间的关系。一个函数通常由以下三个要素定义(缺一不可):定义域(Domain):函数的定义域是指函数接受输入的所有可能值构成的集合。也就是说,定义域确定了函数可以接受的自变量的范围。值域(Range):函数的......
  • 三维模型3DTile格式轻量化的数据压缩与性能平衡关系分析
    三维模型3DTile格式轻量化的数据压缩与性能平衡关系分析 对于三维模型的3DTile格式轻量化处理,数据压缩和性能之间的平衡关系是一个重要的考虑因素。以下是这两者关系的详细分析:1、数据压缩与加载速度:显然,更高级别的压缩可以创造更小的文件大小,从而加快从服务器到客户端的传输......
  • R语言中purrr包中的map函数的使用
    R语言中purrr包中的map函数的使用参考文章:https://bookdown.org/wangminjie/R4DS/tidyverse-purrr.html语法map()函数的第一个参数是list或者vector,第二个参数是函数。注意这里的第一个传参,数据框是列表的一种特殊形式,因此数据框也是可以的。测试d变量的内容为:>d......
  • 为什么js中不推荐使用eval函数
    eval函数的作用'eval'函数是javascript中的一个内置函数,它的主要作用是将传入的字符串作为代码来执行。换句话说,'eval'可以将动态生成的字符串当作javascript代码来执行,并返回执行结果。我的理解就是它可以执行传入的代码,并返回执行结果。为什么不推荐使用eval1、安全性问题:'......
  • 基于AI模型的验证码安全识别(B站,知乎等)
     bilibili汉字识别顺序验证码实现基本思路:  先利用Selenium模拟登录,当然在这之前做好请求伪装,get方法使边框最大化,并且将系统的windows窗口缩放比例设置为100%,不推荐125%,否则可能导致xpath定位不准,使用send_key()方法导入账号密码,隐式等待验证码出现,这里B站可以获取验证......
  • 修改系统变量
    //修改系统变量stringvariableName="MY_VARIABLE";stringnewValue="newvalue";//在当前进程中设置系统变量Environment.SetEnvironmentVariable(variableName,newValue,EnvironmentVariableTarget.Process);//在系统级别设置系统变量Environment.SetEnvironm......
  • MATLAB图论工具箱(哪有什么工具箱,就只是一堆函数而已)
    MATLAB图论工具箱图论基础Matlab图论工具箱提供了构建、操作和分析图形的函数和工具。在Matlab图论工具箱中,可以使用以下基本数据结构:graph:无向图。digraph:有向图。可以使用以下函数创建一个图或有向图:graph:创建一个无向图。digraph:创建一个有向图。%创建无......