Простая линейная регрессия двух фреймов данных python - PullRequest
0 голосов
/ 08 марта 2020

У меня есть два кадра данных с индексом даты и времени. первый кадр данных может содержать значение nan, а второй - нет.

data1['A']
2019-06-01 00:00:00          NaN
2019-06-01 01:00:00          NaN
2019-06-01 02:00:00          NaN
2019-06-01 03:00:00          NaN
2019-06-01 04:00:00          NaN
                         ...    
2019-06-30 19:00:00    14.086600
2019-06-30 20:00:00    14.101033
2019-06-30 21:00:00    14.160733
2019-06-30 22:00:00    13.940633
2019-06-30 23:00:00    13.989567
Freq: H, Name: A, Length: 720, dtype: float64
data2['B']
2019-06-01 00:00:00    243.168989
2019-06-01 01:00:00    243.104673
2019-06-01 02:00:00    242.571222
2019-06-01 03:00:00    240.685214
2019-06-01 04:00:00    242.652392
                          ...    
2019-06-30 19:00:00    243.611821
2019-06-30 20:00:00    243.338931
2019-06-30 21:00:00    243.296361
2019-06-30 22:00:00    243.676107
2019-06-30 23:00:00    243.507886
Name: B, Length: 720, dtype: float64

как я могу провести простую модель линейной регрессии этих двух фреймов данных, когда оба имеют значение в определенное время (без nan). спасибо за помощь!

Ответы [ 3 ]

1 голос
/ 08 марта 2020

Вы можете использовать LinearRegression из scikit-learn:

https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LinearRegression.html

0 голосов
/ 09 марта 2020

Вы можете попробовать что-то вроде этого, вы не указали, к чему регрессировать, поэтому в приведенном ниже примере я обозначаю x как «A», а y - «B»:

from sklearn import linear_model
import pandas as pd
import numpy as np

data1 = pd.DataFrame({'A':[np.NaN,np.NaN,np.NaN,np.NaN,14.086600,14.101033,14.160733,13.940633,13.989567]})
data2 = pd.DataFrame ({ 'B':[243.168989,243.104673,242.571222,240.685214,242.652392,
                             243.611821,243.338931,243.296361,243.676107,243.507886]})
is_finite = np.isfinite(data1['A']) & np.isfinite(data2['B'])
mdl = linear_model.LinearRegression()
mdl.fit(data1.loc[is_finite][['A']],data2.loc[is_finite]['B'])
mdl.coef_
0 голосов
/ 08 марта 2020

Сначала необходимо объединить кадры данных в один кадр данных https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.merge.html, а затем попробовать LinearRegression из scikit-learn для объединенного кадра данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...