【发布时间】:2019-02-01 16:20:27
【问题描述】:
我有 2012-2014 年的数据,其中 2014 年缺少一些月份。我想使用基于 2012/2013 年数据训练的线性回归模型来预测这些月份。
2014 缺少 June-August 并以 '' 作为其值,因此我使用以下代码对其进行清理,我还通过切割 20 个数据将 2012,2013 更改为具有相同形状:
data2014NaN=data2014['mob'].replace(' ', np.nan)
data2014CleanNaN = data2014NaN[data2014NaN.notnull()]
data2012[0:300]
data2013[0:300]
然后我使用这两年作为训练集来训练线性回归模型。
X = pd.concat([data2012[0:300], data2013[0:300]], axis=1, join='inner')
y = data2014CleanNaN .values
y = y.reshape(-1,1)
from sklearn.model_selection import train_test_split
# Split into 75% train and 25% test
X_train, X_test, y_train, y_test = train_test_split(X, y,
train_size=0.75,
random_state=4)
lm = LinearRegression()
lm.fit(X_train,y_train)
score = lm.score(X_test,y_test)
print("The prediction score on the test data is {:.2f}%".format(score*100))
但是我得到的结果是糟糕的 4.65%,我不太确定如何解决这个问题,我认为我在减少 2012 年和 2013 年的数据时做错了
我在这里附上了数据(这只是虚拟数据):
2014:
date value
29/01/2014 10
30/01/2014 20
31/01/2014 15
1/02/2014 ' '
2012:
date value
29/01/2014 15
30/01/2014 18
31/01/2014 19
1/02/2014 50
我只是使用价值数据,不确定我是否在正确的方向
最好的问候
【问题讨论】:
-
你能告诉我们
data2012、data2013、data2014的样子吗? -
我想你试图预测的是时间的函数,所以你应该在
x-axis 上有时间,在y-axis 上有时间。但在代码中,您似乎同时使用了x和y轴的值。为什么? -
这需要更多解释。哪一列有缺失值?多个还是单个?你的数据是什么样的?为什么
X和y使用相似的数据? -
感谢您的评论,我添加了数据的样子
-
如果将日期转换为“自开始以来的天数”,则日期列将变为回归或线性插值的数字数据。
标签: python pandas scikit-learn linear-regression predict