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

Python 機(jī)器學(xué)習(xí)中 14 個(gè)常用算法實(shí)現(xiàn)

開發(fā) 后端 機(jī)器學(xué)習(xí)
本文將介紹14種常用的機(jī)器學(xué)習(xí)算法,并通過實(shí)際代碼示例來幫助讀者更好地理解和應(yīng)用這些算法。

機(jī)器學(xué)習(xí)作為人工智能的一個(gè)重要分支,在當(dāng)今社會(huì)的應(yīng)用越來越廣泛。從簡(jiǎn)單的線性回歸到復(fù)雜的集成學(xué)習(xí)方法,每種算法都有其獨(dú)特的應(yīng)用場(chǎng)景。本文將介紹14種常用的機(jī)器學(xué)習(xí)算法,并通過實(shí)際代碼示例來幫助讀者更好地理解和應(yīng)用這些算法。

1. 線性回歸

線性回歸是預(yù)測(cè)連續(xù)值的一種方法。比如,根據(jù)房屋面積預(yù)測(cè)房?jī)r(jià)。

代碼示例:

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

# 創(chuàng)建數(shù)據(jù)集
X = np.array([[1], [2], [3], [4], [5], [6]])
y = np.array([2, 4, 5, 4, 5, 7])

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

# 創(chuàng)建模型
model = LinearRegression()

# 訓(xùn)練模型
model.fit(X_train, y_train)

# 預(yù)測(cè)
predictions = model.predict(X_test)

# 可視化結(jié)果
plt.scatter(X, y, color='blue', label='Actual')
plt.plot(X, model.predict(X), color='red', label='Predicted')
plt.xlabel('Area (sq ft)')
plt.ylabel('Price ($)')
plt.legend()
plt.show()

這段代碼展示了如何使用LinearRegression類創(chuàng)建模型。它會(huì)根據(jù)給定的數(shù)據(jù)點(diǎn)畫出一條直線,盡可能地貼近這些點(diǎn)。

2. 邏輯回歸

邏輯回歸用于分類問題。比如,判斷一封郵件是否為垃圾郵件。

代碼示例:

from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# 加載數(shù)據(jù)集
data = load_iris()
X = data.data
y = data.target

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

# 創(chuàng)建模型
model = LogisticRegression()

# 訓(xùn)練模型
model.fit(X_train, y_train)

# 預(yù)測(cè)
predictions = model.predict(X_test)

# 模型評(píng)估
accuracy = accuracy_score(y_test, predictions)
print(f"Accuracy: {accuracy * 100:.2f}%")

這段代碼展示了如何使用LogisticRegression類創(chuàng)建模型。accuracy_score函數(shù)用來評(píng)估模型的準(zhǔn)確性。

3. 決策樹

決策樹可以解決分類和回歸問題。比如,決定是否批準(zhǔn)一筆貸款。

代碼示例:

from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from sklearn.datasets import load_iris

# 加載數(shù)據(jù)集
data = load_iris()
X = data.data
y = data.target

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

# 創(chuàng)建模型
model = DecisionTreeClassifier()

# 訓(xùn)練模型
model.fit(X_train, y_train)

# 預(yù)測(cè)
predictions = model.predict(X_test)

# 模型評(píng)估
accuracy = accuracy_score(y_test, predictions)
print(f"Accuracy: {accuracy * 100:.2f}%")

這段代碼展示了如何使用DecisionTreeClassifier類創(chuàng)建模型。通過劃分?jǐn)?shù)據(jù),模型能夠做出決策。

4. 支持向量機(jī)(SVM)

支持向量機(jī)用于分類和回歸問題。比如,識(shí)別手寫數(shù)字。

代碼示例:

from sklearn.svm import SVC
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from sklearn.datasets import load_digits

# 加載數(shù)據(jù)集
data = load_digits()
X = data.data
y = data.target

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

# 創(chuàng)建模型
model = SVC()

