import numpy as np import matplotlib.pyplot as plt # 在直线 y = 3 + 5x 附近生成随机点 X = np.arange(0, 5, 0.1) Z = [3 + 5 * x for x in X] Y = [np.random.normal(z, 0.5) for z in Z] plt.plot(X, Y, 'ro') plt.show()
def linear_regression(x, y): N = len(x) sumx = sum(x) sumy = sum(y) sumx2 = sum(x**2) sumxy = sum(x*y) A = np.mat([[N, sumx], [sumx, sumx2]]) b = np.array([sumy, sumxy]) return np.linalg.solve(A, b) a0, a1 = linear_regression(X, Y)
# 生成拟合直线的绘制点
_X = [0, 5]
_Y = [a0 + a1 * x for x in _X]
plt.plot(X, Y, 'ro', _X, _Y, 'b', linewidth=2)
plt.title("y = {} + {}x".format(a0, a1))
plt.show()
import numpy as np import matplotlib.pyplot as plt # y = 2 + 3x + 4x^2 X = np.arange(0, 5, 0.1) Z = [2 + 3 * x + 4 * x ** 2 for x in X] Y = np.array([np.random.normal(z,3) for z in Z]) plt.plot(X, Y, 'ro') plt.show()
# 生成系数矩阵A def gen_coefficient_matrix(X, Y): N = len(X) m = 3 A = [] # 计算每一个方程的系数 for i in range(m): a = [] # 计算当前方程中的每一个系数 for j in range(m): a.append(sum(X ** (i+j))) A.append(a) return A # 计算方程组的右端向量b def gen_right_vector(X, Y): N = len(X) m = 3 b = [] for i in range(m): b.append(sum(X**i * Y)) return b A = gen_coefficient_matrix(X, Y) b = gen_right_vector(X, Y) a0, a1, a2 = np.linalg.solve(A, b)
# 生成拟合曲线的绘制点
_X = np.arange(0, 5, 0.1)
_Y = np.array([a0 + a1*x + a2*x**2 for x in _X])
plt.plot(X, Y, 'ro', _X, _Y, 'b', linewidth=2)
plt.title("y = {} + {}x + {}$x^2$ ".format(a0, a1, a2))
plt.show()
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有