拟合线性回归模型中的值误差

Posted

技术标签:

【中文标题】拟合线性回归模型中的值误差【英文标题】:Value error in fitting linear regression model 【发布时间】:2018-10-13 11:04:03 【问题描述】:

我开始为 USD 到 INR 的转换制作一个预测模型。 我将数据拆分,将日期转换为序数格式,并将其拟合到 LinearRegression 模型中。

import pandas as pd
from sklearn import linear_model
import matplotlib.pyplot as plt
import datetime as dt
data = pd.read_csv("FED-RXI_N_M_IN.csv")
rates = 
rates = 'date':[x for x in data.Date],
         'rate':[y for y in data.Value]
df = pd.DataFrame(rates, columns = ["date", "rate"])
dates = df['date']
rates = df['rate']
dates = pd.to_datetime(dates)
dates = dates.map(dt.datetime.toordinal)

#train data
dates_test = dates[0:110]
rates_test = rates[0:110]

#test data
dates_train = dates[110:543]
rates_train = rates[110:543]

plt.plot_date(dates_test, rates_test, fmt="g-")
plt.title('US-INR Currency Predictor')
plt.ylabel("INR rate against $1")
plt.xlabel("Date")

#training
regr = linear_model.LinearRegression()
regr.fit(dates_train,rates_train)
rates_pred = regr.predict(dates_test)
plt.scatter(dates_test, rates_test,  color='black')
plt.title('Test Data')
plt.xlabel('Date')
plt.ylabel('Rate')
plt.plot(dates_test, rates_pred, color = 'red', linewidth= 3)
plt.xticks(())
plt.yticks(())
plt.show()
print( str((regr.predict(736753))) )

我在regr.fit(dates_train,rates_train) 收到此错误

请帮助我如何解决它。我是这个领域的初学者。

【问题讨论】:

您为什么要使用 pandas 读取 csv,然后从中构建字典,然后使用字典创建新的数据框? 仅用于从给定数据中提取有用数据 【参考方案1】:

看起来 sklearn 需要(row number, column number) 的数据形状。为此,您可以使用reshape 方法。

另外,您需要将numpy 数组作为输入传递给fit 方法。

rates = df['rate'].values.reshape(len(df.index), 1)   

#train data
dates_test = dates[0:110, :]
rates_test = rates[0:110, :]

#test data
dates_train = dates[110:543, :]
rates_train = rates[110:543, :]

【讨论】:

谢谢,但是用 (433,1) 和 (110,1) 重塑而不转换为 numpy 数组,解决了问题 @AshutoshAgrahari,我在回答中提到您需要使用reshape 方法重塑数据。

以上是关于拟合线性回归模型中的值误差的主要内容,如果未能解决你的问题,请参考以下文章

线性回归模型

回归分析

如何从多项式拟合线性回归模型中的给定 Y 值预测 X 值?

课时一:线性回归算法入门到详解

拟合贝叶斯线性回归并预测不可观察的值

一元线性回归的数学原理