机器学习—线性回归算法

本文详细介绍了线性回归算法,包括简单线性回归和多元线性回归的实现与评价方法。通过实例展示了如何使用numpy和sklearn库进行模型训练,并计算MSE、RMSE、MAE和R²等评价指标。最后,比较了sklearn的线性回归模型与自定义实现的性能。
摘要由CSDN通过智能技术生成

4.线性回归算法

4.1简单线性回归

在前面介绍了一种解决分类问题的最基本算法kNN,本章会介绍解决回归问题的最基本算法—线性回归。

线性回归算法思想:寻找一条直线,最大程度的拟合样本特征和样本标签之间的关系。当样本只有一个特征时,称为简单线性回归;样本特征大于1时,称为多元线性回归。

4.1.1简单线性回归算法的实现

假设最佳拟合的直线方程为y = ax + b;对于每个样本x(i),根据直线方程得到的预测值为,其真实值为y(i)。

我们希望真实值和预测值之间的差距尽可能的小,因此用来表示两者之间的距离。由于需要求出a和b的数值,因此使用来表示真实值和预测值的距离。

当有m个样本时,真实值和预测值的距离可以表示为:

上述函数称为损失函数,通过求损失函数的最优化解(这里指最小值),得到a和b的数值,即获得机器学习的模型。

这是一个典型的最小二乘法问题,可以得到:

#程序4-1

import numpy as np

from sklearn import datasets

import matplotlib.pyplot as plt

 

#波士顿房价

boston = datasets.load_boston()

print(boston.keys())

 

#以每个住宅的平均房间数(RM)为特征

x = boston.data[:,5].copy()

y = boston.target.copy()

print(x.shape)

print(y.shape)

 

#画散点图

# plt.scatter(x,y,color='blue',marker='+',alpha=0.5)

# plt.show()

 

#取出y的边界值

x = x[y < np.max(y)]

y = y[y < np.max(y)]

print(x.shape)

print(y.shape)

 

x_mean = np.mean(x)

y_mean = np.mean(y)

 

#方法1:使用for循环遍历

# num = 0.0   #a的分子

# den = 0.0   #a的分母

# for x_i,y_i in zip(x,y):

#     num += (x_i - x_mean)*(y_i - y_mean)

#     den += (x_i - x_mean)**2

# a = num/den

# b = y_mean - a*x_mean

# print('a = ',a,' b = ',b)

 

#方法2:使用向量/矩阵的乘法

num = (x - x_mean).dot(y - y_mean)

den = (x - x_mean).dot(x - x_mean)

a = num/den

b = y_mean - a*x_mean

print('a = ',a,' b = ',b)

运行结果:

dict_keys(['data', 'target', 'feature_names', 'DESCR', 'filename'])

(506,)

(506,)

(490,)

(490,)

a =  8.268557322426979  b =  -30.005120145375827

4.1.2如何评价回归问题

(1)均方误差MSE(me

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值