首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python简单回归图

Python简单回归图
EN

Stack Overflow用户
提问于 2018-08-11 08:55:08
回答 2查看 214关注 0票数 -2

我正在学习python,我想在.csv数据集上执行一个简单的线性回归。我已经成功导入了数据文件。如果我有8个五年的数据,我想做简单的线性回归,我该怎么做呢?数据是按县/州列出的。所以我的头是县,州,1980,1985等等。感谢任何人的帮助。

EN

回答 2

Stack Overflow用户

发布于 2018-08-11 09:09:40

请指定您心目中的目标标签。无论如何,使用sklearn库和pandas。

代码语言:javascript
复制
val= pd.DataFrame(your.data);
val.columns = your.headers;

假设您有一个名为"Price“的目标标头。

代码语言:javascript
复制
from sklearn.linear_model import LinearRegression
X = val.drop('Price',axis=1)

X包含将对其执行LR的数据。现在创建一个线性回归对象。

代码语言:javascript
复制
lm = LinearRegression()

开始管件:

代码语言:javascript
复制
lm.fit()

预测你的目标:

代码语言:javascript
复制
lm.predict(x)

就这样。

票数 0
EN

Stack Overflow用户

发布于 2018-08-16 04:03:13

几乎所有你将要遇到的现实问题都会有两个以上的变量,所以让我们跳过基本的线性回归示例。涉及多个变量的线性回归称为“多元线性回归”。执行多重线性回归的步骤几乎与简单线性回归的步骤相似。不同之处在于评估。您可以使用它来找出哪个因素对预测输出的影响最大,以及不同变量之间的关系。

在本节中,我们将使用多元线性回归根据燃油税(以美分为单位)、人均收入(以美元为单位)、铺设的高速公路(以英里为单位)和拥有驾照的人口比例来预测美国48个州的汽油消耗量(以百万加仑为单位)。

代码语言:javascript
复制
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()  

结果:

代码语言:javascript
复制
       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

准备数据下一步是像我们之前所做的那样将数据划分为属性和标签。但是,与上次不同的是,这一次我们将使用列名来创建属性集和标签。执行以下脚本:

代码语言:javascript
复制
X = dataset[['Petrol_Tax', 'Average_Income', 'Paved_Highways',  'ProportionWithLicenses']]
y = dataset['Consumption_In_Millions']

执行以下代码,将我们的数据划分为训练集和测试集:

代码语言:javascript
复制
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()方法执行与前面相同的代码:

代码语言:javascript
复制
from sklearn.linear_model import LinearRegression  
regressor = LinearRegression()  
regressor.fit(X_train, y_train)  

如前所述,在多变量线性回归的情况下,回归模型必须为所有属性找到最优系数。要查看我们的回归模型选择了哪些系数,请执行以下脚本:

代码语言:javascript
复制
coeff_df = pd.DataFrame(regressor.coef_, X.columns, columns=['Coefficient'])  
coeff_df

结果:

代码语言:javascript
复制
                        Coefficient
Petrol_Tax               -40.016660
Average_Income            -0.065413
Paved_Highways            -0.004741
ProportionWithLicenses  1341.862121

这意味着"petrol_tax“每增加一个单位,耗气量就会减少2419万加仑。同样,持有驾照的人口比例每增加一个单位,汽油消耗量就增加13.24亿加仑。我们可以看到,"Average_income“和"Paved_Highways”对耗气量的影响很小。

进行预测要对测试数据进行预测,请执行以下脚本:

代码语言:javascript
复制
y_pred = regressor.predict(X_test)  

要将X_test的实际输出值与预测值进行比较,请执行以下脚本:

代码语言:javascript
复制
df = pd.DataFrame({'Actual': y_test, 'Predicted': y_pred})  
df

结果:

代码语言:javascript
复制
    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的值来实现这一点。执行以下脚本:

代码语言:javascript
复制
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)))  

结果:

代码语言:javascript
复制
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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51795551

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档