一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - python中最小二乘法詳細講解

python中最小二乘法詳細講解

2021-09-06 00:20宋宋大人 Python

在本篇文章里小編給大家整理的是一篇關于python中最小二乘法詳細講解內容,需要的朋友們可以參考下。

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

一、最小二乘法是什么

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

二、最小二乘法實現原理

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

三、最小二乘法功能

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

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

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

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

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

實例擴展:

最小二乘法矩陣

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
#! /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中最小二乘法如何理解內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://www.py.cn/jishu/jichu/24530.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 黑人破中国女人处 | 亚洲欧美精品一区天堂久久 | 农村老妇1乱69系列小说 | 强漂亮白丝女教师小说 | 俄罗斯激情性孕妇孕交大全 | 国产精品视频免费一区二区三区 | 丝袜性爱 | 999久久久免费精品国产牛牛 | 美女模特被c免费视频 | youjizzxxx在线观看 | 变态 另类 人妖小说 | 久久视频在线视频观看天天看视频 | 亚洲男女网站 | 国产免费又粗又猛又爽视频国产 | 国产精品欧美亚洲韩国日本99 | 3d肉浦团在线观看 | 无人区免费一二三四乱码 | 久久久免费热线精品频 | 亚洲va欧美va天堂v国产综合 | 99超级碰碰成人香蕉网 | 亚洲一区二区精品视频 | 青青草国产免费久久久91 | 無码一区中文字幕少妇熟女网站 | 亚洲欧美一区二区三区在线观看 | 香蕉久久久久久狠狠色 | 亚洲精选在线观看 | 国产资源视频在线观看 | chinese一tk视频丨vk | 狠狠五月天中文字幕 | 日韩欧美一区二区三区免费看 | 国产在线视频色综合 | 美女张开下身让男人桶 | 亚洲 色 欧美 爱 视频 日韩 | 国产91一区二区在线播放不卡 | 精品91自产拍在线 | 色老板最新网站视频地址 | 日韩欧美不卡视频 | 皇上好大好硬好涨好深好爽 | x8x8在线永久免费观看 | 国内揄拍国内精品久久 | 日本护士撒尿xxxx18 |