基于数据帧的Python线性回归预测模型
这是我的样本数据:基于数据帧的Python线性回归预测模型,python,pandas,python-2.7,linear-regression,spyder,Python,Pandas,Python 2.7,Linear Regression,Spyder,这是我的样本数据: import pandas as pd avg_consumption = pd.DataFrame({ 'Car.Year.Model':[2009, 2010, 2011, 2012], 'City.mpg':[17.9, 17, 16.9, 18.3], 'Highway.mpg':[24.3, 23.6, 23.6, 25.7] }) 我想使用线性回归来预测每一车型年每种燃油范围类型(城市和公路)的平均燃油消耗量 我的期望输出与我的数据框架相同,但它使用我的现有数
import pandas as pd
avg_consumption = pd.DataFrame({
'Car.Year.Model':[2009, 2010, 2011, 2012],
'City.mpg':[17.9, 17, 16.9, 18.3],
'Highway.mpg':[24.3, 23.6, 23.6, 25.7]
})
我想使用线性回归来预测每一车型年每种燃油范围类型(城市和公路)的平均燃油消耗量
我的期望输出与我的数据框架相同,但它使用我的现有数据预测了截至2025年的车型年平均燃油消耗量。
我不完全确定该怎么做
我尝试过的:
我试图按照问题的答案来回答:
from sklearn.linear_model import LinearRegression
years = pd.DataFrame()
years['Car.Year.Model'] = range(2009, 2025)
# I include 2009-2012 to test the prediction values are still the same as the original
X = avg_consumption.filter(['Car.Year.Model'])
y = avg_consumption.drop('Car.Year.Model', axis=1)
model = LinearRegression()
model.fit(X, y)
X_predict = years
y_predict = model.predict(X_predict)
我的结果如下所示:
如果我假设我的第一行具有2009年的预测值,那么这是不正确的,因为我的2009年款原始数据框中的值不同 我想确保它能够正确预测到2025年为止每年的平均燃油消耗量。我还希望我的结果以类似于样本数据的数据框架呈现 有人能给我指出正确的方向吗?你可以使用和进行线性外推。然后加上预测年数,如下所示:
import pandas as pd
import numpy as np
avg_consumption = pd.DataFrame({
'Car.Year.Model':[2009, 2010, 2011, 2012],
'City.mpg':[17.9, 17, 16.9, 18.3],
'Highway.mpg':[24.3, 23.6, 23.6, 25.7]
})
f_city = np.poly1d(np.polyfit(avg_consumption["Car.Year.Model"], avg_consumption["City.mpg"], 1))
f_highway = np.poly1d(np.polyfit(avg_consumption["Car.Year.Model"], avg_consumption["Highway.mpg"], 1))
new_data = pd.DataFrame([[i, f_city(i), f_highway(i)] for i in range(2013, 2026)], columns=avg_consumption.columns)
avg_consumption = pd.concat([avg_consumption, new_data], axis=0)
收益率:
Car.Year.Model City.mpg Highway.mpg
0 2009 17.90 24.30
1 2010 17.00 23.60
2 2011 16.90 23.60
3 2012 18.30 25.70
0 2013 17.80 25.35
1 2014 17.91 25.77
2 2015 18.02 26.19
3 2016 18.13 26.61
4 2017 18.24 27.03
5 2018 18.35 27.45
6 2019 18.46 27.87
7 2020 18.57 28.29
8 2021 18.68 28.71
9 2022 18.79 29.13
10 2023 18.90 29.55
11 2024 19.01 29.97
12 2025 19.12 30.39
“这是不正确的,因为我的2009年款原始数据框中的值不同。”:这是因为您的(输入)值是实际数据,但此数据框具有来自最佳拟合模型的预测。输出不是您的数据:它基本上是一条穿过一些分散点的线。
ax = avg_consumption.set_index("Car.Year.Model").iloc[:4].plot()
avg_consumption.set_index("Car.Year.Model").iloc[3:].plot(ls="-.", ax=ax)