python机器学习算法实训 - (一) 手写线性回归

python机器学习算法实训 - (一) 线性回归

线性回归

此系列权作本学期机器学习课堂笔记 以后会持续更新各类算法(希望)ppt内容来自老师 每个算法的代码都同时自己编写实现和用sklearn实现了一次 欢迎批评斧正^ ^(需要numpy pandas基础)

原理

线性回归(linear regression)是一种简单的模型,但受到广泛应用,比如预测商品价格,成本评估等,都可以用一元线性模型。 y(x)是一元函数,回归意思就是根据已知数据复原某些值,线性回归(regression)就是用线性的模型做回归复原。
线性回归的假设
最小化代价函数
均方误差对应了常用的欧几里得距离,基于均方误差最小化来进行模型求解的方法称为“最小二乘法”。在线性回归中,最小二乘法就是试图找到一条直线,使得所有样本到直线上的欧式距离之和最小。最后得到如下解:
在这里插入图片描述

代码实现

使用线性回归预测房价

// 导包
import pandas as pd
from io import StringIO
from sklearn import linear_model
import matplotlib.pyplot as plt
import numpy as np

//房屋面积与价格的历史数据
csv_data =  'square_feet,price\n150,6450\n200,7450\n250,8450\n300,9450\n350,11450\n400,15450\n600,18450\n'
//读入dataframe
df = pd.read_csv(StringIO(csv_data))
//values.rehape(-1, 1)把数组转换成一列
x = df['square_feet'].values.reshape(-1, 1)
y = df['price']

//自己手写的建立线性回归模型
class LinearReg():
    def __init__ (self):
        self.coef_ = 0
        self.intercept_ = 0
     //拟合的方法,输入数据和标签,计算截距和系数   
    def fit(self, x, y):
    	//数据和标签必须维度一致
        if len(x) != len(y):
            return
        x_means = x.mean()
        //根据公式计算系数
        sum1 = sum2 = sum3 = sum4 = 0.0
        for i in range(len(x)):
            sum1 += y[i] * (x[i] - x_means)
            sum2 += (x[i]) ** 2
            sum3 += x[i]
        self.coef_ = sum1 / (sum2 - sum3 ** 2 / len(x))
        //根据公式计算截距
        for j in range(len(y)):
            sum4 += (y[j] - self.coef_ * x[j])
        self.intercept_ = sum4/len(y)
    
    def predict(self, x):
        return x * self.coef_ + self.intercept_

regr = LinearReg()
//拟合
regr.fit(x, y)
a, b = regr.coef_, regr.intercept_
//给出带预测的面积
area = 238.5
//方式1:根据直线方程计算价格,并输出
price = a * area + b
print(price)
//方式2:根据sklearn中线性回归模型预测
reg = linear_model.LinearRegression().fit(x, y)
yhat = reg.predict(x)
//画图
//1.真实的点
plt.scatter(x, y, color='blue', label='real price')
//2.拟合的直线
plt.plot(x, regr.predict(x), color='red', linewidth=4, label='predict price')
plt.xlabel('area')
plt.ylabel('price')
plt.legend(loc='lower right')
plt.show()

结果

拟合结果

总结

(1)我们训练算法的目标是是选择出可以使得建模误差的平方和能够最小的模型参数,即使得代价函数最小
(2)均方误差是回归任务中最常用的性能度量,它具有非常好的几何意义,对应常用的欧氏距离
(3)基于均方误差最小化来进行模型求解的方法称为“最小二乘法”
(4)在线性回归中,最小二乘法试图找到一条直线,使所有样本到直 线上的欧氏距离之和最小

拓展

1.参数求解方法:
正规方程
梯度下降(且听下回分解)

2.多变量线性回归:
例如,房价预测中,变量不单包括住房面积,还有房间数目,等…
在这里插入图片描述
当然,二维以上的变量就很难可视化了 。这时候可以用到PCA降维,观察特征维度缩减后数据大概的样子,以后会说到(吧)。

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值