日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

關于回歸算法的總結,我見到過的有簡單的,也有特別詳細的。百花齊放,各有優略!
今天總結了關于回歸算法的方方面面,涉及到原理的解釋、入門代碼等等。
總的來說,回歸算法是一類用于預測連續數值輸出的監督學習算法。
根據輸入特征預測一個或多個目標變量。
回歸算法有多個分支和變種,每個分支都有其獨特的優缺點。
今天要說的有8個部分,大家伙請看~
  • 線性回歸
  • 多項式回歸
  • 嶺回歸
  • Lasso回歸
  • 彈性網絡回歸
  • 邏輯斯蒂回歸
  • 決策樹回歸
  • 隨機森林回歸
大家伙如果覺得還不錯!可以點贊、轉發安排起來,讓更多的朋友看到。
 
另外,可能涉及到的數據集,可以點擊上面名片,回復“數據集”獲取!
一起來看看吧~

線性回歸(Linear Regression)

首先,線性回歸(Linear Regression)是一種用于建立連續數值輸出與一個或多個輸入特征之間關系的監督學習算法。
它假設輸出與輸入特征之間存在線性關系,即可以用一條直線來擬合數據。
線性回歸的目標是找到一條最佳擬合直線,以最小化預測值與真實值之間的誤差。
簡單線性回歸:
 
多元線性回歸:
其中:
  •  是預測的目標變量。
  •  是輸入特征。
  •  是斜率(簡單線性回歸中)或權重(多元線性回歸中)。
  •  是截距。
  •  是多元線性回歸中的權重。
下面是一個簡單的案例,隨機生成的數據來演示:

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

# 生成隨機數據
np.random.seed(0)
X = np.random.rand(100, 1)  # 輸入特征
y = 2 * X + 1 + 0.1 * np.random.randn(100, 1)  # 生成輸出數據,帶有一些噪聲

# 創建線性回歸模型
model = LinearRegression()

# 擬合模型
model.fit(X, y)

# 預測
y_pred = model.predict(X)

# 繪制原始數據和擬合直線
plt.scatter(X, y, label='Original Data')
plt.plot(X, y_pred, color='red', linewidth=3, label='Fitted Line')
plt.xlabel('X')
plt.ylabel('y')
plt.legend()
plt.title('Linear Regression Example')
plt.show()
上面案例中,使用LinearRegression模型擬合數據,并繪制了原始數據和擬合直線的可視化圖表。
實際情況下,可以根據自己的需求修改輸入數據和模型來適應不同的案例。

多項式回歸(Polynomial Regression)

多項式回歸是一種回歸分析方法,它通過使用多項式函數來擬合數據,而不僅僅是線性函數。
多項式回歸通常用于處理數據與因變量之間的非線性關系,這種關系不能用線性回歸來準確建模。
多項式回歸的一般形式可以表示為:
其中, 是因變量, 是自變量, 是模型參數, 是多項式的階數, 是誤差項。
下面展示如何進行多項式回歸,包括數據生成、擬合模型以及可視化。

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

# 生成隨機數據
np.random.seed(0)
X = np.sort(5 * np.random.rand(80, 1), axis=0)
y = np.cos(X).ravel() + np.random.randn(80) * 0.1

# 使用多項式特征擴展
poly = PolynomialFeatures(degree=4)  # 選擇多項式的階數
X_poly = poly.fit_transform(X)

# 創建線性回歸模型
model = LinearRegression()
model.fit(X_poly, y)

# 預測
X_test = np.linspace(0, 5, 100)[:, np.newaxis]
X_test_poly = poly.transform(X_test)
y_pred = model.predict(X_test_poly)

# 繪制原始數據和擬合曲線
plt.scatter(X, y, label='Original Data')
plt.plot(X_test, y_pred, label='Polynomial Regression', color='r')
plt.xlabel('X')
plt.ylabel('Y')
plt.legend()
plt.title('Polynomial Regression Example')
plt.show()
在這個示例中,首先生成了一組隨機的數據點,然后使用四次多項式來擬合這些數據。
擬合后,我們繪制了原始數據點和擬合曲線的可視化圖表。
你可以根據自己的數據和需求,修改多項式的階數和其他參數來進行多項式回歸分析,以更好地擬合你的數據。
 

嶺回歸(Ridge Regression)

嶺回歸(Ridge Regression)是一種線性回歸的改進方法,用于解決多重共線性(multicollinearity)問題,即自變量之間存在高度相關性的情況。
在多重共線性存在時,傳統的線性回歸模型可能會導致參數估計不穩定,嶺回歸通過引入正則化項來解決這個問題。
嶺回歸的目標函數如下所示:
其中:
  •  是因變量(目標變量)的觀測值。
  •  是模型的參數,其中  是截距, 是自變量的系數。
  •  是第  個觀測值的第  個自變量的值。
  •  是嶺回歸的超參數,用于控制正則化的強度。
