自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

超強(qiáng)!必會(huì)的十大機(jī)器學(xué)習(xí)算法

人工智能 機(jī)器學(xué)習(xí)
梯度提升是一種先進(jìn)的機(jī)器學(xué)習(xí)技術(shù)。它依次構(gòu)建多個(gè)弱預(yù)測(cè)模型(通常是決策樹)。每個(gè)新模型都逐漸最小化整個(gè)模型的損失函數(shù)(誤差)。

1.線性回歸

線性回歸是用于預(yù)測(cè)建模的最簡(jiǎn)單且使用最廣泛的機(jī)器學(xué)習(xí)算法之一。

它是一種監(jiān)督學(xué)習(xí)算法,用于根據(jù)一個(gè)或多個(gè)自變量預(yù)測(cè)因變量的值。

定義

線性回歸的核心是根據(jù)觀察到的數(shù)據(jù)擬合線性模型。

線性模型由以下方程表示:

其中

  •  是因變量(我們想要預(yù)測(cè)的變量)
  •  是自變量(我們用來進(jìn)行預(yù)測(cè)的變量)
  •  是直線的斜率
  •  是 y 軸截距(直線與 y 軸的交點(diǎn))

線性回歸算法涉及找到通過數(shù)據(jù)點(diǎn)的最佳擬合線。這通常是通過最小化觀測(cè)值和預(yù)測(cè)值之間的平方差之和來完成的。

評(píng)估指標(biāo)

  • 均方誤差 (MSE):測(cè)量誤差平方的平均值。值越低越好。
  • R平方:表示可以根據(jù)自變量預(yù)測(cè)的因變量變異的百分比。越接近 1 越好。
from sklearn.datasets import load_diabetes
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score

# Load the Diabetes dataset
diabetes = load_diabetes()
X, y = diabetes.data, diabetes.target

# Splitting the dataset into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Creating and training the Linear Regression model
model = LinearRegression()
model.fit(X_train, y_train)

# Predicting the test set results
y_pred = model.predict(X_test)

# Evaluating the model
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)

print("MSE is:", mse)
print("R2 score is:", r2)

2.邏輯回歸

邏輯回歸用于分類問題。它預(yù)測(cè)給定數(shù)據(jù)點(diǎn)屬于某個(gè)類別的概率,例如是/否或 0/1。

評(píng)估指標(biāo)
  • 準(zhǔn)確度:準(zhǔn)確度是正確預(yù)測(cè)的觀測(cè)值與總觀測(cè)值的比率。
  • 精確度和召回率:精確度是正確預(yù)測(cè)的正觀察值與所有預(yù)期的正觀察值的比率。召回率是正確預(yù)測(cè)的積極觀察與實(shí)際中所有觀察的比例。
  • F1 分?jǐn)?shù):召回率和精確率之間的平衡。
from sklearn.datasets import load_breast_cancer
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score


# Load the Breast Cancer dataset
breast_cancer = load_breast_cancer()
X, y = breast_cancer.data, breast_cancer.target

# Splitting the dataset into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Creating and training the Logistic Regression model
model = LogisticRegression(max_iter=10000)
model.fit(X_train, y_train)

# Predicting the test set results
y_pred = model.predict(X_test)

# Evaluating the model
accuracy = accuracy_score(y_test, y_pred)
precision = precision_score(y_test, y_pred)
recall = recall_score(y_test, y_pred)
f1 = f1_score(y_test, y_pred)

# Print the results
print("Accuracy:", accuracy)
print("Precision:", precision)
print("Recall:", recall)
print("F1 Score:", f1)

3.決策樹

決策樹是多功能且強(qiáng)大的機(jī)器學(xué)習(xí)算法,可用于分類和回歸任務(wù)。

它們因其簡(jiǎn)單性、可解釋性以及處理數(shù)值和分類數(shù)據(jù)的能力而廣受歡迎。

定義

決策樹由代表決策點(diǎn)的節(jié)點(diǎn)、代表可能結(jié)果的分支以及代表最終決策或預(yù)測(cè)的葉子組成。

