採用線性迴歸實現訓練和預測(Python)

你这过氧化氢掺水了發表於2024-10-30

已知測得某塊地,當溫度處於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}")  # 輸出預測結果,保留兩位小數

相關文章