python中最小二乘法詳細(xì)講解
python中在實(shí)現(xiàn)一元線性回歸時(shí)會(huì)使用最小二乘法,那你知道最小二乘法是什么嗎。其實(shí)最小二乘法為分類回歸算法的基礎(chǔ),從求解線性透視圖中的消失點(diǎn),m元n次函數(shù)的擬合,包括后來學(xué)到的神經(jīng)網(wǎng)絡(luò),其思想歸根結(jié)底全都是最小二乘法。本文向大家介紹python中的最小二乘法。
一、最小二乘法是什么
最小二乘法Least Square Method,做為分類回歸算法的基礎(chǔ),有著悠久的歷史(由馬里·勒讓德于1806年提出)。
二、最小二乘法實(shí)現(xiàn)原理
通過最小化誤差的平方和尋找數(shù)據(jù)的最佳函數(shù)匹配。
三、最小二乘法功能
利用最小二乘法可以簡便地求得未知的數(shù)據(jù),并使得這些求得的數(shù)據(jù)與實(shí)際數(shù)據(jù)之間誤差的平方和為最小。
最小二乘法還可用于曲線擬合。其他一些優(yōu)化問題也可通過最小化能量或最大化熵用最小二乘法來表達(dá)。
四、最小二乘法兩種視角描述:“多線→一點(diǎn)”視角與“多點(diǎn)→一線”視角
1、已知多條近似交匯于同一個(gè)點(diǎn)的直線,想求解出一個(gè)近似交點(diǎn):尋找到一個(gè)距離所有直線距離平方和最小的點(diǎn),該點(diǎn)即最小二乘解;
2、已知多個(gè)近似分布于同一直線上的點(diǎn),想擬合出一個(gè)直線方程:設(shè)該直線方程為y=kx+b,調(diào)整參數(shù)k和b,使得所有點(diǎn)到該直線的距離平方之和最小,設(shè)此時(shí)滿足要求的k=k0,b=b0,則直線方程為y=k0x+b0。
實(shí)例擴(kuò)展:
最小二乘法矩陣
#! /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): """ 計(jì)算右側(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): """ 計(jì)算x列表中的k次方和 :param x: 點(diǎn)集合的x坐標(biāo) :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矩陣運(yùn)算得到左側(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矩陣運(yùn)算得到右側(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): """ 融合兩個(gè)矩陣 :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] # 計(jì)算原始左側(cè)K矩陣 left_k_mat = calc_left_k_mat(k) print("原始左側(cè)K矩陣") print(left_k_mat) # 計(jì)算原始右側(cè)K矩陣 right_k_mat = calc_right_k_mat(k) print("原始右側(cè)k矩陣") print(right_k_mat) # 計(jì)算左側(cè) k 矩陣 new_left_mat = get_left_mat_with_x(k_mat=left_k_mat, k=k) # 計(jì)算右側(cè) k 矩陣 new_right_mat = get_right_mat_with(right_k_mat=right_k_mat) print("計(jì)算后左側(cè)K矩陣") print(new_left_mat) print("計(jì)算后右側(cè)側(cè)K矩陣") print(new_right_mat) print("-----" * 10) # 融合兩個(gè)矩陣 左側(cè) 矩陣每一行增加 右側(cè)矩陣的對(duì)應(yīng)行 new_all = fuse_mat(new_left_mat, new_right_mat) print("完整矩陣") print(new_all)
到此這篇關(guān)于python中最小二乘法詳細(xì)講解的文章就介紹到這了,更多相關(guān)python中最小二乘法如何理解內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python使用BeautifulSoup分析網(wǎng)頁信息的方法
這篇文章主要介紹了python使用BeautifulSoup分析網(wǎng)頁信息的方法,涉及Python使用BeautifulSoup模塊分析網(wǎng)頁信息的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04Python釘釘報(bào)警及Zabbix集成釘釘報(bào)警的示例代碼
這篇文章主要介紹了Python釘釘報(bào)警及Zabbix集成釘釘報(bào)警的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08教你學(xué)會(huì)使用Python正則表達(dá)式
正則表達(dá)式是一個(gè)特殊的字符序列,它能幫助你方便的檢查一個(gè)字符串是否與某種模式匹配。 Python 自1.5版本起增加了re 模塊,它提供 Perl 風(fēng)格的正則表達(dá)式模式。re 模塊使 Python 語言擁有全部的正則表達(dá)式功能。2017-09-09PyQt 5 設(shè)置Logo圖標(biāo)和Title標(biāo)題的操作
這篇文章主要介紹了PyQt 5 設(shè)置Logo圖標(biāo)和Title標(biāo)題的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-03-03python中is與雙等于號(hào)“==”的區(qū)別示例詳解
Python中有很多運(yùn)算符,下面這篇文章主要給大家介紹了關(guān)于python中is與雙等于號(hào)“==”區(qū)別的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-11-11python中對(duì)開區(qū)間和閉區(qū)間的理解
這篇文章主要介紹了python中對(duì)開區(qū)間和閉區(qū)間的理解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07django 實(shí)現(xiàn)將本地圖片存入數(shù)據(jù)庫,并能顯示在web上的示例
今天小編就為大家分享一篇django 實(shí)現(xiàn)將本地圖片存入數(shù)據(jù)庫,并能顯示在web上的示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-08-08