原來機器學習這么簡單—線性回歸
一、什么是線性回歸?
線性回歸 是一種基本但極為重要的監督學習算法,廣泛用于預測連續數值型數據。其主要目標是通過分析已知數據點之間的關系,找出一個能夠用來預測新數據點的函數模型。在最簡單的情況下,線性回歸嘗試找到一條直線,這條直線能夠最佳地通過數據點,并最小化預測值與實際值之間的差異。
二、線性回歸的原理
圖1 1 維和 2 維輸入特征的線性模型
2.4 模型的評估
在得到模型后,我們需要評估其效果,常用的評估指標包括:
- 均方誤差(MSE):衡量模型預測值與實際值之間的平均誤差平方。
三、案例分析
我們將使用加州房價數據集(California Housing Dataset),這是一個公開的機器學習數據集,包含加利福尼亞州各地區的房屋信息,包括房價、中位數收入、住房年齡等特征。我們將選擇合適的特征來預測房價。
1. 導入數據集和必要的庫
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.datasets import fetch_california_housing
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score
# 設置字體,解決中文顯示問題
plt.rcParams['font.sans-serif'] = ['SimHei'] # 使用黑體字體顯示中文
plt.rcParams['axes.unicode_minus'] = False # 解決坐標軸負號顯示問題
# 加載加州房價數據集
california = fetch_california_housing()
data = pd.DataFrame(california.data, columns=california.feature_names)
data['MedHouseVal'] = california.target
data
2. 創建和訓練線性回歸模型
# 選擇特征 'MedInc' 進行建模
X = data[['MedInc', 'HouseAge', 'AveRooms', 'AveOccup']]
y = data['MedHouseVal']
# 分割數據為訓練集和測試集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 初始化線性回歸模型
model = LinearRegression()
# 訓練模型
model.fit(X_train, y_train)
3. 模型預測和評估
# 使用測試集進行預測
y_pred = model.predict(X_test)
# 評估模型表現
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)
print(f"均方誤差(MSE): {mse}")
print(f"決定系數(R^2): {r2}")
均方誤差(MSE): 0.657451727882265
決定系數(R^2): 0.49828508595474374
4. 結果可視化
# 可視化預測值與實際值的比較
plt.figure(figsize=(10, 6))
plt.scatter(y_test, y_pred, alpha=0.5, label="預測值 vs 實際值")
plt.plot([y_test.min(), y_test.max()], [y_test.min(), y_test.max()], 'r--', lw=2, label="理想的直線 $y = x$")
plt.xlabel("實際房價")
plt.ylabel("預測房價")
plt.title("實際房價 vs 預測房價")
plt.legend()
plt.show()
四、總結
線性回歸通過簡單的數學關系和優化方法,為我們提供了一個有效的工具來預測連續型數據。它不僅易于理解和實現,而且在實際應用中非常有效,是入門機器學習的理想算法之一。通過深入理解線性回歸的原理和計算過程,我們可以更好地掌握機器學習的核心思想,并為更復雜的算法打下堅實的基礎。
贊
收藏
回復
分享
微博
QQ
微信
舉報

回復
相關推薦