【问题标题】:Is there a way to run a linear regression in python using counts of variables in your data set with date as the predictor?有没有办法在 python 中使用数据集中的变量计数以日期作为预测变量来运行线性回归?
【发布时间】:2019-11-01 03:05:39
【问题描述】:

我正在尝试创建一个线性模型来预测给定年份的犯罪数量。

数据集设置如下:-

例子:-

每个数据点都代表该给定日期的犯罪行为

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)

【问题讨论】:

  • 嘿,我已经更新了代码。你想要的超级简单。

标签: python scikit-learn linear-regression


【解决方案1】:

你所要做的就是:):

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])

【讨论】:

  • 我的问题不是运行回归,更重要的是这样做会将我的数据集中的数千个数据点减少到仅几年的数量,这在我看来严重限制了回归。我是不是想太多了?
  • 哦,好的。只需将数据减少到年份级别,然后预测未来。您仍然可以利用线性回归。你有多少年的数据?
猜你喜欢
  • 2018-05-16
  • 2011-12-20
  • 2021-05-01
  • 1970-01-01
  • 2020-08-04
  • 2018-04-05
  • 1970-01-01
  • 2020-02-10
  • 2018-05-16
相关资源
最近更新 更多