乐趣区

关于人工智能:线性回归Sklearn与Excel

作者 |Kaushik Choudhury
编译 |VK
起源 |Towards Data Science

大概 13 年前,David Cournapeau 的 Scikit learn 作为 Google Summer of Code 我的项目的一部分开始。随着工夫的推移,Scikit learn 成为 Python 中最驰名的机器学习库之一。它提供了几种分类、回归和聚类算法,在我看来,它的要害劣势是与 Numpy、Pandas 和 Scipy 无缝集成。

在本文中,我将用 excel 比拟 Scikit-learn 多元线性回归的预测精度。Scikit-learn 提供了许多参数(称为预计器(estimator)的超参数)来微调模型的训练并进步预测的准确性。

在 excel 中,咱们没有太多的货色能够调整回归算法。为了偏心比拟,我将应用默认参数训练 sklearn 回归模型。


目标

此比拟旨在理解 excel 和 Scikit learn 中线性回归的预测精度。另外,我将简要介绍在 excel 中执行线性回归的过程。

示例数据文件

为了进行比拟,咱们将应用 10 万个降水量、最低温度、最高温度和风速的数据集。工作人员在 8 年中的每一天进行测量屡次从而失去了这些数据。

咱们将利用降水量、最低气温和最高气温来预测风速。因而,风速是因变量,其余数据是自变量。


咱们将首先在 excel 上建设和预测风速的线性回归模型。而后咱们将应用 Scikit learn 进行雷同的练习,最初,咱们将比拟预测后果。

要在 excel 中执行线性回归,咱们将关上示例数据文件并单击 excel 功能区中的“Data”选项卡。在“Data”选项卡中,抉择数据分析选项。

提醒:如果看不到“数据分析”选项,请单击 File > Options> Add-ins。抉择“AnalysisToolPak”并单击“Go”按钮,如下所示

单击“Data Analysis”选项,将关上一个弹出窗口,显示 excel 中可用的不同剖析工具。咱们将抉择 Regression 回归,而后单击“OK”。

将显示另一个弹出窗口。“Input Y range 字段中填写风速(因变量)的 Excel 单元格参考。在“Input X Range”中,咱们将为独立变量(即降水量、最低温度和最高温度)提供单元参考。

咱们须要选中复选框“Label”,因为示例数据中的第一行有变量名。

在指定数据后单击“确定”按钮,excel 将建设一个线性回归模型。你能够将其视为 Scikit learn 中的训练(fit 函数)。

Excel 进行计算,并以良好的格局显示信息。在咱们的例子中,excel 能够拟合 R 方为 0.953 的线性回归模型。思考到训练数据集中的 100000 条记录,excel 在不到 7 秒的工夫内执行了线性回归。与其余统计信息一起,它还显示了不同自变量的截距和系数。

基于 excel 线性回归输入,咱们能够把上面的数学关系组合起来。

风速 =2.438+(降水量 *0.026)+(最小温度 *0.393)+(最大温度 *0.395)

咱们将用这个公式来预测测试数据集的风速,测试集数据是 excel 没有用于训练的数据。

例如,对于第一个测试数据集,风速 =2.438+(0.51*0.026)+(17.78*0.393)+(25.56*0.395)=19.55

此外,咱们还计算了预测的残差并绘制了图,以理解其趋势。咱们能够看到,在简直所有的状况下,风速预测值都低于理论值,而风速越快,预测的误差就越大。


让咱们在 Scikit learn 中钻研线性回归。

第 1 步 - 咱们将导入要用于剖析的包。独立变量的值散布在不同的值范畴内,并且不是规范正态分布的,因而咱们须要 StandardScaler 来实现自变量的标准化。

from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LinearRegression
from sklearn.metrics import r2_score
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

第 2 步 - 将训练数据和测试数据别离从 excel 文件读取到 PandasDataframe 作为训练数据和测试数据。

Training_data=pd.read_excel(“Weather.xlsx”, sheet_name=”Sheet1") 

Test_data=pd.read_excel(“Weather Test.xlsx”, sheet_name=”Sheet1") 

在本文中,我将不着重于初步的数据质量检查,如空白值、离群值等以及相应的校对办法

第 3 步 - 在上面的代码中,咱们申明了除“风速”外的所有列数据为自变量,只有“风速”作为因变量用于训练和测试数据。请留神,咱们不会应用“SourceData_test_dependent”进行线性回归,而是将预测值与其进行比拟。

SourceData_train_independent= Training_data.drop(["WindSpeed"], axis=1) # 从训练数据集中删除 WindSpeed 变量

SourceData_train_dependent=Training_data["WindSpeed"].copy() #  训练数据集只有自变量

SourceData_test_independent=Test_data.drop(["WindSpeed"], axis=1)
SourceData_test_dependent=Test_data["WindSpeed"].copy()

第 4 步 - 因为独立变量的范畴是齐全不同的,因而咱们须要调整它以防止有些变量范畴大,有些变量范畴小导致的性能影响。在上面的代码中,自变量被缩放,并别离保留到 X -train 和 X_test。在 y_train 中,相干训练变量被保留而不缩放。

sc_X = StandardScaler()

X_train=sc_X.fit_transform(SourceData_train_independent.values) #缩放自变量

y_train=SourceData_train_dependent # 因变量不须要缩放

X_test=sc_X.transform(SourceData_test_independent)
y_test=SourceData_test_dependent

第 5 步 - 当初咱们将别离输出独立和因变量数据,即 X_train 和 y_train,以训练线性回归模型。出于本文结尾提到的起因,咱们将应用默认参数执行模型拟合。

reg = LinearRegression().fit(X_train, y_train)
print("The Linear regression score on training data is", round(reg.score(X_train, y_train),2))

训练数据的线性回归得分与咱们用 excel 察看到的后果统一。

第 6 步 - 最初,咱们将依据测试集预测风速。

predict=reg.predict(X_test)

从预测风速值和残差散点图能够看出,Sklean 预测值更靠近理论值。

将 Sklearn 和 Excel 残差并行比拟,能够看出随着风速的减少,模型与理论值的偏差都比拟大,但 Sklearn 比 Excel 好。

另一方面,excel 的确预测了相似 sklearn 的风速值范畴。如果一个近似的线性回归模型对你的商业案例来说足够好的话,那么疾速预测方面 excel 是一个不错的抉择。

Excel 能够在与 sklearn 雷同的精度程度上执行线性回归预测。因为 sklearn 能够通过对参数的微调,能够大幅度提高 sklearn 线性回归预测精度,并且更适宜解决简单模型。对于疾速和近似的预测,excel 是一个十分好的抉择,具备可承受的精确度。

原文链接:https://towardsdatascience.co…

欢送关注磐创 AI 博客站:
http://panchuang.net/

sklearn 机器学习中文官网文档:
http://sklearn123.com/

欢送关注磐创博客资源汇总站:
http://docs.panchuang.net/

退出移动版