24/8/12算法笔记 复习_线性回归

import numpy as np#导入包
X = np.array([[1,1],[2,1]])#构造矩阵
y = np.array([14,10])

np.linalg.solve(X,y) #linalg是线性代数,用于求解线性方程AX = b,solve计算线性代数回归问题

X.T#转置
a = X.T.dot(X)#矩阵乘法

B = np.linalg.inv(a)#求逆矩阵

from sklearn.linear_model import LinearRegression #导入线性回归代数
     
model = LinearRegression(fit_intercept=False)   #不计算斜率,没有使用正规方程

model.fit(X,y)#用于训练模型

model.coef_   #结果,返回值:系数,斜率
model.intercept_  #表示截距项

y = y+12        #带截距的线性方程

X = np.array([[1,2],[3,4]]) #假设X是一个numpy数组

ones_array = np.full((X.shape[0],1),fill_value = 1)#使用np.full创建形状匹配X的数组

X = np.concatenate([X,ones_array],axis = 1)#使用np.concatenate在X的每行末尾添加ones_array

#线性回归中的截距项:在进行线性回归时,通常需要在特征矩阵中添加一个全为1的列,以便模型可以学习截距项。这样,模型就可以估计出在所有特征值为0时的预测值。


#正规方程计算
import matplotlib.pyplot as plt
import numpy as np

X = np.linspace(0,10,num = 30).reshape(-1,1)  #生成一个数组,以矩阵方式存在,reshape(-1,1) 确保了数据以矩阵的形式存在,便于进行矩阵运算。

#斜率和截距随机生成
w = np.random.randint(1,5,size = 1)
b = np.random.randint(1,10,size = 1)

#方程
y = X*w+b+np.random.randn(30,1)   #X是特征矩阵,w是权重向量,b是偏置项,np.random是添加的随机噪声

plt.scatter(X,y)   #绘制散点图

注意点 :

为什么要添加one_array

在机器学习和统计建模中,添加一个全为1的数组(通常称为“ones array”)到数据集中有几种常见原因:

  1. 线性回归中的截距项:在进行线性回归时,通常需要在特征矩阵中添加一个全为1的列,以便模型可以学习截距项。这样,模型就可以估计出在所有特征值为0时的预测值。

  2. 逻辑回归:在逻辑回归中,添加一个全为1的列允许模型包含一个常数项,这对于某些类型的数据是必要的。

  3. 特征标准化:在特征标准化过程中,添加一个全为1的列可以保持数据的维度不变,同时允许模型在标准化过程中考虑所有特征。

  4. 神经网络输入:在构建神经网络时,添加一个全为1的列可以作为偏置项(bias),类似于在每个神经元中添加一个偏置参数。

  5. 稀疏矩阵优化:在处理稀疏矩阵时,添加一个全为1的列可以简化某些操作,例如在某些优化算法中。

  6. 数据预处理:在某些数据预处理步骤中,添加一个全为1的列可以帮助实现特定的数据处理或特征工程需求。

  7. 模型泛化:在某些情况下,添加全为1的列可以帮助模型更好地泛化,特别是在数据集中某些特征的值可能为0时。

reshape的用处:reshape(-1,1) 确保了数据以矩阵的形式存在,便于进行矩阵运算。

y = X*w+b+np.random(30,1) 的理解:X 是特征矩阵,w 是权重向量,b 是偏置项,而 np.random(30,1) 是添加的随机噪声。

randn,和randint函数区别:

  1. randn

    • np.random.randn(*size) 函数用于生成标准正态分布(均值为0,标准差为1)的随机样本。这里的 size 可以是一个或多个整数,指定了输出数组的形状。
    • 例如,np.random.randn(3, 2) 会生成一个3行2列的数组,数组中的每个元素都是从标准正态分布中抽取的。
  2. randint

    • np.random.randint(low, high=None, size=None, dtype=int) 函数用于生成随机整数。low 和 high 是整数,分别表示随机数的最小值和最大值(不包括 high)。
    • size 参数指定了输出数组的形状。
    • dtype 参数指定了输出数组的数据类型,默认是整数类型。
    • 例如,np.random.randint(1, 10, size=(3, 2)) 会生成一个3行2列的数组,数组中的每个元素都是从1到9之间的随机整数。
  • 16
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值