时间序列预测:如何改进我的回归模型?

我在分析2019年9月的Citi Bike数据(时间序列数据),以便为我的论文构建预测性回归模型。数据集可以在这里找到。目前,我正在处理包含240万行的数据集,将其聚合为每日每站点每小时的自行车需求。聚合后的数据如下所示:
citibike聚合数据

我使用train_test_split分割了数据集,并应用了各种标准学习算法,主要来自scikit-learn。然而,这些模型的输出结果显示R2值非常低。例如,使用scikit-learn的线性回归,我得到的R2值为0.09019569965308272,因此模型未能识别出数据中的模式。以下是线性回归模型的代码:

def lr(X_train, X_test, y_train, y_test):    #创建一个线性回归对象    reg = LinearRegression()    sc_X = StandardScaler()    X_train, X_test = scaleData(X_train, X_test, "robust")    print(X_train)    print(X_test)    reg.fit(X_train, y_train)    print("reg.score(X, y): {} \n".format(reg.score(X_test, y_test)))    print("reg.coef_: {} \n".format(reg.coef_))    print("reg.intercept_: {} \n".format(reg.intercept_))    pred = reg.predict(X_test)    print("Pred: {} \n".format(pred))    results = pd.DataFrame({'Actual': y_test.flatten(), 'Predicted': pred.flatten()})    print(results)    PlotResultsGetPerformance(results)lr(X_train, X_test, y_train, y_test)

scaledata方法如下:

def scaleData(X_train, X_test, scalingType, X=None):    scaler = []    stype = scalingType.lower()    if stype == "standard":        scaler = StandardScaler()    elif stype == "minmax":        scaler = MinMaxScaler()    elif stype == "robust":        scaler = RobustScaler()    if X == None:        scaler = scaler.fit(X_train)        X_train = scaler.transform(X_train)        X_test = scaler.transform(X_test)        return X_train, X_test    else:        X = scaler.fit_transform(X)        return X

运行线性回归算法的输出如下:

reg.score(X, y): 0.09019569965308272 reg.coef_: [[-4.71123839  0.87411394 -0.1425281   1.33332683]] reg.intercept_: [4.94247875] Pred: [[ 4.16553018] [10.71438879] [ 5.21549358] ... [10.23551752] [ 4.94370368] [ 4.10551935]] 

输入图片描述

输入图片描述

平均绝对误差:4.833603206597555
均方误差:61.94697363477656
均方根误差:7.870639976188503
R2:0.09019569965308272

问题出在哪里?是数据问题还是模型问题?任何帮助都将不胜感激。


回答:

在这种情况下,我认为你的模型出现了欠拟合高偏差)的问题。看起来解释变量中没有足够的信息。你需要在数据中增加更多的列。你可以创建新列,或者尝试找到更多的解释变量并添加到模型中。此外,请检查你已有的变量的质量,也许一些转换可以帮助改善预测。以下是更详细的解释:https://towardsdatascience.com/what-are-overfitting-and-underfitting-in-machine-learning-a96b30864690

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注