我正在学习python,我想对.csv数据集执行简单的线性回归。我已经成功导入了数据文件。如果我有8个五年期间的数据,并且想进行简单的线性回归,该怎么做?数据是按县/州划分的。所以我的标题是县,州,1980、1985等。感谢任何帮助。
答案 0 :(得分:0)
请指定您要考虑的目标标签。 无论如何,请使用sklearn库和熊猫。
val= pd.DataFrame(your.data);
val.columns = your.headers;
假设您有一个名为“价格”的目标标头。
from sklearn.linear_model import LinearRegression
X = val.drop('Price',axis=1)
X包含将在其上执行LR的数据。 现在创建一个线性回归对象。
lm = LinearRegression()
开始试穿:
lm.fit()
预测目标:
lm.predict(x)
就是这样。
答案 1 :(得分:0)
几乎所有您将要遇到的现实世界问题都将具有两个以上的变量,因此让我们跳过基本的线性回归示例。涉及多个变量的线性回归称为“多重线性回归”。执行多元线性回归的步骤几乎与简单线性回归的步骤相似。区别在于评估。您可以使用它来找出哪个因素对预测的输出影响最大,以及不同的变量之间如何关联。
在本节中,我们将使用多元线性回归,根据汽油税(美分),人均收入(美元),已铺设的高速公路(以英里为单位)和拥有驾驶执照的人口比例。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# %matplotlib inline
dataset = pd.read_csv('C:/your_Path_here/petrol_consumption.csv')
dataset.head()
dataset.describe()
结果:
Index ... Consumption_In_Millions
count 48.00 ... 48.000000
mean 24.50 ... 576.770833
std 14.00 ... 111.885816
min 1.00 ... 344.000000
25% 12.75 ... 509.500000
50% 24.50 ... 568.500000
75% 36.25 ... 632.750000
max 48.00 ... 968.000000
准备数据 下一步是像以前一样将数据分为属性和标签。但是,与上次不同,这次我们将使用列名来创建属性集和标签。执行以下脚本:
X = dataset[['Petrol_Tax', 'Average_Income', 'Paved_Highways', 'ProportionWithLicenses']]
y = dataset['Consumption_In_Millions']
执行以下代码,将我们的数据分为训练集和测试集:
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
训练算法 最后,为了训练算法,我们使用LinearRegression类的fit()方法执行与之前相同的代码:
from sklearn.linear_model import LinearRegression
regressor = LinearRegression()
regressor.fit(X_train, y_train)
如前所述,在多变量线性回归的情况下,回归模型必须找到所有属性的最佳系数。要查看我们的回归模型选择了哪些系数,请执行以下脚本:
coeff_df = pd.DataFrame(regressor.coef_, X.columns, columns=['Coefficient'])
coeff_df
结果:
Coefficient
Petrol_Tax -40.016660
Average_Income -0.065413
Paved_Highways -0.004741
ProportionWithLicenses 1341.862121
这意味着,每增加一个“汽油税”,汽油消耗量就会减少2419万加仑。同样,持有驾照的人口比例每增加一单位,天然气消耗量将增加13.24亿加仑。我们可以看到“ Average_income”和“ Paved_Highways”对汽油消耗的影响很小。
做出预测 要对测试数据进行预测,请执行以下脚本:
y_pred = regressor.predict(X_test)
要将X_test的实际输出值与预测值进行比较,请执行以下脚本:
df = pd.DataFrame({'Actual': y_test, 'Predicted': y_pred})
df
结果:
Actual Predicted
29 534 469.391989
4 410 545.645464
26 577 589.668394
30 571 569.730413
32 577 649.774809
37 704 646.631164
34 487 511.608148
40 587 672.475177
7 467 502.074782
10 580 501.270734
评估算法 最后一步是评估算法的性能。我们将通过查找MAE,MSE和RMSE的值来完成此操作。执行以下脚本:
from sklearn import metrics
print('Mean Absolute Error:', metrics.mean_absolute_error(y_test, y_pred))
print('Mean Squared Error:', metrics.mean_squared_error(y_test, y_pred))
print('Root Mean Squared Error:', np.sqrt(metrics.mean_squared_error(y_test, y_pred)))
结果:
Mean Absolute Error: 56.822247479
Mean Squared Error: 4666.34478759
Root Mean Squared Error: 68.3106491522
您可以看到均方根误差值为60.07,略大于所有状态下耗气量平均值的10%。这意味着我们的算法不是很准确,但是仍然可以做出合理的预测。 造成这种不准确性的因素有很多,此处列出了一些因素: 1.需要更多数据:仅仅一年的数据就不那么多了,而拥有多年的数据本可以帮助我们提高准确性。 2.错误的假设:我们假设此数据具有线性关系,但事实并非如此。可视化数据可以帮助您确定。 3.特征差:我们使用的特征可能与我们试图预测的值之间没有足够高的相关性。
注意:可从此处获得本示例中使用的数据集。
http://people.sc.fsu.edu/~jburkardt/datasets/regression/x16.txt
最后,请参阅下面的两个链接以获取有关此主题的更多信息。
https://stackabuse.com/linear-regression-in-python-with-scikit-learn/
https://jakevdp.github.io/PythonDataScienceHandbook/05.06-linear-regression.html