机器学习:一元线性回归

发布于:2025-02-11 ⋅ 阅读:(68) ⋅ 点赞:(0)

一元线性回归(Simple Linear Regression)是一种统计方法,用于分析一个自变量(independent variable)和一个因变量(dependent variable)之间的线性关系。它是线性回归分析中最简单和最基本的形式。

一元线性回归的数学模型可以表示为:
y = w x + b y = w x + b y=wx+b
估计一元线性回归模型的最常用方法是最小二乘法,它是一种常用的参数估计方法,用于求解一元线性回归模型的斜率 w w w和截距 b b b

损失函数:
L ( w , b ) = ∑ i = 1 n ( y i − ( w x i + b ) ) 2 L(w,b) = \sum_{i=1}^n(y_i - (wx_i + b))^2 L(w,b)=i=1n(yi(wxi+b))2
分别对 w w w b b b求偏导,并令其等于0,之后进行求解:
w = ∑ ( x i − x ˉ ) ( y i − y ˉ ) ∑ ( x i − x ˉ ) 2 w = \frac{\sum (x_i - \bar{x})(y_i - \bar{y})}{\sum (x_i - \bar{x})^2} w=(xixˉ)2(xixˉ)(yiyˉ)

b = y ˉ − w x ˉ b = \bar{y} - w \bar{x} b=yˉwxˉ

Python实现一元线性回归

准备数据Student Performance (Multiple Linear Regression) | Kaggle,下载数据。

处理数据:由于是一元线性回归模型,因此仅需要 x x x y y y两个变量,在这里选取了以往成绩作为 x x x表现指数作为 y y y

import numpy as np
import pandas as pd

def get_data():
    """
    x:以往成绩
    y:表现指数
    """
    data = pd.read_csv('./Student_Performance.csv', header=0)
    dataXY = np.array((data.iloc[0:,[1,5]].values))

    return dataXY[:,0], dataXY[:,1]

print(get_data())

实现一元线性回归模型:根据上面给出的公式进行实现即可。

由于numpy向量化更优,故仅使用numpy,不使用list等python原始类型。

import numpy as np
import pandas as pd

"""
 y = wx + b
"""

# print(dataset)
# print(x)
# print(y)
def get_w_b(inputx: np.array, inputy: np.array):
    x = np.array(inputx)
    y = np.array(inputy)
    # w = ((x - x.mean()) * (y - y.mean())).sum() / ((x - x.mean())**2).mean()
    w = ( (y * (x - x.mean())).sum()) / ( (x**2).sum() - (x.sum()**2) / len(x))
    b = y.mean() - w * x.mean()
    return w, b


使用算法

导入数据集:

import data_processing_1LR as gd
x, y = gd.get_data()
print(x)

查看数据:

plt.scatter(x, y)

在这里插入图片描述

引入实现的算法模型:

import LinearRegression1 as LR1
w ,b = LR1.get_w_b(x, y)
print(w,b)
y_hat = w*x + b
plt.plot(x, y_hat, color='r')
plt.scatter(x, y)

在这里插入图片描述

南瓜书 PumpkinBook-课程详情 | Datawhale


网站公告

今日签到

点亮在社区的每一天
去签到