概述
即已知x,y通过机器学习的算法求得w与b 只有一个属性,即d=1 均方误差对应了常用的欧几里得距离简称“欧氏距离”,基于均方误差最小化来进行模型求解的方法称为“最小二乘法” 随机生成一些先行数据集 使用标准方程来计算θ^,使用numpy的线性代数模块(np.linalg)中的inv()函数来对矩阵求逆,并用dot()方法计算矩阵的内积: 实际用来生成数据的函数是y=4+3*x1+高斯噪声 非常接近,噪声的存在,其不可能完全还原为原本的函数 使用Scikit-Learn执行线性回归 LinearRegression类基于scipy.linalg.lstsq()函数(名称代表“最小二乘”) 使用np.linalg.pinv()来计算这个伪逆,这种方法比计算标准方程更有效,再加上它可以很好地处理边界情况:的确,如果矩阵XтX是不可逆的,标准方程可能没有解,例如m<n或者某些特征是多余的,但伪逆总是有定义的1. 基本形式
2.线性回归
2.1 问题描述
2.2 一元线性回归
2.2.1 问题描述
w,b为单个的数2.2.2 目标函数
2.2.3 目标函数求解与证明
2.2.4 模拟实验
方法一
import numpy as np
from matplotlib import pyplot as plt
x=2*np.random.rand(100,1)
y=4 + 3*x + np.random.rand(100,1)
plt.scatter(x,y,s=10,color='g',marker='*',alpha=0.4)
y=range(0,16,2)
plt.yticks(y)
plt.xlabel('X1')
plt.ylabel('y')
plt.show()
import numpy as np
from matplotlib import pyplot as plt
X=2*np.random.rand(100,1)
X=np.matrix(X)
y=4 + 3*X + np.random.rand(100,1)
y=np.matrix(y)
X_b=np.c_[np.ones((100, 1)), X]
theta_best=np.linalg.inv(X_b.T.dot(X_b)).dot(X_b.T).dot(y)
print(theta_best)
实验的公式结果[[4.49764198]
[2.95571874]]
现在用θ^做出预测X_new=np.array([[0],[2]])
X_new_b=np.c_[np.ones((2,1)),X_new]
y_predict=X_new_b.dot(theta_best)
plt.plot(X_new,y_predict,'r-')
plt.plot(X,y,'b.')
plt.axis([0,2,0,15])
plt.show()
方法二
lin_reg=LinearRegression()
lin_reg.fit(X,y)
#[4.49079138] [[3.01587697]]
X_new=np.array([[0],[2]])
X_new_b=np.c_[np.ones((2,1)),X_new]
lin_reg.predict(X_new)
#[[ 4.51503205]
#[10.45564916]]
方法三
X_b=np.c_[np.ones((100, 1)), X]
theta_best_svd,residuals,rank,s=np.linalg.lstsq(X_b,y,rcond=1e-6)
#[[4.4350753]
#[3.0726514]]
方法四(★★★)
X_b=np.c_[np.ones((100, 1)), X]
np.linalg.pinv(X_b).dot(y)
#[[4.51562244]
#[2.98318706]]
最后
以上就是坦率月饼为你收集整理的线性模型的全部内容,希望文章能够帮你解决线性模型所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复