大数据解析与应用python版本

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)这句话什么意思???

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值