回归and线性

什么是回归:把所有结果(点)进行拟合,输出一个连续的值(分类是离散值)

什么是线性:线性(linar)量与量之间成比例,成直线的关系。在数学书可以理解为一阶导数为常数
非线性:量与量之间不成直线的关系。在数学书可以理解为一阶导数不为常数

(也可以理解为在某个空间内使用一条直线来拟合数据)

一个问题:什么样的数据分布适合使用线性回归?

实践建议:尝试寻找一个可以使用线性回归进行预测的案例?

尝试:进行线性回归

第一步,我们来导入一个数据集吧,我们已经为阁下筛选了一个完美的适合线性回归的数据集,您可以进行下载:

data (下载0)

第二步,我们导入这个文件,参见以下代码:

import numpy as np
a = np.loadtxt(r"C:\Users\m1355\Downloads\ex1data1.txt",delimiter=",",dtype="float")
m = np.size(a,0)
print(m)
print(a.shape)
print(a.ndim)

随着这个代码的执行完毕,我们可以在下方看到所有读入的数据和他们的格式

第三步,绘制样本点,人口为横坐标,利润为纵坐标。参见以下代码

import matplotlib.pyplot as plt
X = a[:,0:1]#X[:,m:n] #即取所有数据的第m到n-1列数据,含左不含右
y = a[:,0:97] #请你模仿X的取值方式在问号处填写代码
plt.plot(X,y,"rx") #第三个参数表示红色 形状为x
plt.xlabel("人口")#横坐标名称
plt.ylabel("利润") #纵坐标名称
plt.show()

此代码执行完后,在输出框可见读入的数据,在弹出的窗口我们可以清晰的看到绘制的点位,如下:

第四步,我们可以在刚刚绘制的样本点上进行线性回归啦!

我们进行线性回归以预测利润的主要方式是,通过现有的样本点数据,找到最适合的参数k与b。
我们的最终目的是,当给定x,拟合出来的预测值y与样本点的真实值y的差距需要尽可能地小

y=kx+b

所以我们遇到了一个问题:如何评估预测值与真实值之间的差异
于是,我们引入了MSE损失函数:

我们可以利用已知信息,通过数学手段最小化该损失函数,找到可以使得该损失函数最小的参数值(𝜃0 和 𝜃1)

我们已经成功引入了MSE损失函数的概念,现在假如我们完成了一次拟合,现在需要求MSE损失函数来预测预测值与真实值之间的差异。

假如给定一组参数后针对已知X拟合出来的y值分别是1.6, 2.5, 2.9, 3, 4.1,
而真实y值分别是1, 2, 3, 4, 5,求当前参数下的MSE.

a= np.array([1,4])
a.mean()#2.5 #计算均值

第一种方法是使用数学原理来计算MSE:

import math
import numpy as np
import pandas as pd

y_actual = np.array([1,2,3,4,5])
y_predicted = np.array([1.6,2.5,2.9,3,4.1])

d = {"y_actual":y_actual,
     "y_predicted":y_predicted,
     "error":y_actual - y_predicted,
     "squared error": (y_actual - y_predicted)**2 }

df = pd.DataFrame(data = d)
print(df.head())

输出:
y_actual y_predicted error squared error
0 1 1.6 -0.6 0.36
1 2 2.5 -0.5 0.25
2 3 2.9 0.1 0.01
3 4 3.0 1.0 1.00
4 5 4.1 0.9 0.81

第二种方法是使用函数调用方式实现MSE计算:
随着人工智能模型应用的越来越大,例如损失函数使用等操作可以直接进行调用而不是现写
所以我们在此展示一种直接调用函数

import sklearn.metrics import mean_squared_error
import numpy as np
import math

y_actual = np.array([1,2,3,4,5])
y_predicted = np.array([1.6,2.5,2.9,3,4.1])

MSE = mean_squared_error(y_actual,y_predicted)
RMSE = math.sqrt(MSE)

print(MSE)
print("Root Mean Square Error:\n")
print(RMSE)

输出:
y_actual y_predicted error squared error
0 1 1.6 -0.6 0.36
1 2 2.5 -0.5 0.25
2 3 2.9 0.1 0.01
3 4 3.0 1.0 1.00
4 5 4.1 0.9 0.81

如何最小化这个损失函数,让我们下节课再解决这个问题吧!

Loading

作者 xianfeng1128

在 “人工智能听课笔记—第一课:线性回归” 有 1 条评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注