回歸演算法詳解

回歸是一種統計學習方法,用於預測數值型的數據,如房價、銷量等。回歸演算法首先通過數據分析建立一個擬合函數,然後將未知樣本帶入該函數計算得到預測結果。

一、線性回歸

線性回歸是回歸分析中最簡單和最流行的方法,基本思想是通過一條直線來擬合數據點的趨勢。例如,我們需要預測房價,我們可以通過分析房屋的面積、位置、年代等因素來建立一個擬合函數,用於預測未知的房價。

1、最小二乘法

import numpy as np
from sklearn.linear_model import LinearRegression

X = np.array([[1, 1], [1, 2], [2, 2], [2, 3]])
y = np.dot(X, np.array([3, 4])) + 5

reg = LinearRegression().fit(X, y)
reg.score(X, y)
reg.coef_
reg.intercept_

2、嶺回歸

from sklearn import linear_model

reg = linear_model.Ridge(alpha=.5)
reg.fit([[0, 0], [0, 0], [1, 1], [1, 1]], [0, .1, 1, 1])

reg.coef_
reg.intercept_

3、Lasso回歸

from sklearn import linear_model

reg = linear_model.Lasso(alpha=0.1)
reg.fit([[0, 0], [1, 1]], [0, 1])

reg.predict([[1, 1]])

二、多項式回歸

多項式回歸是在線性回歸的基礎上,通過加入高次項來擬合非線性數據。例如,我們需要預測某家餐館的人流量,我們可以通過分析餐館的位置、周邊環境、天氣等因素來建立一個擬合函數,用於預測未來的人流量。

1、多項式特徵處理

from sklearn.preprocessing import PolynomialFeatures

X = np.arange(6).reshape(3, 2)
X_poly = PolynomialFeatures(degree=2, include_bias=False).fit_transform(X)

X
X_poly

2、多項式回歸

import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures

# 生成樣本數據
x = np.linspace(0, 2, 100)
y = 1 + 2*x + np.random.randn(100)*0.5

# 多項式回歸
poly_features = PolynomialFeatures(degree=2, include_bias=False)
X_poly = poly_features.fit_transform(x.reshape(-1, 1))
poly_reg = LinearRegression().fit(X_poly, y)

# 可視化結果
plt.scatter(x, y)
plt.plot(x, poly_reg.predict(X_poly), color='r')
plt.show()

三、決策樹回歸

決策樹回歸是一種通過樹狀結構來預測數值型數據的方法。例如,我們需要預測電影票房,我們可以通過分析電影的導演、演員、類型、上映時間等因素來建立一個決策樹,用於預測未來電影的票房。

1、構建決策樹

from sklearn.tree import DecisionTreeRegressor

X = [[0, 0], [2, 2]]
y = [0.5, 2.5]

regressor = DecisionTreeRegressor(max_depth=2)
regressor.fit(X, y)

2、可視化決策樹

from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier, export_graphviz
from sklearn import tree
import graphviz

iris = load_iris()
clf = tree.DecisionTreeClassifier()
clf = clf.fit(iris.data, iris.target)

dot_data = tree.export_graphviz(clf, out_file=None)
graph = graphviz.Source(dot_data)

graph

四、支持向量機回歸

支持向量機回歸是一種通過構建超平面來預測數值型數據的方法。例如,我們需要預測某公司的利潤,我們可以通過分析公司的歷史數據、行業數據等因素來建立一個超平面,用於預測未來的利潤。

1、線性支持向量機回歸

from sklearn.svm import SVR

X = [[0, 0], [2, 2]]
y = [0.5, 2.5]

regressor = SVR(kernel='linear', C=1.0, epsilon=0.2)
regressor.fit(X, y)

2、非線性支持向量機回歸

from sklearn.svm import SVR
import numpy as np
import matplotlib.pyplot as plt

# 創建樣本數據
X = np.sort(5 * np.random.rand(80, 1), axis=0)
y = np.sin(X).ravel()

# 添加雜訊
y[::5] += 3 * (0.5 - np.random.rand(16))

