主頁 > 知識庫 > python中最小二乘法詳細講解

python中最小二乘法詳細講解

熱門標簽:深圳網(wǎng)絡(luò)外呼系統(tǒng)代理商 柳州正規(guī)電銷機器人收費 鎮(zhèn)江人工外呼系統(tǒng)供應(yīng)商 申請辦個400電話號碼 千呼ai電話機器人免費 騰訊地圖標注有什么版本 外呼系統(tǒng)前面有錄音播放嗎 高德地圖標注字母 400電話辦理費用收費

python中在實現(xiàn)一元線性回歸時會使用最小二乘法,那你知道最小二乘法是什么嗎。其實最小二乘法為分類回歸算法的基礎(chǔ),從求解線性透視圖中的消失點,m元n次函數(shù)的擬合,包括后來學(xué)到的神經(jīng)網(wǎng)絡(luò),其思想歸根結(jié)底全都是最小二乘法。本文向大家介紹python中的最小二乘法。

一、最小二乘法是什么

最小二乘法Least Square Method,做為分類回歸算法的基礎(chǔ),有著悠久的歷史(由馬里·勒讓德于1806年提出)。

二、最小二乘法實現(xiàn)原理

通過最小化誤差的平方和尋找數(shù)據(jù)的最佳函數(shù)匹配。

三、最小二乘法功能

利用最小二乘法可以簡便地求得未知的數(shù)據(jù),并使得這些求得的數(shù)據(jù)與實際數(shù)據(jù)之間誤差的平方和為最小。

最小二乘法還可用于曲線擬合。其他一些優(yōu)化問題也可通過最小化能量或最大化熵用最小二乘法來表達。

四、最小二乘法兩種視角描述:“多線→一點”視角與“多點→一線”視角

1、已知多條近似交匯于同一個點的直線,想求解出一個近似交點:尋找到一個距離所有直線距離平方和最小的點,該點即最小二乘解;

2、已知多個近似分布于同一直線上的點,想擬合出一個直線方程:設(shè)該直線方程為y=kx+b,調(diào)整參數(shù)k和b,使得所有點到該直線的距離平方之和最小,設(shè)此時滿足要求的k=k0,b=b0,則直線方程為y=k0x+b0。

實例擴展:

最小二乘法矩陣

#! /usr/bin/env python
# -*- coding: utf-8 -*-
import numpy as np
def calc_left_k_mat(k):
 """
 獲得左側(cè)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):
 """
 計算右側(cè)矩陣
 :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):
 """
 將 左側(cè)k矩陣運算得到左側(cè)新的矩陣
 :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):
 """
 將 右側(cè)k矩陣運算得到右側(cè)新的矩陣
 :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]
 # 計算原始左側(cè)K矩陣
 left_k_mat = calc_left_k_mat(k)
 print("原始左側(cè)K矩陣")
 print(left_k_mat)
 # 計算原始右側(cè)K矩陣
 right_k_mat = calc_right_k_mat(k)
 print("原始右側(cè)k矩陣")
 print(right_k_mat)
 # 計算左側(cè) k 矩陣
 new_left_mat = get_left_mat_with_x(k_mat=left_k_mat, k=k)
 # 計算右側(cè) k 矩陣
 new_right_mat = get_right_mat_with(right_k_mat=right_k_mat)
 print("計算后左側(cè)K矩陣")
 print(new_left_mat)
 print("計算后右側(cè)側(cè)K矩陣")
 print(new_right_mat)
 print("-----" * 10)
 # 融合兩個矩陣 左側(cè) 矩陣每一行增加 右側(cè)矩陣的對應(yīng)行
 new_all = fuse_mat(new_left_mat, new_right_mat)
 print("完整矩陣")
 print(new_all)

到此這篇關(guān)于python中最小二乘法詳細講解的文章就介紹到這了,更多相關(guān)python中最小二乘法如何理解內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Python實現(xiàn)曲線擬合的最小二乘法
  • 最小二乘法及其python實現(xiàn)詳解
  • python實現(xiàn)最小二乘法線性擬合
  • Python最小二乘法矩陣
  • Python 普通最小二乘法(OLS)進行多項式擬合的方法
  • Python基于最小二乘法實現(xiàn)曲線擬合示例
  • Python中實現(xiàn)最小二乘法思路及實現(xiàn)代碼
  • python中matplotlib實現(xiàn)最小二乘法擬合的過程詳解
  • 利用Python實現(xiàn)最小二乘法與梯度下降算法

標簽:合肥 海南 烏蘭察布 大慶 平頂山 郴州 哈爾濱 烏蘭察布

巨人網(wǎng)絡(luò)通訊聲明:本文標題《python中最小二乘法詳細講解》,本文關(guān)鍵詞  python,中,最小,二,乘法,詳細,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《python中最小二乘法詳細講解》相關(guān)的同類信息!
  • 本頁收集關(guān)于python中最小二乘法詳細講解的相關(guān)信息資訊供網(wǎng)民參考!
  • 企业400电话

    智能AI客服机器人
    15000

    在线订购

    合计11份范本:公司章程+合伙协议+出资协议+合作协议+股权转让协议+增资扩股协议+股权激励+股东会决议+董事会决议

    推薦文章