首先,我們生成一個模擬的數據集,以便演示嶺回歸的效果,并使用matplotlib庫進行可視化。

 
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import Ridge
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import trAIn_test_split

# 生成模擬數據集
np.random.seed(0)
n_samples, n_features = 200, 5
X = np.random.randn(n_samples, n_features)
true_coefficients = np.array([4, 2, 0, 0, -1])
y = X.dot(true_coefficients) + np.random.randn(n_samples) * 1.0

# 將數據集分為訓練集和測試集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 使用嶺回歸擬合數據
alpha = 1.0  # 正則化強度參數
ridge = Ridge(alpha=alpha)
ridge.fit(X_train, y_train)

# 輸出嶺回歸模型的系數
print("Ridge Regression Coefficients:", ridge.coef_)

# 計算模型在測試集上的R^2分數
r_squared = ridge.score(X_test, y_test)
print("R-squared:", r_squared)

# 繪制實際值和預測值的散點圖
plt.scatter(y_test, ridge.predict(X_test))
plt.xlabel("Actual Values")
plt.ylabel("Predicted Values")
plt.title("Ridge Regression: Actual vs. Predicted")
plt.show()
這個示例演示了如何使用嶺回歸來處理多重共線性問題,并可視化實際值與預測值之間的關系。
要注意的是,可以調整超參數alpha的值以控制正則化的強度。

Lasso回歸(Lasso Regression)

Lasso回歸(Least Absolute Shrinkage and Selection Operator Regression)是一種線性回歸的變體,它用于數據特征選擇和降維。
與普通線性回歸不同,Lasso回歸通過對系數進行正則化來懲罰模型中的不重要的特征,以促使模型選擇更少的特征,從而提高模型的泛化能力。
正則化通過在損失函數中添加系數的絕對值之和來實現,這迫使一些系數變為零,從而實現特征選擇的效果。
Lasso回歸的損失函數如下所示:
其中:
  •  是樣本數
  •  是觀測到的目標值
  •  是模型預測的目標值
  •  是特征的數量
  •  是特征  的系數
  •  是正則化參數,控制著正則化的強度。較大的  值將導致更多的特征系數為零。
以下是一個Python/ target=_blank class=infotextkey>Python案例,演示如何使用Lasso回歸擬合一個數據集并可視化結果。我們將使用一個合成的數據集來說明,該數據集包含兩個特征和一個目標變量。

 
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_regression
from sklearn.linear_model import Lasso
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error

# 生成合成數據集
X, y = make_regression(n_samples=100, n_features=2, noise=0.5, random_state=42)

# 將數據集分為訓練集和測試集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 創建Lasso回歸模型
alpha = 1.0  # 正則化參數
lasso = Lasso(alpha=alpha)

# 擬合模型
lasso.fit(X_train, y_train)

# 預測測試集
y_pred = lasso.predict(X_test)

# 計算均方誤差
mse = mean_squared_error(y_test, y_pred)
print(f"Mean Squared Error: {mse:.2f}")

# 繪制特征系數
plt.figure(figsize=(10, 5))
plt.subplot(1, 2, 1)
plt.scatter(X[:, 0], y, label='Feature 1')
plt.scatter(X[:, 1], y, label='Feature 2')
plt.xlabel('Features')
plt.ylabel('Target')
plt.title('Original Data')
plt.legend()

plt.subplot(1, 2, 2)
plt.bar(['Feature 1', 'Feature 2'], lasso.coef_)
plt.xlabel('Features')
plt.ylabel('Coefficient Value')
plt.title('Lasso Coefficients')
plt.show()
上述代碼演示了如何使用Lasso回歸對合成數據集進行建模,并且展示了特征系數的可視化。
實際情況中,可以根據自己的數據集和需求調整代碼來使用Lasso回歸進行特征選擇和建模。

彈性網絡回歸(Elastic.NET Regression)

彈性網絡回歸(Elastic Net Regression)是一種用于處理回歸問題的線性模型,它結合了L1正則化(Lasso正則化)和L2正則化(Ridge正則化)的特性,以解決特征選擇和過擬合問題。
它的損失函數由兩部分組成,一部分是均方誤差(Mean Squared Error,MSE),另一部分是L1L2正則化項的組合。
公式如下:
其中:
  • 是均方誤差,用來衡量模型預測值與實際值之間的差距。
  • λ()是正則化參數,用于控制正則化的強度。
  • 是L1正則化的項,它是模型系數的絕對值之和。
  • 是L2正則化的項,它是模型系數的平方和。
  • α()是一個介于0和1之間的參數,用于權衡L1L2正則化的貢獻。當α時,模型等同于Ridge回歸,當α時,模型等同于Lasso回歸。
