pandas 如何返回简单线性回归的预测数据集?

vx6bjr1n  于 2023-05-21  发布在  其他
关注(0)|答案(1)|浏览(89)

我有一个线性回归(显示polyfit,但只有1度保持线性),我试图返回从11个月到20个月的所有预测结果的数据集。目前我有10个月的数据和打印(速度)将打印结果在第20个月。

import numpy
from sklearn.metrics import r2_score

x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
y = [1, 4, 3, 9, 8, 3, 7, 10, 8, 20]

mymodel = numpy.poly1d(numpy.polyfit(x, y, 1))

speed = mymodel(20)
print(speed)

预期结果(四舍五入)

import pandas as pd
df_results=pd.DataFrame({'months(x)':[11, 12, 13, 14, 15, 16, 17, 18, 19, 20], 'amount(y)':[15, 16, 17, 19, 20, 21, 23, 24, 26, 27]}) 
df_results
j8ag8udp

j8ag8udp1#

如果我没理解错的话,你想得到第11个月到第20个月的预测。
这段代码应该会给予预期的结果。

import numpy
import pandas as pd

x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
y = [1, 4, 3, 9, 8, 3, 7, 10, 8, 20]

mymodel = numpy.poly1d(numpy.polyfit(x, y, 1))

speed = mymodel(20)
print(speed)

input_data_from_11_months_to_20_months = numpy.arange(11, 21, 1)

prediction_from_11_months_to_20_months = numpy.round(
    mymodel(input_data_from_11_months_to_20_months)
)

print(prediction_from_11_months_to_20_months)

df_results = pd.DataFrame(
    {
        "months(x)": input_data_from_11_months_to_20_months,
        "amount(y)": prediction_from_11_months_to_20_months,
    }
)

print(df_results.head())

# Output
"""
26.89696969696969
[15. 16. 17. 19. 20. 21. 23. 24. 26. 27.]
   months(x)  amount(y)
0         11       15.0
1         12       16.0
2         13       17.0
3         14       19.0
4         15       20.0
"""

我使用numpyround函数对值进行四舍五入,并使用拟合模型得到预测。numpyarange函数创建从11日到20日的输入月份,步长为1。

相关问题