我正在学习python,我想在.csv数据集上执行一个简单的线性回归。我已经成功导入了数据文件。如果我有8个五年的数据,我想做简单的线性回归,我该怎么做呢?数据是按县/州列出的。所以我的头是县,州,1980,1985等等。感谢任何人的帮助。
发布于 2018-08-11 09:09:40
请指定您心目中的目标标签。无论如何,使用sklearn库和pandas。
val= pd.DataFrame(your.data);
val.columns = your.headers;
假设您有一个名为"Price“的目标标头。
from sklearn.linear_model import LinearRegression
X = val.drop('Price',axis=1)
X包含将对其执行LR的数据。现在创建一个线性回归对象。
lm = LinearRegression()
开始管件:
lm.fit()
预测你的目标:
lm.predict(x)
就这样。
发布于 2018-08-16 04:03:13
几乎所有你将要遇到的现实问题都会有两个以上的变量,所以让我们跳过基本的线性回归示例。涉及多个变量的线性回归称为“多元线性回归”。执行多重线性回归的步骤几乎与简单线性回归的步骤相似。不同之处在于评估。您可以使用它来找出哪个因素对预测输出的影响最大,以及不同变量之间的关系。
在本节中,我们将使用多元线性回归根据燃油税(以美分为单位)、人均收入(以美元为单位)、铺设的高速公路(以英里为单位)和拥有驾照的人口比例来预测美国48个州的汽油消耗量(以百万加仑为单位)。
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
这意味着"petrol_tax“每增加一个单位,耗气量就会减少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
https://stackoverflow.com/questions/51795551
复制相似问题