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]]