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的列,以便模型可以学习截距项。这样,模型就可以估计出在所有特征值为0时的预测值。
-
逻辑回归:在逻辑回归中,添加一个全为1的列允许模型包含一个常数项,这对于某些类型的数据是必要的。
-
特征标准化:在特征标准化过程中,添加一个全为1的列可以保持数据的维度不变,同时允许模型在标准化过程中考虑所有特征。
-
神经网络输入:在构建神经网络时,添加一个全为1的列可以作为偏置项(bias),类似于在每个神经元中添加一个偏置参数。
-
稀疏矩阵优化:在处理稀疏矩阵时,添加一个全为1的列可以简化某些操作,例如在某些优化算法中。
-
数据预处理:在某些数据预处理步骤中,添加一个全为1的列可以帮助实现特定的数据处理或特征工程需求。
-
模型泛化:在某些情况下,添加全为1的列可以帮助模型更好地泛化,特别是在数据集中某些特征的值可能为0时。
reshape的用处:reshape(-1,1)
确保了数据以矩阵的形式存在,便于进行矩阵运算。
y = X*w+b+np.random(30,1) 的理解:X
是特征矩阵,w
是权重向量,b
是偏置项,而 np.random(30,1)
是添加的随机噪声。
randn,和randint函数区别:
-
randn:
np.random.randn(*size)
函数用于生成标准正态分布(均值为0,标准差为1)的随机样本。这里的size
可以是一个或多个整数,指定了输出数组的形状。- 例如,
np.random.randn(3, 2)
会生成一个3行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之间的随机整数。