采用线性回归实现训练和预测(Python)

已知测得某块地,当温度处于15至40度之间时,数得某块草地上小花朵的数量和温度值的数据如下表所示。现在要来找出这些数据中蕴含的规律,用来预测其它未测温度时的小花朵的数量。
测得数据如下图所示:



import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression  # 导入线性回归模型
from sklearn.model_selection import train_test_split  # 导入模型训练和测试的划分工具

# 定义温度和花朵数量的数据
temperatures = [15, 20, 25, 30, 35, 40]  # 温度数据
flowers = [136, 140, 155, 160, 157, 175]  # 相应的花朵数量数据

# 将数据转换为numpy数组并调整形状
# temperatures 需要转换为二维数组以适应 sklearn 的输入要求
temperatures = np.array(temperatures).reshape(-1, 1)
flowers = np.array(flowers)  # flowers 数据保持一维

# 创建线性回归模型
model = LinearRegression()  # 实例化线性回归模型

# 拟合模型
model.fit(temperatures, flowers)  # 用温度和花朵数量拟合模型

# 输出模型参数
# 截距和系数是线性回归模型的结果
print(f"截距: {model.intercept_}")  # 输出截距
print(f"系数: {model.coef_[0]}")  # 输出温度的系数

# 用模型进行预测
predicted_flowers = model.predict(temperatures)  # 根据温度数据预测花朵数量

# 可视化结果
plt.rcParams['font.sans-serif'] = ['SimHei']  # 设置字体以支持中文
plt.rcParams['axes.unicode_minus'] = False  # 支持负号显示
plt.scatter(temperatures, flowers, color='blue', label='实际数据')  # 绘制实际数据的散点图
plt.plot(temperatures, predicted_flowers, color='red', label='拟合线')  # 绘制模型拟合的直线
plt.xlabel('温度')  # x轴标签
plt.ylabel('花朵数量')  # y轴标签
plt.title('温度与花朵数量的线性回归')  # 图表标题
plt.legend()  # 显示图例
plt.show()  # 显示图表

# 预测新数据点(例如,温度=27)
new_temperatures = np.array([[27]])  # 创建一个新的温度数据点,形状为二维数组
predicted_new_flowers = model.predict(new_temperatures)  # 用模型预测此温度下的花朵数量
print(f"当温度为27度时,预测的花朵数量为: {predicted_new_flowers[0]:.2f}")  # 输出预测结果,保留两位小数

posted @ 2024-10-30 10:43  你这过氧化氢掺水了  阅读(46)  评论(0编辑  收藏  举报