geekdoc-python-zh/docs/askpython/lasso-regression.md

3.8 KiB
Raw Permalink Blame History

Python 中的套索回归

原文:https://www.askpython.com/python/examples/lasso-regression

读者朋友们,你们好!在上一篇文章中,我们详细讨论了 Python 编程中的岭回归。现在,我们将讨论 Python 中的套索回归

所以,让我们开始吧!


一、什么是套索回归?

在数据科学和机器学习领域,我们的主要目标是根据数据值的类型,通过各种算法对现实生活中的问题进行预测。

线性回归就是这样一种算法。使用该算法,我们可以为我们的模型定义最佳拟合线,即了解数据集变量之间的相关性。

它帮助我们找出数据集的因变量和自变量之间的关系,以建立预测的估计模型。

线性回归的问题:

  • 众所周知,线性回归计算的是模型每个变量的系数。随着数据复杂性的增加,系数的值变成更高的值,这反过来使得模型对提供给它的进一步输入敏感。
  • 这反过来又让模型有点不稳定!

解–套索回归

所以,我们开始解决这个问题。拉索回归,也称为L1 regression就足够了。使用套索回归,我们倾向于用系数的值来惩罚模型。因此,它通过包含模型变量的额外成本来操纵损失函数,而该模型恰好具有大的系数值。

它针对绝对系数值对模型进行惩罚。这样,它让系数的值(对预测变量没有贡献)变为零。除此之外,它从模型中移除那些输入特征。

因此,我们可以说,

Lasso = loss+(λ L1 _ penalty)*

这里,λ是在惩罚值的加权处进行检查的超参数。


套索回归——一种实用的方法

在本例中,我们利用了自行车租赁计数预测数据集。你可以在这里找到数据集

最初,我们使用 read_csv()函数将数据集加载到 Python 环境中。除此之外,我们使用 train_test_split() 函数将数据集分割成训练和测试数据。

对于这个例子,我们已经设置了 MAPE 作为误差度量来评估 lasso 回归惩罚模型。

Python 的sklearn.linear_model library,为我们提供了lasso()函数,在数据集上建立模型。

举例:

import os
import pandas

#Changing the current working directory
os.chdir("D:/Ediwsor_Project - Bike_Rental_Count")
BIKE = pandas.read_csv("day.csv")

bike = BIKE.copy()
categorical_col_updated = ['season','yr','mnth','weathersit','holiday']
bike = pandas.get_dummies(bike, columns = categorical_col_updated)
#Separating the depenedent and independent data variables into two dataframes.
from sklearn.model_selection import train_test_split 
X = bike.drop(['cnt'],axis=1) 
Y = bike['cnt']

import numpy as np
def MAPE(Y_actual,Y_Predicted):
    mape = np.mean(np.abs((Y_actual - Y_Predicted)/Y_actual))*100
    return mape

from sklearn.linear_model import Lasso
lasso_model = Lasso(alpha=1.0)
lasso=lasso_model.fit(X_train , Y_train)
lasso_predict = lasso.predict(X_test)
Lasso_MAPE = MAPE(Y_test,lasso_predict)
print("MAPE value: ",Lasso_MAPE)
Accuracy = 100 - Lasso_MAPE
print('Accuracy of Lasso Regression: {:0.2f}%.'.format(Accuracy))

输出:

MAPE value:  16.55305612241603
Accuracy of Lasso Regression: 83.45%.


结论

到此,我们就结束了这个话题。如果你遇到任何问题,请随时在下面评论。

建议您尝试使用其他数据集的 Lasso 回归概念,并在评论部分告诉我们您的体验!

更多与 Python 相关的帖子,敬请关注,在此之前,祝你学习愉快!!🙂