決策樹中的每個(gè)節(jié)點(diǎn)對(duì)應(yīng)一個(gè)特征,分支代表該特征的可能值。

構(gòu)建決策樹的算法涉及根據(jù)不同特征的值遞歸地將數(shù)據(jù)集分割成子集。目標(biāo)是創(chuàng)建同質(zhì)子集,其中目標(biāo)變量(我們想要預(yù)測(cè)的變量)在每個(gè)子集中都是相似的。

分裂過程持續(xù)進(jìn)行,直到滿足停止標(biāo)準(zhǔn),例如達(dá)到最大深度、最小樣本數(shù),或者無法進(jìn)行進(jìn)一步改進(jìn)。

評(píng)估指標(biāo)

  • 對(duì)于分類:準(zhǔn)確率、精確率、召回率和 F1 分?jǐn)?shù)
  • 對(duì)于回歸:均方誤差 (MSE)、R 平方
from sklearn.datasets import load_wine
from sklearn.tree import DecisionTreeClassifier

# Load the Wine dataset
wine = load_wine()
X, y = wine.data, wine.target

# Splitting the dataset into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Creating and training the Decision Tree model
model = DecisionTreeClassifier(random_state=42)
model.fit(X_train, y_train)

# Predicting the test set results
y_pred = model.predict(X_test)

# Evaluating the model
accuracy = accuracy_score(y_test, y_pred)
precision = precision_score(y_test, y_pred, average='macro')
recall = recall_score(y_test, y_pred, average='macro')
f1 = f1_score(y_test, y_pred, average='macro')

# Print the results
print("Accuracy:", accuracy)
print("Precision:", precision)
print("Recall:", recall)
print("F1 Score:", f1)

4.樸素貝葉斯

樸素貝葉斯分類器是一系列簡(jiǎn)單的 “概率分類器”,它們使用貝葉斯定理和特征之間的強(qiáng)(樸素)獨(dú)立性假設(shè)。它特別用于文本分類。

它計(jì)算給定每個(gè)輸入值的每個(gè)類別的概率和每個(gè)類別的條件概率。然后使用這些概率根據(jù)最高概率對(duì)新值進(jìn)行分類。

評(píng)估指標(biāo):

  • 準(zhǔn)確性:衡量模型的整體正確性。
  • 精確率、召回率和 F1 分?jǐn)?shù):在類別分布不平衡的情況下尤其重要。
from sklearn.datasets import load_digits
from sklearn.naive_bayes import GaussianNB

# Load the Digits dataset
digits = load_digits()
X, y = digits.data, digits.target

# Splitting the dataset into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Creating and training the Naive Bayes model
model = GaussianNB()
model.fit(X_train, y_train)

# Predicting the test set results
y_pred = model.predict(X_test)

# Evaluating the model
accuracy = accuracy_score(y_test, y_pred)
precision = precision_score(y_test, y_pred, average='macro')
recall = recall_score(y_test, y_pred, average='macro')
f1 = f1_score(y_test, y_pred, average='macro')

# Print the results
print("Accuracy:", accuracy)
print("Precision:", precision)
print("Recall:", recall)
print("F1 Score:", f1)

5.K-最近鄰(KNN)

K 最近鄰 (KNN) 是一種簡(jiǎn)單直觀的機(jī)器學(xué)習(xí)算法,用于分類和回歸任務(wù)。

它根據(jù)輸入數(shù)據(jù)點(diǎn)與其在特征空間中最近鄰居的相似性進(jìn)行預(yù)測(cè)。

在 KNN 中,新數(shù)據(jù)點(diǎn)的預(yù)測(cè)由其 k 個(gè)最近鄰的多數(shù)類(用于分類)或平均值(用于回歸)確定。KNN 中的 “k” 表示要考慮的鄰居數(shù)量,這是用戶選擇的超參數(shù)。

算法

