import numpy as np
'''一元(简单)线性回归,形如y=a*x+b'''
class SimpleLinearRegression:
def __init__(self):
"""初始化Simple linear regression模型"""
self.a_ = None
self.b_ = None
def fit(self,x_train,y_train):
assert x_train.ndim == 1, \
"一元线性回归模型仅处理矢量,而不能处理矩阵"
x_mean = np.mean(x_train)
y_mean = np.mean(y_train)
denominator = 0.0
numerator = 0.0
for x_i, y_i in zip(x_train, y_train):
numerator += (x_i - x_mean) * (y_i - y_mean)
denominator += (x_i - x_mean) ** 2
self.a_ = numerator / denominator
self.b_ = y_mean - self.a_ * x_mean
return self
def predict(self,x_test_group):
return np.array([self._predict(x_test) for x_test in x_test_group])
def _predict(self,x_test):
return self.a_ * x_test + self.b_
def mean_squared_error(self,y_true,y_predict):
return np.sum((y_true - y_predict) ** 2) / len(y_true)
def r_square(self,y_true,y_predict):
return 1 - (self.mean_squared_error(y_true,y_predict) / np.var(y_true))
if __name__ == '__main__':
x = np.array([1, 2, 4, 6, 8])
y = np.array([2, 5, 7, 8, 9])
lr = SimpleLinearRegression()
lr.fit(x,y)
print(lr.predict([7]))
print(lr.r_square([8,9],lr.predict([6,8])))
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App