利用python numpy库手动实现单变量线性回归算法

import numpy as np

# 训练集
X_train = np.array([[1], [2], [3], [4], [5]])  # 你的特征数据
y_train = np.array([[2], [3], [5], [7], [11]])  # 你的标签数据

# 定义线性回归模型
class OneVariable_LinearRegression:
    def __init__(self, learning_rate=0.01, iterations=1000):
        self.learning_rate = learning_rate
        self.iterations = iterations
        self.m = 0 #斜率
        self.b = 0 #截距

    def fit(self, X, y):
        m = len(y) #样本数量
        for _ in range(self.iterations):
            y_pred = self.m * X + self.b #预测值
            # 计算梯度
            tmp_m = self.m - self.learning_rate * (1/m) * np.sum((y_pred - y) * X) #对斜率
            tmp_b = self.b - self.learning_rate * (1/m) * np.sum(y_pred - y) #对截距
            # 更新参数
            self.m = tmp_m
            self.b = tmp_b

    def predict(self, X):
        return self.m * X + self.b

# 创建模型并训练
model = OneVariable_LinearRegression(learning_rate=0.01, iterations=1000)
model.fit(X_train, y_train)

# 预测
X_new = np.array([[0], [6]])
y_predict = model.predict(X_new)



# 打印参数
print(f"parameters: m = {model.m}, b = {model.b}")
print(y_predict)

输出结果:

parameters: m = 2.1237537589278697, b = -0.7247268769283248
[[-0.72472688]
 [12.01779568]]

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值