KNN 算法包括以下步驟

  1. 計(jì)算距離:計(jì)算新數(shù)據(jù)點(diǎn)與數(shù)據(jù)集中所有其他數(shù)據(jù)點(diǎn)之間的距離。
  2. 查找鄰居:根據(jù)計(jì)算的距離選擇 k 個(gè)最近鄰居。
  3. 多數(shù)投票或平均:對(duì)于分類,分配 k 個(gè)鄰居中出現(xiàn)最頻繁的類標(biāo)簽。對(duì)于回歸,計(jì)算 k 個(gè)鄰居的目標(biāo)變量的平均值。
  4. 進(jìn)行預(yù)測(cè):將預(yù)測(cè)的類標(biāo)簽或值分配給新數(shù)據(jù)點(diǎn)。

評(píng)估指標(biāo)

  • 「分類」:準(zhǔn)確率、精確率、召回率、F1 分?jǐn)?shù)。
  • 「回歸」:均方誤差 (MSE)、R 平方。
from sklearn.datasets import load_wine
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score

# Load the Wine dataset
wine = load_wine()
X, y = wine.data, wine.target

# Splitting the dataset into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Creating and training the KNN model
knn_model = KNeighborsClassifier(n_neighbors=3)
knn_model.fit(X_train, y_train)

# Predicting the test set results
y_pred_knn = knn_model.predict(X_test)

# Evaluating the model
accuracy_knn = accuracy_score(y_test, y_pred_knn)
precision_knn = precision_score(y_test, y_pred_knn, average='macro')
recall_knn = recall_score(y_test, y_pred_knn, average='macro')
f1_knn = f1_score(y_test, y_pred_knn, average='macro')

# Print the results
print("Accuracy:", accuracy_knn)
print("Precision:", precision_knn)
print("Recall:", recall_knn)
print("F1 Score:", f1_knn)

6.SVM

支持向量機(jī) (SVM) 是一種強(qiáng)大的監(jiān)督學(xué)習(xí)算法,用于分類和回歸任務(wù)。

它們?cè)诟呔S空間中特別有效,廣泛應(yīng)用于圖像分類、文本分類和生物信息學(xué)等各個(gè)領(lǐng)域。

算法原理

支持向量機(jī)的工作原理是找到最能將數(shù)據(jù)分為不同類別的超平面。

選擇超平面以最大化邊距,即超平面與每個(gè)類的最近數(shù)據(jù)點(diǎn)(支持向量)之間的距離。

SVM 還可以通過使用核函數(shù)將輸入空間轉(zhuǎn)換為可以線性分離的高維空間來處理非線性數(shù)據(jù)。

訓(xùn)練 SVM 的算法包括以下步驟:

  1. 數(shù)據(jù)準(zhǔn)備:預(yù)處理數(shù)據(jù)并根據(jù)需要對(duì)分類變量進(jìn)行編碼。
  2. 選擇核:選擇合適的核函數(shù),例如線性、多項(xiàng)式或徑向基函數(shù) (RBF)。
  3. 模型訓(xùn)練:通過尋找使類之間的間隔最大化的超平面來訓(xùn)練 SVM。
  4. 模型評(píng)估:使用交叉驗(yàn)證或保留驗(yàn)證集評(píng)估 SVM 的性能。

評(píng)估指標(biāo)

  • 「分類」:準(zhǔn)確率、精確率、召回率、F1 分?jǐn)?shù)。
  • 「回歸」:均方誤差 (MSE)、R 平方。
from sklearn.svm import SVC

breast_cancer = load_breast_cancer()
X, y = breast_cancer.data, breast_cancer.target

# Splitting the dataset into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Creating and training the SVM model
svm_model = SVC()
svm_model.fit(X_train, y_train)

# Predicting the test set results
y_pred_svm = svm_model.predict(X_test)

# Evaluating the model
accuracy_svm = accuracy_score(y_test, y_pred_svm)
precision_svm = precision_score(y_test, y_pred_svm, average='macro')
recall_svm = recall_score(y_test, y_pred_svm, average='macro')
f1_svm = f1_score(y_test, y_pred_svm, average='macro')

accuracy_svm, precision_svm, recall_svm, f1_svm

# Print the results
print("Accuracy:", accuracy_svm)
print("Precision:", precision_svm)
print("Recall:", recall_svm)
print("F1 Score:", f1_svm)

7.隨機(jī)森林

