Есть ли способ запустить линейную регрессию в Python, используя количество переменных в вашем наборе данных с датой в качестве предиктора? - PullRequest
0 голосов
/ 01 ноября 2019

Я пытаюсь создать линейную модель для прогнозирования количества преступлений в данном году.

Набор данных настроен следующим образом: -

Пример: -

Каждая точка данных относится к преступлению на данную дату

Date      Crime
12-31-15   yes
12-15-15   yes
11-14-13   yes
03-15-11   yes

Я хочу провести линейную регрессию, где моим предиктором является год, а прогнозируемой переменной - количество преступлений в год.

То, что я сделал, рассчитывается подсчет преступлений за каждый год, давая мне в основном:

df['countsofarrests'] = df.groupby('year')['year'].transform('count')

x (2011, 2012, 2013... 2018) лет

y (4123, 2312, 3231... 1231) суммапреступности в год

Мой вопрос: могу ли я сделать это таким образом, чтобы я мог предсказать преступность в 2019 году и объединить по годам? Делая это таким образом, я чувствую, что теряю много данных.

from sklearn.linear_model import LinearRegression

regressor = LinearRegression()

model = regressor.fit(x, y)

model.predict(2019)

1 Ответ

0 голосов
/ 01 ноября 2019

Все, что вам нужно сделать, это :):

model.predict([[2019]])
import pandas as pd

Date;Crime
12-31-15;yes
12-15-15;yes
11-14-13;yes
03-15-11;yes


df = pd.read_clipboard(sep=';')
df['Date'] = pd.to_datetime(df['Date'])
df['year'] = df.Date.dt.year

print(df)

Date    Crime   year
0   2015-12-31  yes 2015
1   2015-12-15  yes 2015
2   2013-11-14  yes 2013
3   2011-03-15  yes 2011

df = (df.groupby('year').Crime.count()).reset_index()
df
year    Crime
0   2011    1
1   2013    1
2   2015    2

X = df['year'].values.reshape(-1,1)
y = df['Crime']


from sklearn.linear_model import LinearRegression
regressor = LinearRegression()
model = regressor.fit(X, y)

model.predict([[2019]]) 

array([2.83333333])
...