# 訓(xùn)練模型
model.fit(X_train, y_train)

# 預(yù)測(cè)
predictions = model.predict(X_test)

# 模型評(píng)估
accuracy = accuracy_score(y_test, predictions)
print(f"Accuracy: {accuracy * 100:.2f}%")

這段代碼展示了如何使用SVC類創(chuàng)建模型。SVM會(huì)在數(shù)據(jù)中找到最佳的邊界來區(qū)分不同類別。

5. K-近鄰算法(KNN)

K-近鄰算法用于分類和回歸問題。比如,判斷一款游戲是否受歡迎。

代碼示例:

from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from sklearn.datasets import load_iris

# 加載數(shù)據(jù)集
data = load_iris()
X = data.data
y = data.target

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

# 創(chuàng)建模型
model = KNeighborsClassifier(n_neighbors=3)

# 訓(xùn)練模型
model.fit(X_train, y_train)

# 預(yù)測(cè)
predictions = model.predict(X_test)

# 模型評(píng)估
accuracy = accuracy_score(y_test, predictions)
print(f"Accuracy: {accuracy * 100:.2f}%")

這段代碼展示了如何使用KNeighborsClassifier類創(chuàng)建模型。KNN會(huì)根據(jù)最近的鄰居來判斷數(shù)據(jù)點(diǎn)的類別。

6. 隨機(jī)森林

隨機(jī)森林是一種集成學(xué)習(xí)方法,用于分類和回歸問題。比如,預(yù)測(cè)股票價(jià)格。

代碼示例:

from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from sklearn.datasets import load_iris

# 加載數(shù)據(jù)集
data = load_iris()
X = data.data
y = data.target

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

# 創(chuàng)建模型
model = RandomForestClassifier(n_estimators=100)

# 訓(xùn)練模型
model.fit(X_train, y_train)

# 預(yù)測(cè)
predictions = model.predict(X_test)

# 模型評(píng)估
accuracy = accuracy_score(y_test, predictions)
print(f"Accuracy: {accuracy * 100:.2f}%")

這段代碼展示了如何使用RandomForestClassifier類創(chuàng)建模型。隨機(jī)森林通過多個(gè)決策樹的投票來做出最終的決策。

7. 主成分分析(PCA)

主成分分析用于降維。比如,簡(jiǎn)化高維數(shù)據(jù)集。

代碼示例:

from sklearn.decomposition import PCA
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt

# 加載數(shù)據(jù)集
data = load_iris()
X = data.data
y = data.target

# 創(chuàng)建PCA模型
pca = PCA(n_components=2)

# 轉(zhuǎn)換數(shù)據(jù)
X_pca = pca.fit_transform(X)

# 可視化結(jié)果
plt.scatter(X_pca[:, 0], X_pca[:, 1], c=y, cmap='viridis')
plt.xlabel('First Principal Component')
plt.ylabel('Second Principal Component')
plt.title('PCA of Iris Dataset')
plt.show()

這段代碼展示了如何使用PCA類進(jìn)行數(shù)據(jù)降維。通過將數(shù)據(jù)投影到新的坐標(biāo)軸上,PCA能夠保留數(shù)據(jù)的主要特征。

8. 聚類算法(K-Means)

聚類算法用于無監(jiān)督學(xué)習(xí)。比如,將顧客分成不同的群體。

代碼示例:

from sklearn.cluster import KMeans
from sklearn.datasets import make_blobs
import matplotlib.pyplot as plt

# 創(chuàng)建數(shù)據(jù)集
X, _ = make_blobs(n_samples=300, centers=4, random_state=42)

# 創(chuàng)建KMeans模型
kmeans = KMeans(n_clusters=4)

# 訓(xùn)練模型
kmeans.fit(X)

# 預(yù)測(cè)
labels = kmeans.predict(X)