# 訓練非線性SVR
svr_rbf = SVR(kernel='rbf', C=1e3, gamma=0.1)
svr_lin = SVR(kernel='linear', C=1e3)
svr_poly = SVR(kernel='poly', C=1e3, degree=2)
y_rbf = svr_rbf.fit(X, y).predict(X)
y_lin = svr_lin.fit(X, y).predict(X)
y_poly = svr_poly.fit(X, y).predict(X)

# 可視化結果
plt.scatter(X, y, color='black', label='data')
plt.plot(X, y_rbf, color='red', label='RBF model')
plt.plot(X, y_lin, color='green', label='Linear model')
plt.plot(X, y_poly, color='blue', label='Polynomial model')
plt.xlabel('data')
plt.ylabel('target')
plt.title('Support Vector Regression')
plt.legend()
plt.show()

原創文章,作者:UXSZL,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/332360.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
UXSZL的頭像UXSZL
上一篇 2025-01-21 17:30
下一篇 2025-01-21 17:30

相關推薦

  • 蝴蝶優化演算法Python版

    蝴蝶優化演算法是一種基於仿生學的優化演算法,模仿自然界中的蝴蝶進行搜索。它可以應用於多個領域的優化問題,包括數學優化、工程問題、機器學習等。本文將從多個方面對蝴蝶優化演算法Python版…

    編程 2025-04-29
  • Python實現爬樓梯演算法

    本文介紹使用Python實現爬樓梯演算法,該演算法用於計算一個人爬n級樓梯有多少種不同的方法。 有一樓梯,小明可以一次走一步、兩步或三步。請問小明爬上第 n 級樓梯有多少種不同的爬樓梯…

    編程 2025-04-29
  • AES加密解密演算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密演算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES演算法,並對實現過程進…

    編程 2025-04-29
  • Harris角點檢測演算法原理與實現

    本文將從多個方面對Harris角點檢測演算法進行詳細的闡述,包括演算法原理、實現步驟、代碼實現等。 一、Harris角點檢測演算法原理 Harris角點檢測演算法是一種經典的計算機視覺演算法…

    編程 2025-04-29
  • 數據結構與演算法基礎青島大學PPT解析

    本文將從多個方面對數據結構與演算法基礎青島大學PPT進行詳細的闡述,包括數據類型、集合類型、排序演算法、字元串匹配和動態規劃等內容。通過對這些內容的解析,讀者可以更好地了解數據結構與算…

    編程 2025-04-29
  • 瘦臉演算法 Python 原理與實現

    本文將從多個方面詳細闡述瘦臉演算法 Python 實現的原理和方法,包括該演算法的意義、流程、代碼實現、優化等內容。 一、演算法意義 隨著科技的發展,瘦臉演算法已經成為了人們修圖中不可缺少…

    編程 2025-04-29
  • 神經網路BP演算法原理

    本文將從多個方面對神經網路BP演算法原理進行詳細闡述,並給出完整的代碼示例。 一、BP演算法簡介 BP演算法是一種常用的神經網路訓練演算法,其全稱為反向傳播演算法。BP演算法的基本思想是通過正…

    編程 2025-04-29
  • 粒子群演算法Python的介紹和實現

    本文將介紹粒子群演算法的原理和Python實現方法,將從以下幾個方面進行詳細闡述。 一、粒子群演算法的原理 粒子群演算法(Particle Swarm Optimization, PSO…

    編程 2025-04-29
  • Python回歸演算法算例

    本文將從以下幾個方面對Python回歸演算法算例進行詳細闡述。 一、回歸演算法簡介 回歸演算法是數據分析中的一種重要方法,主要用於預測未來或進行趨勢分析,通過對歷史數據的學習和分析,建立…

    編程 2025-04-28
  • 象棋演算法思路探析

    本文將從多方面探討象棋演算法,包括搜索演算法、啟發式演算法、博弈樹演算法、神經網路演算法等。 一、搜索演算法 搜索演算法是一種常見的求解問題的方法。在象棋中,搜索演算法可以用來尋找最佳棋步。經典的…

    編程 2025-04-28

發表回復

登錄後才能評論