一元线性回归

摘选于 机器学习- 一元线性回归

通过分析披萨的直径与价格的线性关系,来预测任一直径的披萨的价格

  1. 理论
    披萨直径 x 和价格的关系可以表示为

在这里插入图片描述

计算斜率 w
在这里插入图片描述在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.代码实现

首先导入相关库

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from sklearn.linear_model import LinearRegression

定义一个方法绘制图形

def runplt():
    plt.figure()
    plt.title("Pizza price plotted against diameter")
    plt.xlabel('Diameter')
    plt.ylabel('Price')
    plt.grid(True)  # 图表中加入网格线
    plt.xlim(0, 25)  # x的取值范围
    plt.ylim(0, 25)  # y的取值范围
    return plt

数据处理

pizza = pd.DataFrame({'Diameter': [6, 8, 10, 14, 18], 'Price': [7.0, 9.0, 13.0, 17.5, 18.0]})
dia = pizza.loc[:, 'Diameter'].values
price = pizza.loc[:, 'Price'].values

根据所有半径的方差和半径,价格的协方差求出直线斜率 w,画出预测图线(运行结果中图形表里的实线)

variance = np.var(dia, ddof=1)  # 求出直径的方差
covariance = np.cov(dia, price)[0][1]
w = covariance / variance  # 求出直线斜率
b = np.mean(price) - w * np.mean(dia)  # 求出直线截距
print("w = %f\n b = %f" % (w, b))
plt = runplt()
y_price = w * dia + b  # 预测直线
plt.plot(dia, price, 'k.')
plt.plot(dia, y_price, 'k-')

使用模型库中函数,直接预测结果(图形表中的虚线)。将两种结果进行比较

model = LinearRegression()  # 创建模型
X = dia.reshape((-1, 1))  # 将dia转换为1列
y = price
model.fit(X, y)  # 拟合
X2 = [[0], [25]]  # 取两个预测值
y2 = model.predict(X2)  # 进行预测
print(y2)  # 查看预测值
plt.plot(dia, price, 'k.')
plt.plot(X2, y2, 'b--')  # 画出拟合曲线
# 画出残差
yr = model.predict(X)
for index, x in enumerate(X):
    plt.plot([x, x], [y[index], yr[index]], 'r-')
plt.show()
  1. 运行结果

控制台输出

图形输出

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值