# 可視化結(jié)果
plt.scatter(X[:, 0], X[:, 1], c=labels, cmap='viridis')
centers = kmeans.cluster_centers_
plt.scatter(centers[:, 0], centers[:, 1], c='red', marker='x')
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.title('K-Means Clustering')
plt.show()

這段代碼展示了如何使用KMeans類進(jìn)行聚類。通過將數(shù)據(jù)點(diǎn)分配給最近的質(zhì)心,K-Means能夠?qū)?shù)據(jù)分成不同的群組。

9. 梯度提升樹(Gradient Boosting)

梯度提升樹用于分類和回歸問題。比如,預(yù)測(cè)客戶是否會(huì)流失。

代碼示例:

from sklearn.ensemble import GradientBoostingClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from sklearn.datasets import load_iris

# 加載數(shù)據(jù)集
data = load_iris()
X = data.data
y = data.target

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

# 創(chuàng)建模型
model = GradientBoostingClassifier()

# 訓(xùn)練模型
model.fit(X_train, y_train)

# 預(yù)測(cè)
predictions = model.predict(X_test)

# 模型評(píng)估
accuracy = accuracy_score(y_test, predictions)
print(f"Accuracy: {accuracy * 100:.2f}%")

這段代碼展示了如何使用GradientBoostingClassifier類創(chuàng)建模型。梯度提升樹通過組合多個(gè)弱模型來提高預(yù)測(cè)性能。

10. AdaBoost

AdaBoost也是一種集成學(xué)習(xí)方法,用于分類和回歸問題。比如,識(shí)別惡意軟件。

代碼示例:

from sklearn.ensemble import AdaBoostClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from sklearn.datasets import load_iris

# 加載數(shù)據(jù)集
data = load_iris()
X = data.data
y = data.target

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

# 創(chuàng)建模型
model = AdaBoostClassifier()

# 訓(xùn)練模型
model.fit(X_train, y_train)

# 預(yù)測(cè)
predictions = model.predict(X_test)

# 模型評(píng)估
accuracy = accuracy_score(y_test, predictions)
print(f"Accuracy: {accuracy * 100:.2f}%")

這段代碼展示了如何使用AdaBoostClassifier類創(chuàng)建模型。AdaBoost通過賦予錯(cuò)誤分類的數(shù)據(jù)更高的權(quán)重來改進(jìn)模型。

11. XGBoost

XGBoost是另一種梯度提升框架,廣泛應(yīng)用于分類和回歸問題。比如,預(yù)測(cè)股市趨勢(shì)。

代碼示例:

import xgboost as xgb
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from sklearn.datasets import load_iris

# 加載數(shù)據(jù)集
data = load_iris()
X = data.data
y = data.target

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

# 創(chuàng)建模型
model = xgb.XGBClassifier()

# 訓(xùn)練模型
model.fit(X_train, y_train)

# 預(yù)測(cè)
predictions = model.predict(X_test)

# 模型評(píng)估
accuracy = accuracy_score(y_test, predictions)
print(f"Accuracy: {accuracy * 100:.2f}%")

這段代碼展示了如何使用XGBClassifier類創(chuàng)建模型。XGBoost通過優(yōu)化目標(biāo)函數(shù)來提高模型性能。

12. LightGBM

LightGBM是另一種高效的梯度提升框架,適用于大規(guī)模數(shù)據(jù)集。比如,推薦系統(tǒng)。

代碼示例:

import lightgbm as lgb
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from sklearn.datasets import load_iris

# 加載數(shù)據(jù)集
data = load_iris()
X = data.data
y = data.target

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

# 創(chuàng)建模型
model = lgb.LGBMClassifier()

# 訓(xùn)練模型
model.fit(X_train, y_train)

# 預(yù)測(cè)
predictions = model.predict(X_test)

# 模型評(píng)估
accuracy = accuracy_score(y_test, predictions)
print(f"Accuracy: {accuracy * 100:.2f}%")