下面案例演示如何使用彈性網絡回歸處理一個數據集,并繪制可視化圖表。
同樣的也是使用一個自動生成的示例數據集。

 
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import ElasticNet
from sklearn.datasets import make_regression

# 生成示例數據集
X, y = make_regression(n_samples=100, n_features=1, noise=10, random_state=42)

# 創建彈性網絡回歸模型
elastic_net = ElasticNet(alpha=0.5, l1_ratio=0.5, random_state=42)

# 擬合模型
elastic_net.fit(X, y)

# 預測
y_pred = elastic_net.predict(X)

# 繪制原始數據和擬合線
plt.scatter(X, y, label='Actual Data', color='b')
plt.plot(X, y_pred, label='Elastic Net Regression', color='r')
plt.xlabel('X')
plt.ylabel('y')
plt.legend()
plt.title('Elastic Net Regression')
plt.show()

# 打印模型系數
print("Elastic Net Coefficients:")
print("Intercept:", elastic_net.intercept_)
print("Coefficient:", elastic_net.coef_)
在這個案例中,我們首先生成了一個簡單的示例數據集,然后創建了一個彈性網絡回歸模型,擬合數據并進行了預測。

 
Elastic Net Coefficients:
Intercept: 0.05906898426354079
Coefficient: [33.78639071]
最后,我們使用Matplotlib繪制了原始數據和擬合線的可視化圖表,并打印了模型的系數。
你可以根據自己的需求和數據集來調整正則化參數α和λ以及數據集的大小以獲得更好的效果和可視化。

邏輯斯蒂回歸(Logistic Regression)

邏輯斯蒂回歸(Logistic Regression)是一種用于分類問題的統計學習方法。
通過建立一個邏輯斯蒂函數(也稱為S型函數)來預測二分類問題中的概率。
邏輯斯蒂函數將輸入值映射到0和1之間的概率值,通常用于估計某個事件發生的概率。
數學表達式:
 
其中:
  •  是觀測到類別1的概率。
  •  是輸入特征向量。
  •  是特征權重向量。
  •  是偏置項。
  •  是自然對數的底數。
通過訓練,我們可以找到最佳的權重和偏置項來最大程度地擬合訓練數據,從而用于分類新的數據點。
以下演示如何使用邏輯斯蒂回歸進行分類,并使用可視化圖表展示結果。

 
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_classification
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, confusion_matrix
from sklearn.preprocessing import StandardScaler

# 生成模擬數據
X, y = make_classification(n_samples=1000, n_features=2, n_classes=2, n_clusters_per_class=1, n_redundant=0, random_state=42)

# 數據標準化
scaler = StandardScaler()
X = scaler.fit_transform(X)

# 劃分訓練集和測試集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 訓練邏輯斯蒂回歸模型
model = LogisticRegression()
model.fit(X_train, y_train)

# 預測
y_pred = model.predict(X_test)

# 計算準確率
accuracy = accuracy_score(y_test, y_pred)
print(f'Accuracy: {accuracy:.2f}')

# 繪制決策邊界和數據點
xx, yy = np.meshgrid(np.linspace(X[:, 0].min() - 1, X[:, 0].max() + 1, 100),
                     np.linspace(X[:, 1].min() - 1, X[:, 1].max() + 1, 100))
Z = model.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)

plt.contourf(xx, yy, Z, cmap=plt.cm.RdBu, alpha=0.8)
plt.scatter(X[:, 0], X[:, 1], c=y, cmap=plt.cm.RdBu, marker='o')
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.title('Logistic Regression Decision Boundary')
plt.show()
這個示例生成了一個模擬的二分類數據集,并使用邏輯斯蒂回歸模型進行訓練和預測。
最后,通過繪制決策邊界和數據點的可視化圖表來展示模型的分類效果。

決策樹回歸(Decision Tree Regression)

決策樹回歸(Decision Tree Regression)是一種用于預測連續型目標變量的機器學習方法。
與分類決策樹不同,決策樹回歸的目標是通過構建樹狀結構來擬合數據,以便對連續值的輸出進行預測。
決策樹回歸的主要思想是將數據集分割成不同的子集,然后在每個子集上擬合一個簡單的線性模型(通常是均值),最終形成一個樹狀結構,使得每個葉節點都包含一個用于預測的數值。
以下展示如何使用決策樹回歸來預測房屋價格的案例。
使用sklearn庫進行建模和可視化。

 
import numpy as np
import matplotlib.pyplot as plt
from sklearn.tree import DecisionTreeRegressor

