#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