python矩阵最小二乘法解方程_Python最小二乘法矩阵

最小二乘法矩阵

#! /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)

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。如果你想了解更多相关内容请查看下面相关链接

时间: 2018-12-31

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
学习人工智能,机器学习都离不开数学基础和编程知识。无论你是数据科学的初学者还是已经从事人工智能开发的有经验人员,这门课都适合于你。为什么这么说?首先人工智能和机器学习本质上就是算法,而算法就是数学及统计学以及编程的结合。当前市场上有许多开源的软件包如SKLEARN确实可以帮助没经验的或缺乏数学或算法基础的人实现机器学习模型及预测,但这些工具无法使你真正懂得算法的本质或来源,或者无法使你在不同场合下灵活运用及改进算法。记住,在实际工作中找到适合应用场景的解决方案是最难但是最重要的。但这离不开数学基础和算法理解。比如,线性回归是一类普遍的机器学习算法,所有的机器学习软件都有现成的方法实现模型,但如果在训练数据中加入几条新数据,那么新建立的模型和原来的模型有和联系或不同?再比如,为什么深度神经网络中的Sigmoid函数一般只用到输出层?神经网络的向后传播理论如何与泰勒展开和复合函数的偏导数联系在一起?人工智能中推荐系统和文字向量如何与矩阵的奇异分解以及特征向量联系?模型中对标签进行数据变换如何影响预测值?所有这些问题的答案,你都可以从本课中找到线索。本课系统地讲述了有关人工智能,机器学习背后的数学知识。特别指出,微积分和代数知识是本课的核心。统计学基础被安排在另外的课程中。除此之外,我在每一章节或主要知识点后都安排了各类程序以解释和回顾所学到的东西。最后要提到的是,这不是一门工程项目实践课。但我会另外专门安排有关人工智能,机器学习的实践课程
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值