隨機(jī)森林是一種集成學(xué)習(xí)技術(shù),它結(jié)合了多個(gè)決策樹來提高預(yù)測(cè)性能并減少過度擬合。

它們廣泛用于分類和回歸任務(wù),并以其魯棒性和多功能性而聞名。

算法步驟

隨機(jī)森林是根據(jù)數(shù)據(jù)集的隨機(jī)子集并使用特征的隨機(jī)子集進(jìn)行訓(xùn)練的決策樹的集合。

森林中的每棵決策樹獨(dú)立地進(jìn)行預(yù)測(cè),最終的預(yù)測(cè)是通過聚合所有樹的預(yù)測(cè)來確定的。

構(gòu)建隨機(jī)森林的算法包括以下步驟

  1. 隨機(jī)采樣:從數(shù)據(jù)集中隨機(jī)選擇樣本子集(帶替換)來訓(xùn)練每棵樹。
  2. 特征隨機(jī)化:隨機(jī)選擇每個(gè)節(jié)點(diǎn)的特征子集以考慮分割。
  3. 樹構(gòu)建:使用采樣數(shù)據(jù)和特征構(gòu)建多個(gè)決策樹。
  4. 投票或平均:聚合所有樹的預(yù)測(cè)以做出最終預(yù)測(cè)。

評(píng)估指標(biāo)

  • 分類:準(zhǔn)確率、精確率、召回率、F1 分?jǐn)?shù)。
  • 回歸:均方誤差 (MSE)、R 平方。
from sklearn.ensemble import RandomForestClassifier

breast_cancer = load_breast_cancer()
X, y = breast_cancer.data, breast_cancer.target

# Splitting the dataset into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)


# Creating and training the Random Forest model
rf_model = RandomForestClassifier(random_state=42)
rf_model.fit(X_train, y_train)

# Predicting the test set results
y_pred_rf = rf_model.predict(X_test)

# Evaluating the model
accuracy_rf = accuracy_score(y_test, y_pred_rf)
precision_rf = precision_score(y_test, y_pred_rf, average='macro')
recall_rf = recall_score(y_test, y_pred_rf, average='macro')
f1_rf = f1_score(y_test, y_pred_rf, average='macro')

# Print the results
print("Accuracy:", accuracy)
print("Precision:", precision)
print("Recall:", recall)
print("F1 Score:", f1)

8.K-均值聚類

K 均值聚類是一種無監(jiān)督學(xué)習(xí)算法,用于將數(shù)據(jù)分組為 “K” 個(gè)聚類。確定 k 個(gè)質(zhì)心后,每個(gè)數(shù)據(jù)點(diǎn)被分配到最近的簇。

該算法將數(shù)據(jù)點(diǎn)分配給一個(gè)簇,使得數(shù)據(jù)點(diǎn)與簇質(zhì)心之間的平方距離之和最小。

評(píng)估指標(biāo)

  • 「慣性」:樣本到最近聚類中心的總平方距離稱為慣性。值越低越好。
  • 「Silhouette Score」:表示一個(gè)項(xiàng)目屬于其自身集群的緊密程度。高輪廓分?jǐn)?shù)意味著該項(xiàng)目與其自身的集群匹配良好,而與附近的集群匹配不佳。輪廓得分從 -1 到 1。
from sklearn.datasets import load_iris
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score

# Load the Iris dataset
iris = load_iris()
X = iris.data

# Applying K-Means Clustering
kmeans = KMeans(n_clusters=3, random_state=42)
kmeans.fit(X)

# Predicting the cluster for each data point
y_pred_clusters = kmeans.predict(X)

# Evaluating the model
inertia = kmeans.inertia_
silhouette = silhouette_score(X, y_pred_clusters)

print("Inertia:", inertia)
print("Silhouette:", silhouette)

9.PCA

降維是通過使用主成分分析 (PCA) 來完成的。它將數(shù)據(jù)轉(zhuǎn)換為新的坐標(biāo)系,減少變量數(shù)量,同時(shí)盡可能多地保留原始數(shù)據(jù)的變化。

