【问题标题】:Finding a formula for a relationship between a target and multiple predictor variables寻找目标和多个预测变量之间关系的公式
【发布时间】:2022-01-11 06:01:46
【问题描述】:

我有一个名为“covid”的数据集,其形状和头部如下:

number of instances:  19345
number of attributes:  7
  submission_date state  new_case  new_death    density   latitude   longitude
0      2020-06-01    KS       292          9  71.401302  39.011902  -98.484246
1      2020-06-01    WA       271          6  96.704458  47.751074 -120.740139
2      2020-06-01    MT         8          0   6.837955  46.879682 -110.362566
3      2020-06-01    IA       146         15  54.642103  41.878003  -93.097702
4      2020-06-01    KY       136          6        NaN  37.839333  -84.270018

每一行代表一个辖区(州列)的每日 covid 数据以及有关辖区的一些信息 - 每个辖区(州和某些地区)有 365 个对象。

如何找到作为自变量的submission_date、longitude 和latitude 列与作为因变量的new_case 列之间的关系?我想这将是一个多元回归,但我是该领域的新手,从未创建过回归。

【问题讨论】:

    标签: python statistics regression data-mining


    【解决方案1】:

    您可以使用许多模型类型和包。我将展示一个使用 catboost 的示例:

    from catboost import CatBoostRegressor, Pool
    from sklearn.model_selection import train_test_split
    
    # Initialize data
    df['submission_date_feature'] = df['submission_date'].as(int)
    train_cols = ['submission_date_feature', 'longitude', 'latitude']
    label_col = 'new_case'
    
    X_train, y_train, X_test, y_test = train_test_split([df[train_cols], df[label_col]], test_size=0.2)
    
    train_data = Pool(X_train, y_train)
    eval_data = Pool(X_test, y_test)
    
    # Initialize CatBoostRegressor
    model = CatBoostRegressor(iterations=10,
                              learning_rate=1,
                              depth=3)
    # Fit model
    model.fit(train_data, eval_set=eval_data)
    

    【讨论】:

    • 模型建立后,有没有办法查看回归方程?预测的语法是什么?
    【解决方案2】:

    作为基准,您可以运行 OLS 回归:

    import statsmodels.api as sm
    Y = df['new_case'].values
    df['submission_date_int'] = df['submission_date'].astype(int)
    X = df[['submission_date_int', 'longitude', 'latitude']].values
    X = sm.add_constant(X)
    model = sm.OLS(Y,X)
    results = model.fit()
    print(results.summary())
    

    或使用sklearn.linear_model.LinearRegression。

    【讨论】:

    • 模型建立后,有没有办法查看 OLS 方程?预测的语法是什么?
    【解决方案3】:

    您可以通过以下方式在sklearn中使用多元线性回归查看回归方程。

    import pandas as pd
    import numpy as np
    import matplotlib.pyplot as plt
    
    y = df['new_case'].values
    df['submission_date_int'] = df['submission_date'].astype(int)
    X = df[['submission_date_int', 'longitude', 'latitude']].values
    
    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=0)
    
    from sklearn.linear_model import LinearRegression
    regressor = LinearRegression()
    regressor.fit(X_train, y_train)
    
    reg_coeff = pd.DataFrame(regressor.coef_, X.columns, columns=['Reg_coeff'])
    reg_coeff
    

    【讨论】:

      猜你喜欢
      • 2021-02-11
      • 2019-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-22
      • 1970-01-01
      • 2019-11-02
      • 1970-01-01
      相关资源
      最近更新 更多