Python简单回归图

时间:2018-08-11 00:55:08

标签: python-3.x

我正在学习python,我想对.csv数据集执行简单的线性回归。我已经成功导入了数据文件。如果我有8个五年期间的数据,并且想进行简单的线性回归,该怎么做?数据是按县/州划分的。所以我的标题是县,州,1980、1985等。感谢任何帮助。

2 个答案:

答案 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