4.2最小二乘回归
举例子说明:
import numpy as np
import matplotlib.pyplot as plt
import numpy.linalg as lg
t=np.arange(1,17,1)
#返回[ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16]
y=np.array([4,6.4,8,8.8,9.22,9.5,9.7,9.86,10,10.20,10.32,10.42,10.5,10.55,10.58,10.6])
#返回[[ 4. 6.4 8. 8.8 9.22 9.5 9.7 9.86 10. 10.2 10.32 10.42 10.5 10.55 10.58 10.6 ]]
plt.figure()
plt.plot(t,y,'k*')
# y=at^2+bt+c
print(t)
print(y)
A=np.c_[t**2,t,np.ones(t.shape)]
#A=np.c_[t**2,t,np.ones(16)]
print(A)
w=lg.inv(A.T.dot(A)).dot(A.T).dot(y)
print(w)
plt.plot(t,w[0]*t**2+w[1]*t+w[2])
plt.show()
————————————————
版权声明:本文为CSDN博主「阿慧吖」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/llittleSun/article/details/115045660
①复习np.arrage用法:
np.arange(start, stop, step, dtype=None)
参数解释:
start:起点值;可忽略不写,默认从0开始
stop:终点值;生成的元素不包括结束值
step:步长;可忽略不写,默认步长为1
dtype:默认为None,设置显示元素的数据类型
不同参数个数情况介绍:
一个参数时,参数值为终点值,起点取默认值0,步长取默认值1。
两个参数时,第一个参数为起点值,第二个参数为终点,步长取默认值1。
三个参数时,第一个参数为起点,第二个参数为终点,第三个参数为步长,其中步长支持小数
————————————————
版权声明:本文为CSDN博主「caroline_richboom」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_45154565/article/details/115690186
②复习np.array用法:
import numpy as np
array = np.array([4,6.4,8,8.8,9.22,9.5,9.7,9.86,10,10.20,10.32,10.42,10.5,10.55,10.58,10.6])
print("数组array的值为: ")
print(array)
print("数组array的默认类型为: ")
print(array.dtype)
运行结果:
数组array的值为:
[ 4. 6.4 8. 8.8 9.22 9.5 9.7 9.86 10. 10.2 10.32 10.42
10.5 10.55 10.58 10.6 ]
数组array的默认类型为:
float64
先记住 np.array是变为一个数组,不是向量。
③插曲:python矩阵和数组:
np.dot函数,获取两个元素的乘积
import numpy as np
np.dot(a, b, out=None) #该函数的作用是获取两个元素a,b的乘积.
注意:两个一维向量取dot是两个向量的内积,若A,B为两个向量,则为其矩阵乘法。
A = array([1, 2, 3]) # 数组
B = array([1, 2, 3]) # 数组
print(A*B) # 结果 [1 4 9] 数组相乘
print(dot(A, B)) # 结果 14 结果是数值
A = mat([1, 2, 3]) # 矩阵
B = mat([1, 2, 3]) # 矩阵
print(A*B.T) # 结果 [[14]] 结果是矩阵;.T是取矩阵的转置
C = array([[1, 2], [3, 4]])
D = array([[1, 2], [3, 4]])
print(C*D) # 结果 [[ 1 4] [ 9 16]] 各个元素相乘
print(dot(C, D)) # 结果 [[ 7 10][15 22]] 类似矩阵相乘
④什么是np.c_[ ]函数:
矩阵拼接,
# -*- coding: utf-8 -*
import numpy as np
x_1 = np.array([1, 2, 3, 4, 5, 6]).reshape(2, 3)
x_2 = np.array([3, 2, 1, 8, 9, 6]).reshape(2, 3)
x_new = np.c_[x_1,x_2]
print("x_1 = \n",x_1)
print("x_2 = \n",x_2)
print("x_new = \n",x_new)
输出结果:
x_1 =
[[1 2 3]
[4 5 6]]
x_2 =
[[3 2 1]
[8 9 6]]
x_new =
[[1 2 3 3 2 1]
[4 5 6 8 9 6]]
⑤np.ones()函数:
np.ones()函数返回给定形状和数据类型的新数组,其中元素的值设置为1。此函数与与numpy.zeros()函数非常相似。
⑥矩阵求逆
numpy中求矩阵的逆:numpy.linalg.inv()
w=lg.inv(A.T.dot(A)).dot(A.T).dot(y)这句话什么意思???