人工智能 解析解法解决多元线性回归问题
1.导入所需模块
Import numpy as np
2.准备训练集X,Y(利用np.random创建虚拟数据集)
#创建随机数种子,保证每次生成随机数的方法一致,方便测试模型
np.random seed(1)
#创建训练集X矩阵,X.shape=(n,m)
X=3*np.random randn(5,100) #randn(n,m):随机生成服从标准正态分布的一系列的随机数,n行m列二维矩阵
#创建截距项b做准备,b=w0*X0
X0=np.ones((1,100))
#将X0与X拼接到一起
X_b=np.vstack([X0,X])
#创建真实w用于创建真实的Y
w_real=np.array([3,3,4,5,1,2]).reshape(6,1)
#创建训练集中的Y矩阵,即Y的真实集Y=Y_hat+error
Y=w_real.T.dot(X_b)+np.random.randn(1,100)
3.解析解法求参数w
#解析解法求出模型w
w_model=np.linalg.inv(X_b.dot(X_b.T)).dot(X_b).dot(Y.t) #np.linalg.inv:求逆矩阵
print(w_modle)
4.给定一组新X,预测Y
X_new=np.array([1,0.5,0.3,0.6,0.7,0.2,0.4,0.9,0.5,1.5]).reshape(5,2)
print(X_new)
X_new_b=np.vstack([np.ones((1,2)),X_new])
print(X_new_b)
Y_hat=w_model.T.dot(X_new_b)
print(Y_hat)