Нахождение формулы для взаимосвязи между целевой и несколькими переменными-предикторами

#python #statistics #regression #data-mining

#питон #Статистика #регрессия #интеллектуальный анализ данных

Вопрос:

У меня есть набор данных с именем «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  

Каждая строка представляет собой данные о суточных в юрисдикции (столбец штата), а также некоторую информацию о юрисдикции — 365 объектов на юрский период (штаты и некоторые территории).

Как я могу найти связь между столбцами submission_date, долгота и широта в качестве независимых переменных и столбцом new_case в качестве зависимой переменной? Я предполагаю, что это будет множественная регрессия, но я новичок в этой области и никогда не создавал регрессию.

Ответ №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)  

Комментарии:

1. Как только модель будет построена, есть ли способ увидеть уравнение регрессии? Какой синтаксис можно предсказать?

Ответ №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 .

Комментарии:

1. Как только модель построена, есть ли способ увидеть уравнение 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