拟合

    科技2026-06-04  9

    拟合

    一元线性拟合

    python画图代码

    import matplotlib.pyplot as plt import pandas as pd def Unary_linear_fitting(arr_x, arr_y): x_average = 0 y_average = 0 for i in range(len(arr_x)): x_average = x_average + arr_x[i] y_average = y_average + arr_y[i] x_average = x_average / len(arr_x) y_average = y_average / len(arr_y) temp1 = 0 temp2 = 0 for i in range(len(arr_x)): temp1 = temp1 + (arr_x[i] - x_average) * (arr_y[i] - y_average) temp2 = temp2 + (arr_x[i] - x_average) * (arr_x[i] - x_average) b = temp1 / temp2 a = y_average - b * x_average return a, b data = pd.read_csv("大学男生身高体重数据.csv") height = data["身高"] weight = data["体重"] a, b = Unary_linear_fitting(height, weight) print(a, b) plt.plot([160, 195], [160 * b + a, 195 * b + a], label='Unary_linear_fitting') plt.title("Unary_linear_fitting") plt.scatter(height, weight, label='The original data') plt.legend(loc="upper left") plt.xlabel("height") plt.ylabel("weight") plt.show()

    多元线性拟合

    多项式拟合

    python画图代码

    from scipy import linalg import numpy as np import numpy.matlib import matplotlib.pyplot as plt # arr_x每行是单个变元的数据 def Multiple_linear_fitting(arr_x, arr_y): m = np.array(arr_x).shape[0] average_y = np.mean(arr_y) x_len = len(arr_x) x_matrix = np.matlib.zeros((m, 1)) for i in range(m): xx_len = len(arr_x[0]) for j in range(xx_len): x_matrix[i] = x_matrix[i] + arr_x[i][j] x_matrix[i] = x_matrix[i] / xx_len ly = np.matlib.zeros((m, 1)) ll = np.matlib.zeros((m, m)) for i in range(m): for j in range(m): for n in range(len(arr_x[0])): ll[i, j] = ll[i, j] + (arr_x[i][n] - x_matrix[i, 0]) * (arr_x[j][n] - x_matrix[j, 0]) for k in range(len(arr_x[0])): ly[i] = ly[i] + (arr_x[i][k] - x_matrix[i, 0]) * (arr_y[k] - average_y) a = linalg.solve(ll, ly) a0 = 0 for i in range(len(arr_x[0])): a0 = a0 + arr_y[i] for i in range(m): temp = 0 for j in range(len(arr_x[0])): temp = temp + arr_x[i][j] temp = temp * a[i] a0 = a0 - temp a0 = a0 / len(arr_x[0]) return a0, a x_arr = [[-2, -1, 0, 1, 2], [4, 1, 0, 1, 4]] y_arr = [0, 1, 2, 1, 0] a0, a = Multiple_linear_fitting(x_arr, y_arr) print(-3/7) print(58 / 35) print(a0) print(a) x = np.linspace(-2, 2, 100) y = [0 for j in range(len(x))] for i in range(len(y)): y[i] = a0 + a[0] * x[i] + a[1] * x[i] * x[i] plt.scatter(x_arr[0], y_arr, label='The original data') plt.plot(x, y, label='Polynomial fitting') plt.title('Polynomial fitting') plt.legend(loc="upper left") plt.xlabel("x") plt.ylabel("y") plt.show()
    Processed: 0.031, SQL: 9