這段代碼展示了如何使用LGBMClassifier類創(chuàng)建模型。LightGBM通過高效地處理數(shù)據(jù)來加速訓(xùn)練過程。

13. CatBoost

CatBoost是另一個(gè)高效的梯度提升框架,特別適合處理分類特征。比如,預(yù)測(cè)用戶行為。

代碼示例:

import catboost as cb
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from sklearn.datasets import load_iris

# 加載數(shù)據(jù)集
data = load_iris()
X = data.data
y = data.target

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

# 創(chuàng)建模型
model = cb.CatBoostClassifier()

# 訓(xùn)練模型
model.fit(X_train, y_train)

# 預(yù)測(cè)
predictions = model.predict(X_test)

# 模型評(píng)估
accuracy = accuracy_score(y_test, predictions)
print(f"Accuracy: {accuracy * 100:.2f}%")

這段代碼展示了如何使用CatBoostClassifier類創(chuàng)建模型。CatBoost通過處理分類特征來提高模型性能。

14. DBSCAN

DBSCAN是一種基于密度的聚類算法,用于發(fā)現(xiàn)任意形狀的簇。比如,異常檢測(cè)。

代碼示例:

from sklearn.cluster import DBSCAN
from sklearn.datasets import make_moons
import matplotlib.pyplot as plt

# 創(chuàng)建數(shù)據(jù)集
X, _ = make_moons(n_samples=300, noise=0.1, random_state=42)

# 創(chuàng)建DBSCAN模型
dbscan = DBSCAN(eps=0.2, min_samples=5)

# 訓(xùn)練模型
labels = dbscan.fit_predict(X)

# 可視化結(jié)果
plt.scatter(X[:, 0], X[:, 1], c=labels, cmap='viridis')
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.title('DBSCAN Clustering')
plt.show()

這段代碼展示了如何使用DBSCAN類進(jìn)行聚類。DBSCAN通過尋找密度相連的點(diǎn)來發(fā)現(xiàn)簇。

總結(jié)

本文介紹了14種常用的機(jī)器學(xué)習(xí)算法,并通過實(shí)際代碼示例展示了它們的基本用法。從簡(jiǎn)單的線性回歸到復(fù)雜的集成學(xué)習(xí)方法,每種算法都有其獨(dú)特的應(yīng)用場(chǎng)景。通過理解這些算法的工作原理,讀者可以更好地選擇合適的工具來解決實(shí)際問題。希望本文能幫助大家更深入地掌握機(jī)器學(xué)習(xí)的核心技術(shù)。

責(zé)任編輯:趙寧寧 來源: 小白PythonAI編程
相關(guān)推薦

2017-09-12 16:57:43

機(jī)器學(xué)習(xí)K-means算法Python

2020-12-16 15:56:26

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

2019-11-25 14:24:24

機(jī)器學(xué)習(xí)算法數(shù)據(jù)

2022-02-15 23:38:22

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

2024-10-12 17:13:53

2019-10-22 22:31:15

Python切片字符串

2018-08-30 14:20:54

數(shù)據(jù)分析機(jī)器學(xué)習(xí)算法

2020-03-20 11:22:09

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

2016-12-01 07:41:37

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

2022-09-04 19:38:11

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

2022-08-25 17:47:21

PythonExcel

2023-11-28 12:08:56

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

2020-11-16 11:56:57

機(jī)器學(xué)習(xí)技術(shù)工具

2023-11-29 14:34:15

機(jī)器學(xué)習(xí)統(tǒng)計(jì)學(xué)

2019-11-19 10:41:14

Python開發(fā)排序

2016-11-15 15:02:00

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

2020-04-26 10:32:00

機(jī)器學(xué)習(xí)技術(shù)工具

2017-12-16 11:50:56

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

2019-06-06 08:52:00

2020-07-13 14:50:51

機(jī)器學(xué)習(xí)模型算法
點(diǎn)贊
收藏

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