回归:
回归问题分两个过程:模型的学习和预测。基于给定的训练数据构建一个模型,根据新的输入数据输出预测值。
回归问题的类型,按照输入变量的个数分为:一元回归和多元回归;按照输入变量和输出变量之间关系的类型,分为:线性回归和非线性回归。
一元线性回归:
回归分析只涉及到两个变量,主要是从两个变量中的一个变量取估计另一个变量,被估计的变量称为因变量,设为Y,估计出的变量成为自变量,设为X,回归分析只要是找出一个数学模型Y=f(x)
一元线性函数:
误差:真实值与预测数值之间存在误差ε,且误差服从高斯分布:
(1)
每个样本都有:
(2)
将2式带入1式
似然函数:似然函数是参数的函数,误差服从高斯分布,根据结果求参数,似然函数最重要的是在哪个参数值下,对应的似然函数最大。
对应的似然函数:
对数似然:
求w:
化简根据两个公式:
该公式的推导过程如下:
最后求解得:
代码实现过程:
import numpy as np
#y = wx+b
def linear_regression_model(X,y):
length = len(X)
avgx = np.mean(X)
avgy = np.mean(y)
numberator = denominator = 0
for i in range(length):
numberator += (X[i] - avgx)*(y[i]-avgy)
denominator += (X[i]-avgx)**2
w = numberator/denominator
b = avgy - w*avgx
return w, b
def predict(w,b,x_test):
return w*x_test + b
if __name__ == "__main__":
X = [4,8,5,10,12]
y = [20,50,30,70,60]
w, b = linear_regression_model(X,y)
print(w, b)
print(predict(w, b ,5))