1. 回歸的基本概念
在機器學習的有監督學習中,回歸(Regression)是一種常見的任務,它的目標是通過觀察數據來建立一個模型,用一個或多個自變量來預測因變量的值。
回歸分析通常用于: a.預測,基于已有數據,預測未知的數據,b. 解釋關系,分析自變量與因變量之間的關系和影響。
回歸任務舉例: 根據房屋的面積、位置、房齡等信息,預測房屋的市場價格。
回歸模型的類型: 線性回歸(Linear Regression)、 非線性回歸(Nonlinear Regression)、嶺回歸(Ridge Regression)等
2. 線性回歸(Linear Regression)
線性回歸是最基礎的回歸方法,它假設自變量和因變量之間存在線性關系。常見的線性回歸模型有:
3. 非線性回歸(Nonlinear Regression)
當自變量和因變量之間的關系不再是線性時,可使用非線性回歸,適用于那些數據呈現曲線而不是直線趨勢的情況。這種回歸模型包含了更復雜的數學關系,例如:
4. 回歸任務的評估指標
回歸模型的評估指標用來衡量模型的預測能力和擬合程度。常見的評估指標有:
5. 使用 scikit-learn 庫進行單變量線性回歸分析
# 導入必要的庫
import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score# 生成模擬數據
np.random.seed(42) # 為了可復現性
X = 2 * np.random.rand(100, 1) # 生成100個隨機自變量
Y = 4 + 3 * X + np.random.randn(100, 1) # 生成因變量(線性關系加上噪聲)# 可視化數據
plt.scatter(X, Y, color='blue', label='Data Points')
plt.xlabel('X')
plt.ylabel('Y')
plt.title('Generated Data')
plt.show()
# 數據集劃分:80%訓練,20%測試
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)# 進行預測
Y_pred = model.predict(X_test)# 打印回歸系數和截距
print(f"回歸系數 (β1): {model.coef_[0]}")
print(f"截距 (β0): {model.intercept_}")
#回歸系數 (β1): [2.79932366]
#截距 (β0): [4.14291332]
# 評估模型
mse = mean_squared_error(Y_test, Y_pred)
r2 = r2_score(Y_test, Y_pred)
print(f"均方誤差 (MSE): {mse}")
print(f"決定系數 (R2): {r2}")
#均方誤差 (MSE): 0.6536995137170021
#決定系數 (R2): 0.8072059636181392# 可視化結果
plt.scatter(X_test, Y_test, color='blue', label='True Data')
plt.plot(X_test, Y_pred, color='red', label='Regression Line')
plt.xlabel('X')
plt.ylabel('Y')
plt.title('Linear Regression Model')
plt.legend()
plt.show()