zhuifeng66666 2023-02-20 16:41 采纳率: 50%
浏览 54
已结题

氨氧化法硝酸生产过程数据的回归分析任务

问题遇到的现象和发生背景

回归分析任务
任务 1
数据(文件regres.txt)(数据见下面代码块)代表了21天内对氨氧化法硝酸生产过程的四个参数的测量。
氨氧化法的硝酸生产过程的四个参数。
X(1) - (air speed)空气速度。
X(2)-( temperature of the cooled liquid)是冷却后的液体温度。
X(3)-(acid concentration)酸浓度。
X(4) - (loss of ammonia)氨的损失。
变量X(4)是因变量,变量X(1)、X(2)X(3)是独立变量。
1 确定哪些自变量是高度相关的。
2. 确定哪些自变量与因变量高度相关。
3. 建立一个多元线性回归方程,确定哪些自变量是显著的。
4. 使用逐步回归法,选择有信息的变量。
5.分析残留物。
6.构建因变量的预测,将第4天的数值作为自变量的数值。
任务2

1.建立岭回归模型(Ridge Regression Model)
2. 建立拉索回归模型( Lasso Regression Model)
3. 构建每个模型的因变量预测,将第四天的数值作为自变量。
将第四天的数值作为自变量的数值。

数据(文件regres.txt)
  80.00000   27.00000   89.00000   42.00000 
  80.00000   27.00000   88.00000   37.00000 
  75.00000   25.00000   90.00000   37.00000 
  62.00000   24.00000   87.00000   28.00000 
  62.00000   22.00000   87.00000   18.00000 
  62.00000   23.00000   87.00000   18.00000 
  62.00000   24.00000   93.00000   19.00000 
  62.00000   24.00000   93.00000   20.00000 
  58.00000   23.00000   87.00000   15.00000 
  58.00000   18.00000   80.00000   14.00000 
  58.00000   18.00000   89.00000   14.00000 
  58.00000   17.00000   88.00000   13.00000 
  58.00000   18.00000   82.00000   11.00000 
  58.00000   19.00000   93.00000   12.00000 
  50.00000   18.00000   89.00000    8.00000 
  50.00000   18.00000   86.00000    7.00000 
  50.00000   19.00000   72.00000    8.00000 
  50.00000   19.00000   79.00000    8.00000 
  50.00000   20.00000   80.00000    9.00000 
  56.00000   20.00000   82.00000   15.00000 
  70.00000   20.00000   91.00000   15.00000 
我想要达到的结果

使用Python和Jupyter notebook编写,完成任务要求,写一下注释

  • 写回答

7条回答 默认 最新

  • 社区专家-Monster-XH 2023-02-20 16:50
    关注

    基于Monster 组和GPT的调写:
    任务1

    # 导入所需的库
    import pandas as pd
    import numpy as np
    import statsmodels.api as sm
    from statsmodels.stats.outliers_influence import variance_inflation_factor
    
    # 读取数据文件
    data = pd.read_csv('regres.txt', header=None, delim_whitespace=True,
                       names=['air_speed', 'temp', 'acid_conc', 'loss_ammonia'])
    X = data[['air_speed', 'temp', 'acid_conc']]
    y = data['loss_ammonia']
    
    # 确定哪些自变量是高度相关的
    vif = pd.DataFrame()
    vif["VIF Factor"] = [variance_inflation_factor(X.values, i) for i in range(X.shape[1])]
    vif["features"] = X.columns
    print(vif)
    
    # 确定哪些自变量与因变量高度相关
    X = sm.add_constant(X)
    model = sm.OLS(y, X).fit()
    print(model.summary())
    
    # 建立一个多元线性回归方程,确定哪些自变量是显著的
    significant_features = ['air_speed', 'temp']
    X_significant = X[significant_features]
    model_significant = sm.OLS(y, X_significant).fit()
    print(model_significant.summary())
    
    
    # 使用逐步回归法,选择有信息的变量
    def backward_elimination(X, y, sig_level=0.05):
        num_features = X.shape[1]
        for i in range(num_features):
            model = sm.OLS(y, X).fit()
            p_values = model.pvalues
            max_p_value = max(p_values)
            if max_p_value > sig_level:
                max_p_value_idx = p_values.idxmax()
                X = X.drop(max_p_value_idx, axis=1)
            else:
                break
        return X
    
    
    X_backward_elim = backward_elimination(X, y)
    model_backward_elim = sm.OLS(y, X_backward_elim).fit()
    print(model_backward_elim.summary())
    
    # 分析残留物
    residuals = model_backward_elim.resid
    print(residuals.describe())
    
    # 构建因变量的预测,将第4天的数值作为自变量的数值
    X_predict = [1, 62, 24, 93]
    y_predict = model_backward_elim.predict(X_predict)
    print(y_predict)
    

    任务2

    岭回归模型
    Ridge回归模型是线性回归模型的改进版,它添加了L2范数正则化项。岭回归通过对系数进行缩减,降低了过拟合的风险。我们可以使用scikit-learn库的Ridge类来建立岭回归模型。

    
    导入所需的库
    import pandas as pd
    import numpy as np
    from sklearn.linear_model import Ridge
    from sklearn.metrics import mean_squared_error
    
    读取数据文件
    data = pd.read_csv('regres.txt', header=None, delim_whitespace=True, names=['air_speed', 'temp', 'acid_conc', 'loss_ammonia'])
    X = data[['air_speed', 'temp', 'acid_conc']]
    y = data['loss_ammonia']
    
    将第四天的数据用作自变量
    x_pred = X.iloc[3]
    
    建立岭回归模型
    ridge = Ridge(alpha=1.0)
    ridge.fit(X, y)
    
    使用模型进行预测
    y_pred = ridge.predict([x_pred])
    
    输出预测结果
    print("预测值:", y_pred[0])
    
    拉索回归模型
    Lasso回归模型也是线性回归模型的改进版,它添加了L1范数正则化项。与岭回归相比,Lasso回归可以将某些系数缩减到0,因此可以用于特征选择。我们可以使用scikit-learn库的Lasso类来建立Lasso回归模型。
    
    导入所需的库
    import pandas as pd
    import numpy as np
    from sklearn.linear_model import Lasso
    from sklearn.metrics import mean_squared_error
    
    读取数据文件
    data = pd.read_csv('regres.txt', header=None, delim_whitespace=True, names=['air_speed', 'temp', 'acid_conc', 'loss_ammonia'])
    X = data[['air_speed', 'temp', 'acid_conc']]
    y = data['loss_ammonia']
    
    将第四天的数据用作自变量
    x_pred = X.iloc[3]
    
    建立Lasso回归模型
    lasso = Lasso(alpha=1.0)
    lasso.fit(X, y)
    
    使用模型进行预测
    y_pred = lasso.predict([x_pred])
    
    输出预测结果
    print("预测值:", y_pred[0])
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(6条)

报告相同问题?

问题事件

  • 系统已结题 3月6日
  • 已采纳回答 2月26日
  • 修改了问题 2月20日
  • 创建了问题 2月20日

悬赏问题

  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分