# 創建一個模擬數據集
np.random.seed(0)
X = np.sort(5 * np.random.rand(80, 1), axis=0)
y = np.sin(X).ravel() + np.random.normal(0, 0.1, X.shape[0])

# 訓練決策樹回歸模型
regressor = DecisionTreeRegressor(max_depth=5)
regressor.fit(X, y)

# 生成預測結果
X_test = np.arange(0.0, 5.0, 0.01)[:, np.newaxis]
y_pred = regressor.predict(X_test)

# 繪制原始數據和決策樹回歸結果
plt.figure()
plt.scatter(X, y, s=20, edgecolor="black", c="darkorange", label="data")
plt.plot(X_test, y_pred, color="cornflowerblue", linewidth=2, label="prediction")
plt.xlabel("data")
plt.ylabel("target")
plt.title("Decision Tree Regression")
plt.legend()
plt.show()
上面案例中,我們首先生成了一個模擬數據集,然后使用決策樹回歸模型對數據進行擬合,并生成了預測結果的可視化圖表。
這個圖表展示了原始數據點和決策樹回歸模型的擬合曲線。
你可以根據實際情況替換數據集和調整模型的參數來適應不同的案例。這個案例提供了一個簡單的起點,幫助大家了解如何使用決策樹回歸來解決回歸問題,并可視化結果。

隨機森林回歸(Random Forest Regression)

隨機森林回歸(Random Forest Regression)是一種集成學習方法,用于解決回歸問題。
基于多個決策樹構建,通過組合這些樹的預測結果來提高模型的性能和穩定性。
隨機森林回歸簡要介紹:
  • 隨機性:隨機森林采用隨機抽樣技術,從訓練數據中隨機選擇樣本,并在每個決策樹的節點上隨機選擇特征,以降低過擬合的風險。

  • 集成:多個決策樹的預測結果被組合,通常采用平均值(對于回歸問題)或投票(對于分類問題)來生成最終的預測結果,這有助于降低模型的方差。

  • 特征選擇:在構建每個決策樹時,隨機森林只考慮特征的隨機子集,從而增加了模型的多樣性。

  • 魯棒性:由于隨機森林由多個決策樹組成,它對于噪聲和異常值的魯棒性較高,可以提供更穩定的預測。

隨機森林回歸的公式與上述提到的相同,即預測值是多個決策樹預測結果的平均值。
假設我們有一個回歸問題,其中我們希望預測目標變量 ,并且我們有一個包含  個樣本的訓練數據集,其中每個樣本有  個特征。
目標是使用隨機森林回歸來預測目標變量。
隨機森林回歸的預測值 可以通過多個決策樹的預測結果的平均值來計算:
 
其中:
  •  是隨機森林中的決策樹數量。
  •  是第  個決策樹的預測值。
這個公式表示隨機森林回歸的最終預測是多個決策樹預測的平均值。由于隨機性和多樣性,隨機森林通常能夠提供較穩定和準確的回歸預測。
下面,將使用隨機森林回歸來預測氣溫。

 
import numpy as np
import matplotlib.pyplot as plt
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_squared_error

# 創建一個示例數據集
np.random.seed(0)
X = np.sort(5 * np.random.rand(80, 1), axis=0)
y = np.sin(X).ravel() + np.random.rand(80)

# 創建隨機森林回歸模型
rf_regressor = RandomForestRegressor(n_estimators=100, random_state=42)

# 訓練模型
rf_regressor.fit(X, y)

# 預測
X_test = np.arange(0.0, 5.0, 0.01)[:, np.newaxis]
y_pred = rf_regressor.predict(X_test)

# 計算均方誤差
mse = mean_squared_error(y, rf_regressor.predict(X))
print("Mean Squared Error:", mse)

# 繪制真實值和預測值的可視化圖表
plt.figure(figsize=(10, 6))
plt.scatter(X, y, s=20, edgecolor="black", c="darkorange", label="data")
plt.plot(X_test, y_pred, color="cornflowerblue", linewidth=2, label="prediction")
plt.xlabel("data")
plt.ylabel("target")
plt.title("Random Forest Regression")
plt.legend()
plt.show()
這個示例使用隨機森林回歸模型來擬合一個帶有噪聲的正弦曲線,并繪制出真實值和模型預測值的可視化圖表,以及均方誤差(Mean Squared Error)作為性能指標。

最后

今天介紹了8個機器學習中回歸類算法的總結,以及不同情況使用的特征。
另外,更多展現方式以及使用技巧可以從官方文檔獲取以及實戰中領略!
喜歡的朋友可以收藏、點贊、轉發起來!
關注本號,帶來更多干貨實例,提升工作學習效率!

分享到:
標簽:算法 回歸
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定