基于Python实现二次函数拟合预测全球温度变化(附CSV数据源)
适配全球温度数据的二次函数拟合程序
以下是将你的测试代码适配到实际全球温度数据的完整方案,包含数据读取、二次拟合和可视化:
步骤说明
- 数据读取:从共享表格加载年份与温度变化数据,用
pandas简化数据处理 - 二次拟合:保留你原有的矩阵求逆方法计算拟合参数,也可使用更简洁的
numpy.polyfit - 可视化:调整坐标轴范围为实际年份区间,添加图表标签提升可读性
完整代码
import numpy as np from numpy.linalg import inv import matplotlib.pyplot as plt import pandas as pd # 读取实际全球温度数据(转换共享表格链接为CSV导出格式) url = "https://docs.google.com/spreadsheets/d/1QbFIUE1AcFCOgDZH5K2vPColxXeBVDV-sJhS9On2BYY/export?format=csv" df = pd.read_csv(url) # 提取自变量x(年份)和因变量y(温度变化) x = df["Year"].values y = df["Temperature Anomaly (°C)"].values m = len(x) # 二次拟合计算参数 # 构造设计矩阵X(包含常数项、x、x²) X = np.transpose([np.ones(m), x, x ** 2]) # 计算拟合参数theta theta = inv(np.transpose(X) @ X) @ np.transpose(X) @ y # 可选:用numpy内置polyfit简化计算(结果与矩阵方法一致) # theta = np.polyfit(x, y, 2)[::-1] # 反转顺序匹配[常数项, x系数, x²系数] # 生成拟合曲线的预测点 xp = np.arange(min(x), max(x) + 1, 0.1) yp = theta[0] + theta[1] * xp + theta[2] * xp ** 2 # 可视化训练样本与拟合曲线 plt.figure(figsize=(10, 6)) plt.scatter(x, y, color='blue', label='实际温度数据') plt.plot(xp, yp, color='red', linewidth=2, label=f'二次拟合曲线: y = {theta[0]:.4f} + {theta[1]:.4f}x + {theta[2]:.4f}x²') plt.xlabel('年份') plt.ylabel('温度异常值(°C)') plt.title('全球温度变化的二次函数拟合') plt.legend() plt.grid(True) plt.show()
关键修改点
- 替换随机数据生成逻辑,改为读取真实CSV数据
- 调整拟合曲线的x轴范围为实际年份区间,避免无意义的负数年份
- 添加图表标签、标题和图例,提升可视化效果
- 提供了
numpy.polyfit的简化实现选项,两种方法拟合结果一致
内容的提问来源于stack exchange,提问作者Jake Protagonist
相关产品推荐
相关产品推荐

