【发布时间】:2019-06-14 07:14:08
【问题描述】:
我只想在两列中迭代三行,然后在迭代函数中,我在这三行中进行线性回归。所以,迭代三行,做线性回归,迭代三行,做线性回归,等等。
我把数据输入here。我想在 Year 和 Value 列中迭代三行,然后进行线性回归,然后在 Year 和 Value 列中迭代三行,然后进行线性回归,依此类推。
我已经尝试过这段代码,但是有一个错误
year=data_['Year']
value=data_['Value']
i=0
count=0
for a,b in zip(year,value):
print(a,b)
count = count+1
if count%3 == 0:
x=np.array([[a]])
y=np.array([[b]])
reg=linear_model.LinearRegression()
x_train,x_test,y_train,y_test=train_test_split(x,y,test_size = 0.2 ,random_state=3)
reg.fit(x_train,y_train)
y4=4*reg.coef_ + reg.intercept_
plt.scatter(x,y)
plt.show()
print(reg.coef_)
print("R^2 : ",reg.score(x, y))
print("Equation : 4 *", reg.coef_, "+", reg.intercept_)
print("Y4 : ", y4)
print("====")
我希望每三行的输出产生一个斜率、系数和方程。
【问题讨论】:
-
1) 报错,不要只说有错误。 2) 为什么你想只用 1 个数据点做线性回归?无限多的线经过 1 个点;所以你至少需要 2 个。另外,为什么要尝试只用 1 个数据点进行训练测试拆分? 3)您需要查找以下内容:a)使用 pandas 进行索引,b)使用 pandas 进行迭代,c)S.O. 中的其他答案。在发布之前。
-
现在,您的代码每 2 次迭代什么都不做,并尝试每隔三分之一对单个 x,y 对进行一次线性回归...您至少应该将
reg.fit(x,y)替换为reg.fit(x_train,y_train) -
@Energya 出现错误“TypeError: Singleton array array(3) cannot be considered a valid collection.”
-
@KostasMouratidis 1) 错误“”TypeError:单例数组数组(3) 不能被视为有效集合。” 2) 我想用来自年份列的 x 和来自值列的 y 进行线性回归. 所以,我可以每隔三行预测第 4 年。如果这是我想要的,它真的需要训练测试拆分
-
不,您不需要训练测试拆分。此外,您可能想要的不是像您那样遍历行,您需要遍历 pandas 索引,可能会执行以下操作:
x = years[idx-3:idx](选择行idx-3、idx-2和idx-1) 并预测y = values[idx],这将需要对 x 进行重新整形(可能像这样:x.values.reshape((1,-1))),对于 y(y.reshape((1,1)))也是如此。即便如此,这也不是最优的,您可能还想做其他事情,比如使用窗口 3 进行滚动预测。也许最好遵循一些关于时间序列的教程。
标签: python pandas loops linear-regression