使用 PCA 可以找到使數(shù)據(jù)方差最大化的主要成分或軸。第一個(gè)主成分捕獲最大方差,第二個(gè)主成分(與第一個(gè)主成分正交)捕獲第二大方差,依此類推。

評(píng)估指標(biāo)

  • 「解釋方差」:表示每個(gè)主成分捕獲的數(shù)據(jù)方差有多少。
  • 「總解釋方差」:由所選主成分解釋的累積方差。
from sklearn.datasets import load_breast_cancer
from sklearn.decomposition import PCA
import numpy as np

# Load the Breast Cancer dataset
breast_cancer = load_breast_cancer()
X = breast_cancer.data

# Applying PCA
pca = PCA(n_compnotallow=2)  # Reducing to 2 dimensions for simplicity
pca.fit(X)

# Transforming the data
X_pca = pca.transform(X)

# Explained Variance
explained_variance = pca.explained_variance_ratio_

# Total Explained Variance
total_explained_variance = np.sum(explained_variance)

print("Explained variance:", explained_variance)
print("Total Explained Variance:", total_explained_variance)

10.梯度提升算法

梯度提升是一種先進(jìn)的機(jī)器學(xué)習(xí)技術(shù)。它依次構(gòu)建多個(gè)弱預(yù)測(cè)模型(通常是決策樹)。每個(gè)新模型都逐漸最小化整個(gè)模型的損失函數(shù)(誤差)。

評(píng)估指標(biāo)

  • 「對(duì)于分類」:準(zhǔn)確率、精確率、召回率、F1 分?jǐn)?shù)。
  • 「對(duì)于回歸」:均方誤差 (MSE)、R 平方。
from sklearn.datasets import load_diabetes
from sklearn.ensemble import GradientBoostingRegressor
from sklearn.metrics import mean_squared_error, r2_score

# Load the Diabetes dataset
diabetes = load_diabetes()
X, y = diabetes.data, diabetes.target

# Splitting the dataset into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Creating and training the Gradient Boosting model
gb_model = GradientBoostingRegressor(random_state=42)
gb_model.fit(X_train, y_train)

# Predicting the test set results
y_pred_gb = gb_model.predict(X_test)

# Evaluating the model
mse_gb = mean_squared_error(y_test, y_pred_gb)
r2_gb = r2_score(y_test, y_pred_gb)

print("MSE:", mse_gb)


責(zé)任編輯:武曉燕 來源: 程序員學(xué)長(zhǎng)
相關(guān)推薦

2022-08-26 14:46:31

機(jī)器學(xué)習(xí)算法線性回歸

2024-09-11 08:32:07

2022-05-11 15:20:31

機(jī)器學(xué)習(xí)算法預(yù)測(cè)

2022-09-04 19:38:11

機(jī)器學(xué)習(xí)算法

2016-12-01 07:41:37

機(jī)器學(xué)習(xí)常用算法

2017-04-18 09:46:31

機(jī)器學(xué)習(xí)工程師算法

2017-12-16 11:50:56

機(jī)器學(xué)習(xí)常用算法

2020-03-06 10:45:48

機(jī)器學(xué)習(xí)人工智能神經(jīng)網(wǎng)絡(luò)

2024-07-29 15:07:16

2022-04-19 08:29:12

Python機(jī)器學(xué)習(xí)

2020-11-25 10:40:58

程序員技能開發(fā)者

2020-05-20 07:00:00

機(jī)器學(xué)習(xí)人工智能AI

2018-01-04 08:52:17

機(jī)器學(xué)習(xí)算法移動(dòng)醫(yī)療統(tǒng)計(jì)技術(shù)

2018-09-12 10:10:09

2022-08-15 09:34:56

機(jī)器學(xué)習(xí)人工智能

2025-04-08 01:11:00

算法FFT排序

2021-01-17 23:03:15

機(jī)器學(xué)習(xí)開源人工智能

2021-02-03 05:26:49

機(jī)器學(xué)習(xí)存儲(chǔ)AI

2020-11-05 11:08:11

人工智能

2017-10-30 14:56:04

機(jī)器學(xué)習(xí)算法非監(jiān)督學(xué)習(xí)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)