返回顶部
首页 > 资讯 > 后端开发 > Python >python中怎么实现一个抽样回归算法
  • 926
分享到

python中怎么实现一个抽样回归算法

2023-06-19 10:06:41 926人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

本篇文章为大家展示了python中怎么实现一个抽样回归算法,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。12 抽查回归算法1 算法概要讨论以下算法 线性算法线性回归RIdge 岭回归LASSO 线性

本篇文章为大家展示了python中怎么实现一个抽样回归算法,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

12 抽查回归算法

1 算法概要

讨论以下算法 线性算法

  • 线性回归

  • RIdge 岭回归

  • LASSO 线性回归

  • Elastic Net Regression 没找到翻译,是一种衍生出来的算法。 非线性算法

  • K近邻

  • CART 决策树

  • SVM 支持向量机 这三种不是分类方法么, 怎么也在这里讨论, 等会通过具体的例子来看看。

解决的问题是波士顿房价问题。 所有参数都是数字型的。 用上述算法来做抽样, 然后用mean squared error 均方误差 来估计结果。

12.1 线性学习算法

12.1.1 线性回归

线性回归假设输入变量有是遵守高斯分布。 而每种特征和结果都有关联, 但是各自之间并没有强关联。

线性回归, 就是把样本的点拟合成一条线, 这条线最大程度可以反应数据的规律。

# Linear Regressionfrom pandas import read_csvfrom sklearn.model_selection import KFoldfrom sklearn.model_selection import cross_val_scorefrom sklearn.linear_model import LinearRegressionfilename = 'housing.csv'names = ['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD', 'TAX', 'PTRATIO','B', 'LSTAT', 'MEDV']dataframe = read_csv(filename, delim_whitespace=True, names=names)array = dataframe.valuesX = array[:,0:13]Y = array[:,13]kfold = KFold(n_splits=10, random_state=7)model = LinearRegression()scoring = 'neg_mean_squared_error'results = cross_val_score(model, X, Y, cv=kfold, scoring=scoring)print(results.mean())# -34.7052559445

12.2.2 岭回归

什么叫岭回归呢。 它是线性回归的一种扩展。 这里可以简单说两句几个基本概念。

  • 线性回归的基本套路: 线性回归的这类问题。 基本过程是这样的:首先要有预测的模型, 然后要计算损失函数,得到问题表达式, 第三就是需要有算法来计算损失函数的系数, 使得最优(可能行最大或者误差最小)

    • 预测的模型, 线性的。

    • 计算损失函数。 两种方法 1) 极大似然估计。 这个呢就是假设样本属于某种分布, 然后得出问题:如何复制参数使得这些样本出现的概率最大。 就是所谓极大似然。 2) 最小二乘。 就是计算模型得到的值和样本结果之间差平方和。 问题是如何使这个表达式最小。

    • 上面两种问题殊途同归. - 如何证明? 下面来计算这个问题 看用何种算法。

  • 1) 梯度下降法 基本的思路就是初始一个theta向量, 然后计算一个value. 更新theta, 原来的theta减去用步长和最快下降的方向的乘积. 方向就是对每个theta求导. 之后继续计算结果直接收敛.

  • 可能是局部收敛. 所以初始点很重要.

  1. 正规方程. 理解就是矩阵直接求逆然后来求导.

  2. 高斯牛顿法. 应用泰勒展开,

  • 问题的引申. 3) 这种方式呢容易过拟合, 毕竟需要拟合所有的点, 因为是求解得到的. 所以引入了正则化.

    • 首先这个时候叫lasso 又叫线性回归的L1正则化

    • 这时引入了两种全新的求极值解法坐标轴下降法(coordinate descent)和最小角回归法( Least Angle Regression, LARS)

    1. 如果正则项是平方的形式, 就是岭回归. 这时候的问题容易有维数过多. - 为什么.

    2. 正则项是拉姆达乘以一个的 一次的绝对值. 对这个问题求解, 问题是绝对值是不连续的 不可导 是跳跃的, 这样呢就不能用梯度下降和正规方程的做法.

这节是岭回归, 下一节是LASSO 回归

# Ridge Regressionfrom pandas import read_csvfrom sklearn.model_selection import KFoldfrom sklearn.model_selection import cross_val_scorefrom sklearn.linear_model import Ridgefilename = 'housing.csv'names = ['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD', 'TAX', 'PTRATIO','B', 'LSTAT', 'MEDV']dataframe = read_csv(filename, delim_whitespace=True, names=names)array = dataframe.valuesX = array[:,0:13]Y = array[:,13]num_folds = 10kfold = KFold(n_splits=10, random_state=7)model = Ridge()scoring = 'neg_mean_squared_error'results = cross_val_score(model, X, Y, cv=kfold, scoring=scoring)print(results.mean())# -34.0782462093

