机器学习之简单线性回归算法(一)Python代码实现

实现单变量简单线性回归

# 导入科学计算工具
import numpy as np
# 导入画图工具
from matplotlib import pyplot as plt


# 训练函数
def fitSLR(X,Y):
    X_avg = np.mean(X)
    Y_avg = np.mean(Y)
    n = len(X)
    # 定义分子和分母
    fen_zi = 0
    fen_mu = 0
    # 核心算法
    for i in range(0,n):
        fen_zi += (X[i] - X_avg) * (Y[i] - Y_avg)
        fen_mu += (X[i] - X_avg) ** 2
    b1 = fen_zi / float(fen_mu)
    b0 = Y_avg - X_avg * b1
    return b0,b1


def predict(x,b0,b1):
    return b0 + x * b1


# X = np.array([1,3,2,1,3])
# Y = np.array([14,24,18,17,27])
X=[1.5,0.8,2.6,1.0,0.6,2.8,1.2,0.9,0.4,1.3,1.2,2.0,1.6,1.8,2.2]
Y=[3.1,1.9,4.2,2.3,1.6,4.9,2.8,2.1,1.4,2.4,2.4,3.8,3.0,3.4,4.0]

b0,b1 = fitSLR(X,Y)
print('k = ',b1)
print('b = ',b0)

# 生成画板
plt.figure()
# 画散点图
plt.scatter(X,Y)
# 求出X参数的最小值
X_min = min(X)
# 求出X参数的最大值
X_max = max(X)
# 根据求得的b1,b0得到Y的最小值
Y_min = b0 + b1 * X_min
# 分局求得b1,b0得到Y的最大值
Y_max = b0 + b1 * X_max
# 画出预测的线性回归模型
plt.plot([X_min,X_max],[Y_min,Y_max],'r')
# 展示最终的效果
plt.show()

  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值