• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    python中最小二乘法详细讲解

    python中在实现一元线性回归时会使用最小二乘法,那你知道最小二乘法是什么吗。其实最小二乘法为分类回归算法的基础,从求解线性透视图中的消失点,m元n次函数的拟合,包括后来学到的神经网络,其思想归根结底全都是最小二乘法。本文向大家介绍python中的最小二乘法。

    一、最小二乘法是什么

    最小二乘法Least Square Method,做为分类回归算法的基础,有着悠久的历史(由马里·勒让德于1806年提出)。

    二、最小二乘法实现原理

    通过最小化误差的平方和寻找数据的最佳函数匹配。

    三、最小二乘法功能

    利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。

    最小二乘法还可用于曲线拟合。其他一些优化问题也可通过最小化能量或最大化熵用最小二乘法来表达。

    四、最小二乘法两种视角描述:“多线→一点”视角与“多点→一线”视角

    1、已知多条近似交汇于同一个点的直线,想求解出一个近似交点:寻找到一个距离所有直线距离平方和最小的点,该点即最小二乘解;

    2、已知多个近似分布于同一直线上的点,想拟合出一个直线方程:设该直线方程为y=kx+b,调整参数k和b,使得所有点到该直线的距离平方之和最小,设此时满足要求的k=k0,b=b0,则直线方程为y=k0x+b0。

    实例扩展:

    最小二乘法矩阵

    #! /usr/bin/env python
    # -*- coding: utf-8 -*-
    import numpy as np
    def calc_left_k_mat(k):
     """
     获得左侧k矩阵
     :param k:
     :return:
     """
     k_mat = []
     for i in range(k + 1):
      now_line = []
      for j in range(k + 1):
       now_line.append(j + i)
      k_mat.append(now_line)
     return k_mat
    def calc_right_k_mat(k):
     """
     计算右侧矩阵
     :param k:
     :return:
     """
     k_mat = []
     for i in range(k + 1):
      k_mat.append([i, i + 1])
     return k_mat
    def pow_k(x, k):
     """
     计算x列表中的k次方和
     :param x: 点集合的x坐标
     :param k: k值
     :return:
     """
     sum = 0
     for i in x:
      sum += i ** k
     return sum
    def get_left_mat_with_x(k_mat, k):
     """
     将 左侧k矩阵运算得到左侧新的矩阵
     :param k_mat:
     :param k:
     :return:
     """
     left_mat = []
     for kl in k_mat:
      now_data = []
      for k in kl:
       now_data.append(pow_k(x, k))
      left_mat.append(now_data)
     return left_mat
    def get_right_mat_with(right_k_mat):
     """
     将 右侧k矩阵运算得到右侧新的矩阵
     :param right_k_mat:
     :return:
     """
     right_mat = []
     for i in range(len(right_k_mat)):
      sum = 0
      for xL, yL in zip(x, y):
       a = (xL ** right_k_mat[i][0]) * (yL ** right_k_mat[i][1])
       sum += a
      right_mat.append(sum)
     return right_mat
    def fuse_mat(left, right):
     """
     融合两个矩阵
     :param left:
     :param right:
     :return:
     """
     new_mat = []
     for i in range(len(left)):
      asd = np.append(left[i], right[i])
      new_mat.append(list(asd))
     return new_mat
    if __name__ == '__main__':
     k = 3
     x = [1, 2, 3]
     y = [1, 2, 3]
     # 计算原始左侧K矩阵
     left_k_mat = calc_left_k_mat(k)
     print("原始左侧K矩阵")
     print(left_k_mat)
     # 计算原始右侧K矩阵
     right_k_mat = calc_right_k_mat(k)
     print("原始右侧k矩阵")
     print(right_k_mat)
     # 计算左侧 k 矩阵
     new_left_mat = get_left_mat_with_x(k_mat=left_k_mat, k=k)
     # 计算右侧 k 矩阵
     new_right_mat = get_right_mat_with(right_k_mat=right_k_mat)
     print("计算后左侧K矩阵")
     print(new_left_mat)
     print("计算后右侧侧K矩阵")
     print(new_right_mat)
     print("-----" * 10)
     # 融合两个矩阵 左侧 矩阵每一行增加 右侧矩阵的对应行
     new_all = fuse_mat(new_left_mat, new_right_mat)
     print("完整矩阵")
     print(new_all)

    到此这篇关于python中最小二乘法详细讲解的文章就介绍到这了,更多相关python中最小二乘法如何理解内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    您可能感兴趣的文章:
    • Python实现曲线拟合的最小二乘法
    • 最小二乘法及其python实现详解
    • python实现最小二乘法线性拟合
    • Python最小二乘法矩阵
    • Python 普通最小二乘法(OLS)进行多项式拟合的方法
    • Python基于最小二乘法实现曲线拟合示例
    • Python中实现最小二乘法思路及实现代码
    • python中matplotlib实现最小二乘法拟合的过程详解
    • 利用Python实现最小二乘法与梯度下降算法
    上一篇:python中scipy.stats产生随机数实例讲解
    下一篇:如何用Matlab和Python读取Netcdf文件
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    python中最小二乘法详细讲解 python,中,最小,二,乘法,详细,