12.2.3 LASSO 回归

# Lasso Regressionfrom pandas import read_csvfrom sklearn.model_selection import KFoldfrom sklearn.model_selection import cross_val_scorefrom sklearn.linear_model import Lassofilename = 'housing.csv'names = ['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD', 'TAX', 'PTRATIO','B', 'LSTAT', 'MEDV']dataframe = read_csv(filename, delim_whitespace=False, names=names)array = dataframe.valuesX = array[:,0:13]Y = array[:,13]kfold = KFold(n_splits=10, random_state=7)model = Lasso()scoring = 'neg_mean_squared_error'results = cross_val_score(model, X, Y, cv=kfold, scoring=scoring)print(results.mean())# -34.4640845883

12.2.4 ElasticNet 回归

ElasticNet 回归综合了岭回归和LASSO 回归, 也就是说添加了L1正则, 和L2正则。 来看看效果。

# ElasticNet Regressionfrom pandas import read_csvfrom sklearn.model_selection import KFoldfrom sklearn.model_selection import cross_val_scorefrom sklearn.linear_model import ElasticNetfilename = 'housing.csv'names = ['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD', 'TAX', 'PTRATIO','B', 'LSTAT', 'MEDV']dataframe = read_csv(filename, delim_whitespace=True, names=names)array = dataframe.valuesX = array[:,0:13]Y = array[:,13]kfold = KFold(n_splits=10, random_state=7)model = ElasticNet()scoring = 'neg_mean_squared_error'results = cross_val_score(model, X, Y, cv=kfold, scoring=scoring)print(results.mean())# -31.1645737142

12.3 非线性机器学习模型

12.3.1 K近邻

K近邻是基于距离的一种算法。 在训练集中找到k个和这个新的纪录的距离最近的。 一个平均值作为预测结果。

  • 因为每次都要比较所有的距离, 这个算法的预测过程是比较慢的。

  • 距离, 默认是闵科夫斯基距离。 还有欧氏距离和曼哈顿距离。

# KNN Regressionfrom pandas import read_csvfrom sklearn.model_selection import KFoldfrom sklearn.model_selection import cross_val_scorefrom sklearn.neighbors import KNeighborsRegressorfilename = 'housing.csv'names = ['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD', 'TAX', 'PTRATIO','B', 'LSTAT', 'MEDV']dataframe = read_csv(filename, delim_whitespace=False, names=names)array = dataframe.valuesX = array[:,0:13]Y = array[:,13]kfold = KFold(n_splits=10, random_state=7)model = KNeighborsRegressor()scoring = 'neg_mean_squared_error'results = cross_val_score(model, X, Y, cv=kfold, scoring=scoring)print(results.mean())# -107.28683898

12.3.2 CART

# Decision Tree Regressionfrom pandas import read_csvfrom sklearn.model_selection import KFoldfrom sklearn.model_selection import cross_val_scorefrom sklearn.tree import DecisionTreeRegressorfilename = 'housing.csv'names = ['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD', 'TAX', 'PTRATIO','B', 'LSTAT', 'MEDV']dataframe = read_csv(filename, delim_whitespace=False, names=names)array = dataframe.valuesX = array[:,0:13]Y = array[:,13]kfold = KFold(n_splits=10, random_state=7)model = DecisionTreeRegressor()scoring = 'neg_mean_squared_error'results = cross_val_score(model, X, Y, cv=kfold, scoring=scoring)print(results.mean())# -34.74746

12.3.4 SVM

注意 这里的SVM 是基于LIBSVM 包的。

# SVM Regressionfrom pandas import read_csvfrom sklearn.model_selection import KFoldfrom sklearn.model_selection import cross_val_scorefrom sklearn.svm import SVRfilename = 'housing.csv'names = ['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD', 'TAX', 'PTRATIO','B', 'LSTAT', 'MEDV']dataframe = read_csv(filename, delim_whitespace=False, names=names)array = dataframe.valuesX = array[:,0:13]Y = array[:,13]num_folds = 10kfold = KFold(n_splits=10, random_state=7)model = SVR()scoring = 'neg_mean_squared_error'results = cross_val_score(model, X, Y, cv=kfold, scoring=scoring)print(results.mean())# -91.0478243332

上述内容就是Python中怎么实现一个抽样回归算法,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网Python频道。

--结束END--

本文标题: python中怎么实现一个抽样回归算法

