Python 機器學習中 14 個常用算法實現
機器學習作為人工智能的一個重要分支,在當今社會的應用越來越廣泛。從簡單的線性回歸到復雜的集成學習方法,每種算法都有其獨特的應用場景。本文將介紹14種常用的機器學習算法,并通過實際代碼示例來幫助讀者更好地理解和應用這些算法。

1. 線性回歸
線性回歸是預測連續值的一種方法。比如,根據房屋面積預測房價。
代碼示例:
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt
# 創建數據集
X = np.array([[1], [2], [3], [4], [5], [6]])
y = np.array([2, 4, 5, 4, 5, 7])
# 劃分訓練集和測試集
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)
# 預測
predictions = model.predict(X_test)
# 可視化結果
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類創建模型。它會根據給定的數據點畫出一條直線,盡可能地貼近這些點。
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
# 加載數據集
data = load_iris()
X = data.data
y = data.target
# 劃分訓練集和測試集
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)
# 預測
predictions = model.predict(X_test)
# 模型評估
accuracy = accuracy_score(y_test, predictions)
print(f"Accuracy: {accuracy * 100:.2f}%")這段代碼展示了如何使用LogisticRegression類創建模型。accuracy_score函數用來評估模型的準確性。
3. 決策樹
決策樹可以解決分類和回歸問題。比如,決定是否批準一筆貸款。
代碼示例:
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
# 加載數據集
data = load_iris()
X = data.data
y = data.target
# 劃分訓練集和測試集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 創建模型
model = DecisionTreeClassifier()
# 訓練模型
model.fit(X_train, y_train)
# 預測
predictions = model.predict(X_test)
# 模型評估
accuracy = accuracy_score(y_test, predictions)
print(f"Accuracy: {accuracy * 100:.2f}%")這段代碼展示了如何使用DecisionTreeClassifier類創建模型。通過劃分數據,模型能夠做出決策。
4. 支持向量機(SVM)
支持向量機用于分類和回歸問題。比如,識別手寫數字。
代碼示例:
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
# 加載數據集
data = load_digits()
X = data.data
y = data.target
# 劃分訓練集和測試集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 創建模型
model = SVC()
# 訓練模型
model.fit(X_train, y_train)
# 預測
predictions = model.predict(X_test)
# 模型評估
accuracy = accuracy_score(y_test, predictions)
print(f"Accuracy: {accuracy * 100:.2f}%")這段代碼展示了如何使用SVC類創建模型。SVM會在數據中找到最佳的邊界來區分不同類別。
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
# 加載數據集
data = load_iris()
X = data.data
y = data.target
# 劃分訓練集和測試集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 創建模型
model = KNeighborsClassifier(n_neighbors=3)
# 訓練模型
model.fit(X_train, y_train)
# 預測
predictions = model.predict(X_test)
# 模型評估
accuracy = accuracy_score(y_test, predictions)
print(f"Accuracy: {accuracy * 100:.2f}%")這段代碼展示了如何使用KNeighborsClassifier類創建模型。KNN會根據最近的鄰居來判斷數據點的類別。
6. 隨機森林
隨機森林是一種集成學習方法,用于分類和回歸問題。比如,預測股票價格。
代碼示例:
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
# 加載數據集
data = load_iris()
X = data.data
y = data.target
# 劃分訓練集和測試集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 創建模型
model = RandomForestClassifier(n_estimators=100)
# 訓練模型
model.fit(X_train, y_train)
# 預測
predictions = model.predict(X_test)
# 模型評估
accuracy = accuracy_score(y_test, predictions)
print(f"Accuracy: {accuracy * 100:.2f}%")這段代碼展示了如何使用RandomForestClassifier類創建模型。隨機森林通過多個決策樹的投票來做出最終的決策。
7. 主成分分析(PCA)
主成分分析用于降維。比如,簡化高維數據集。
代碼示例:
from sklearn.decomposition import PCA
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt
# 加載數據集
data = load_iris()
X = data.data
y = data.target
# 創建PCA模型
pca = PCA(n_components=2)
# 轉換數據
X_pca = pca.fit_transform(X)
# 可視化結果
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類進行數據降維。通過將數據投影到新的坐標軸上,PCA能夠保留數據的主要特征。
8. 聚類算法(K-Means)
聚類算法用于無監督學習。比如,將顧客分成不同的群體。
代碼示例:
from sklearn.cluster import KMeans
from sklearn.datasets import make_blobs
import matplotlib.pyplot as plt
# 創建數據集
X, _ = make_blobs(n_samples=300, centers=4, random_state=42)
# 創建KMeans模型
kmeans = KMeans(n_clusters=4)
# 訓練模型
kmeans.fit(X)
# 預測
labels = kmeans.predict(X)
# 可視化結果
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類進行聚類。通過將數據點分配給最近的質心,K-Means能夠將數據分成不同的群組。
9. 梯度提升樹(Gradient Boosting)
梯度提升樹用于分類和回歸問題。比如,預測客戶是否會流失。
代碼示例:
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
# 加載數據集
data = load_iris()
X = data.data
y = data.target
# 劃分訓練集和測試集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 創建模型
model = GradientBoostingClassifier()
# 訓練模型
model.fit(X_train, y_train)
# 預測
predictions = model.predict(X_test)
# 模型評估
accuracy = accuracy_score(y_test, predictions)
print(f"Accuracy: {accuracy * 100:.2f}%")這段代碼展示了如何使用GradientBoostingClassifier類創建模型。梯度提升樹通過組合多個弱模型來提高預測性能。
10. AdaBoost
AdaBoost也是一種集成學習方法,用于分類和回歸問題。比如,識別惡意軟件。
代碼示例:
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
# 加載數據集
data = load_iris()
X = data.data
y = data.target
# 劃分訓練集和測試集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 創建模型
model = AdaBoostClassifier()
# 訓練模型
model.fit(X_train, y_train)
# 預測
predictions = model.predict(X_test)
# 模型評估
accuracy = accuracy_score(y_test, predictions)
print(f"Accuracy: {accuracy * 100:.2f}%")這段代碼展示了如何使用AdaBoostClassifier類創建模型。AdaBoost通過賦予錯誤分類的數據更高的權重來改進模型。
11. XGBoost
XGBoost是另一種梯度提升框架,廣泛應用于分類和回歸問題。比如,預測股市趨勢。
代碼示例:
import xgboost as xgb
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from sklearn.datasets import load_iris
# 加載數據集
data = load_iris()
X = data.data
y = data.target
# 劃分訓練集和測試集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 創建模型
model = xgb.XGBClassifier()
# 訓練模型
model.fit(X_train, y_train)
# 預測
predictions = model.predict(X_test)
# 模型評估
accuracy = accuracy_score(y_test, predictions)
print(f"Accuracy: {accuracy * 100:.2f}%")這段代碼展示了如何使用XGBClassifier類創建模型。XGBoost通過優化目標函數來提高模型性能。
12. LightGBM
LightGBM是另一種高效的梯度提升框架,適用于大規模數據集。比如,推薦系統。
代碼示例:
import lightgbm as lgb
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from sklearn.datasets import load_iris
# 加載數據集
data = load_iris()
X = data.data
y = data.target
# 劃分訓練集和測試集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 創建模型
model = lgb.LGBMClassifier()
# 訓練模型
model.fit(X_train, y_train)
# 預測
predictions = model.predict(X_test)
# 模型評估
accuracy = accuracy_score(y_test, predictions)
print(f"Accuracy: {accuracy * 100:.2f}%")這段代碼展示了如何使用LGBMClassifier類創建模型。LightGBM通過高效地處理數據來加速訓練過程。
13. CatBoost
CatBoost是另一個高效的梯度提升框架,特別適合處理分類特征。比如,預測用戶行為。
代碼示例:
import catboost as cb
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from sklearn.datasets import load_iris
# 加載數據集
data = load_iris()
X = data.data
y = data.target
# 劃分訓練集和測試集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 創建模型
model = cb.CatBoostClassifier()
# 訓練模型
model.fit(X_train, y_train)
# 預測
predictions = model.predict(X_test)
# 模型評估
accuracy = accuracy_score(y_test, predictions)
print(f"Accuracy: {accuracy * 100:.2f}%")這段代碼展示了如何使用CatBoostClassifier類創建模型。CatBoost通過處理分類特征來提高模型性能。
14. DBSCAN
DBSCAN是一種基于密度的聚類算法,用于發現任意形狀的簇。比如,異常檢測。
代碼示例:
from sklearn.cluster import DBSCAN
from sklearn.datasets import make_moons
import matplotlib.pyplot as plt
# 創建數據集
X, _ = make_moons(n_samples=300, noise=0.1, random_state=42)
# 創建DBSCAN模型
dbscan = DBSCAN(eps=0.2, min_samples=5)
# 訓練模型
labels = dbscan.fit_predict(X)
# 可視化結果
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類進行聚類。DBSCAN通過尋找密度相連的點來發現簇。
總結
本文介紹了14種常用的機器學習算法,并通過實際代碼示例展示了它們的基本用法。從簡單的線性回歸到復雜的集成學習方法,每種算法都有其獨特的應用場景。通過理解這些算法的工作原理,讀者可以更好地選擇合適的工具來解決實際問題。希望本文能幫助大家更深入地掌握機器學習的核心技術。



