本文链接: https://lsjlt.com/news/295356.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • python中怎么实现一个抽样回归算法
    本篇文章为大家展示了python中怎么实现一个抽样回归算法,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。12 抽查回归算法1 算法概要讨论以下算法 线性算法线性回归RIdge 岭回归LASSO 线性...
    99+
    2023-06-19
  • c# 中怎么实现一个阶乘递归算法
    c# 中怎么实现一个阶乘递归算法,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。using System;using System.Collections...
    99+
    2023-06-03
  • python实现线性回归算法
    本文用python实现线性回归算法,供大家参考,具体内容如下 # -*- coding: utf-8 -*- """ Created on Fri Oct 11 19:25:11...
    99+
    2024-04-02
  • python中怎么实现抽样分类方法
    这期内容当中小编将会给大家带来有关python中怎么实现抽样分类方法,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。11.1 算法抽查在实践之前你并不知道哪种算法对你的的数据效果最好。 你需要尝试用不同的算...
    99+
    2023-06-19
  • Python中怎么正确实现一个算法
    本篇文章给大家分享的是有关Python中怎么正确实现一个算法,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Python算法具体操作代码示例:# -*- co...
    99+
    2023-06-17
  • python一元线性回归怎么实现
    在Python中,可以使用NumPy和Scikit-learn库来实现一元线性回归。以下是一元线性回归的实现步骤:1. 导入所需的库...
    99+
    2023-08-18
    python
  • Python实现归一化算法详情
    目录1.前言                         ...
    99+
    2024-04-02
  • Python如何实现归一化算法
    今天小编给大家分享一下Python如何实现归一化算法的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1.前言   &...
    99+
    2023-06-29
  • 利用java 怎么实现一个归并排序算法
    本篇文章给大家分享的是有关利用java 怎么实现一个归并排序算法,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。 归并排序算法,顾名思义,是一种先分再合的算法,其算法思...
    99+
    2023-05-31
    java 归并排序算法 ava
  • python中怎么实现一个Progressive Morphological Filter算法
    python中怎么实现一个Progressive Morphological Filter算法,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1. 引言机载LiD...
    99+
    2023-06-20
  • C语言中怎样实现一个排序算法
    本篇文章给大家分享的是有关C语言中怎样实现一个排序算法,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。冒泡排序  冒泡排序(英语:BubbleS...
    99+
    2024-04-02
  • Python中怎么实现一个遗传算法框架
    本篇文章给大家分享的是有关Python中怎么实现一个遗传算法框架,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。算法特点以决策变量的编码作为运算对象,使得优化过程借鉴生物学中的概...
    99+
    2023-06-17
  • Python中怎么实现一个简单遗传算法
    今天就跟大家聊聊有关Python中怎么实现一个简单遗传算法,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。遗传算法遗传算法是模仿自然选择过程的优化算法。 他们没有使用"数学技...
    99+
    2023-06-16
  • 如何在Java与Python实现一个归并排序算法
    如何在Java与Python实现一个归并排序算法?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。归并排序里运用到算法里很重要的一个思想——分治法:将原问题分解为几个规模较小但...
    99+
    2023-05-31
    归并排序 java python
  • Python中怎么实现一个个税计算器
    Python中怎么实现一个个税计算器,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。计税方法科普个税方法这里需要知道的知识点:个税起征点调到 5000;累积预扣法:本期应预扣...
    99+
    2023-06-16
  • C++中怎么实现一个 kmp算法
    本篇文章给大家分享的是有关C++中怎么实现一个 kmp算法,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。C++ kmp算法模板参数说明const T *source 待匹配的字...
    99+
    2023-06-17
  • Java中怎么实现一个TFIDF算法
    这篇文章给大家介绍Java中怎么实现一个TFIDF算法,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。算法介绍最近要做领域概念的提取,TFIDF作为一个很经典的算法可以作为其中的一步处理。计算公式比较简单,如下:预处理由...
    99+
    2023-06-02
  • 机器学习线性回归算法怎么实现
    实现机器学习线性回归算法一般需要以下步骤:1. 导入所需的库:例如,numpy用于数值计算,matplotlib用于可视化数据等。2...
    99+
    2023-09-21
    机器学习
  • Python怎么实现线性回归
    Python怎么实现线性回归,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1、概述(1)人工智能学习        &n...
    99+
    2023-06-26
  • C#中怎么实现一个递归树
    这期内容当中小编将会给大家带来有关C#中怎么实现一个递归树,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。C#递归树实现实例:从父结点加字节点,注释的是把字节点向父结点上加//将数据填充到dataTable...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作