Python 作為一門功能強大且易于學習的編程語言,在數據科學、機器學習和深度學習領域得到了廣泛應用。其豐富的庫生態系統使得開發者能夠快速構建和部署復雜的模型。本文將詳細介紹 Python 中常用的機器學習和深度學習庫,幫助讀者了解這些工具的功能、特點以及適用場景。
Scikit-learn 是 Python 中最流行的機器學習庫之一,提供了豐富的算法和工具,涵蓋了分類、回歸、聚類、降維、模型選擇和數據預處理等多個方面。Scikit-learn 的設計簡潔且易于使用,適合初學者和有經驗的開發者。
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
# 加載數據集
iris = load_iris()
X, y = iris.data, iris.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)
# 預測
y_pred = model.predict(X_test)
# 評估模型
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy:.2f}")
XGBoost 是一個高效的梯度提升框架,廣泛應用于各種機器學習競賽和實際項目中。它通過優化算法和并行計算實現了極高的性能,特別適合處理大規模數據集。
import xgboost as xgb
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
# 加載數據集
boston = load_boston()
X, y = boston.data, boston.target
# 劃分訓練集和測試集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 轉換為 DMatrix 格式
dtrain = xgb.DMatrix(X_train, label=y_train)
dtest = xgb.DMatrix(X_test, label=y_test)
# 設置參數
params = {
'objective': 'reg:squarederror',
'max_depth': 4,
'eta': 0.1,
'subsample': 0.8,
'colsample_bytree': 0.8,
'eval_metric': 'rmse'
}
# 訓練模型
num_round = 100
model = xgb.train(params, dtrain, num_round)
# 預測
y_pred = model.predict(dtest)
# 評估模型
mse = mean_squared_error(y_test, y_pred)
print(f"Mean Squared Error: {mse:.2f}")
LightGBM 是另一個高效的梯度提升框架,由微軟開發。與 XGBoost 相比,LightGBM 在訓練速度和內存使用上更具優勢,特別適合處理高維稀疏數據。
import lightgbm as lgb
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
# 加載數據集
boston = load_boston()
X, y = boston.data, boston.target
# 劃分訓練集和測試集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 轉換為 Dataset 格式
train_data = lgb.Dataset(X_train, label=y_train)
test_data = lgb.Dataset(X_test, label=y_test, reference=train_data)
# 設置參數
params = {
'objective': 'regression',
'metric': 'rmse',
'boosting_type': 'gbdt',
'num_leaves': 31,
'learning_rate': 0.05,
'feature_fraction': 0.9
}
# 訓練模型
num_round = 100
model = lgb.train(params, train_data, num_round, valid_sets=[test_data])
# 預測
y_pred = model.predict(X_test)
# 評估模型
mse = mean_squared_error(y_test, y_pred)
print(f"Mean Squared Error: {mse:.2f}")
CatBoost 是由 Yandex 開發的梯度提升庫,特別擅長處理分類特征。它通過有序提升算法和類別特征處理技術,在分類和回歸任務中表現出色。
from catboost import CatBoostRegressor
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
# 加載數據集
boston = load_boston()
X, y = boston.data, boston.target
# 劃分訓練集和測試集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 訓練模型
model = CatBoostRegressor(iterations=100, learning_rate=0.1, depth=6, loss_function='RMSE')
model.fit(X_train, y_train, verbose=False)
# 預測
y_pred = model.predict(X_test)
# 評估模型
mse = mean_squared_error(y_test, y_pred)
print(f"Mean Squared Error: {mse:.2f}")
Statsmodels 是一個專注于統計建模和假設檢驗的庫,提供了豐富的統計模型和工具,適用于線性回歸、時間序列分析、廣義線性模型等任務。
import statsmodels.api as sm
from sklearn.datasets import load_boston
# 加載數據集
boston = load_boston()
X, y = boston.data, boston.target
# 添加常數項
X = sm.add_constant(X)
# 擬合線性回歸模型
model = sm.OLS(y, X)
results = model.fit()
# 輸出結果
print(results.summary())
PyCaret 是一個低代碼的機器學習庫,旨在簡化機器學習工作流程。它提供了從數據預處理到模型部署的完整解決方案,適合快速原型開發。
from pycaret.classification import *
from sklearn.datasets import load_iris
# 加載數據集
iris = load_iris()
data = pd.DataFrame(iris.data, columns=iris.feature_names)
data['target'] = iris.target
# 初始化 PyCaret
clf = setup(data, target='target', session_id=123)
# 比較模型
best_model = compare_models()
# 訓練模型
model = create_model('rf')
# 評估模型
evaluate_model(model)
# 預測
predictions = predict_model(model, data=data)
TensorFlow 是由 Google 開發的開源深度學習框架,廣泛應用于各種深度學習任務,如圖像識別、自然語言處理、語音識別等。它提供了靈活的 API 和強大的計算能力,適合從研究到生產的各種場景。
import tensorflow as tf
from tensorflow.keras import layers, models
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import OneHotEncoder
# 加載數據集
iris = load_iris()
X, y = iris.data, iris.target
# 劃分訓練集和測試集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 對標簽進行 one-hot 編碼
encoder = OneHotEncoder(sparse=False)
y_train = encoder.fit_transform(y_train.reshape(-1, 1))
y_test = encoder.transform(y_test.reshape(-1, 1))
# 構建模型
model = models.Sequential([
layers.Dense(10, activation='relu', input_shape=(4,)),
layers.Dense(10, activation='relu'),
layers.Dense(3, activation='softmax')
])
# 編譯模型
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
# 訓練模型
model.fit(X_train, y_train, epochs=50, batch_size=8, validation_split=0.2)
# 評估模型
loss, accuracy = model.evaluate(X_test, y_test)
print(f"Test Accuracy: {accuracy:.2f}")
Keras 是一個高級神經網絡 API,最初由 Fran?ois Chollet 開發,現已成為 TensorFlow 的一部分。Keras 的設計目標是快速實驗和原型開發,適合初學者和有經驗的開發者。
from keras.models import Sequential
from keras.layers import Dense
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import OneHotEncoder
# 加載數據集
iris = load_iris()
X, y = iris.data, iris.target
# 劃分訓練集和測試集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 對標簽進行 one-hot 編碼
encoder = OneHotEncoder(sparse=False)
y_train = encoder.fit_transform(y_train.reshape(-1, 1))
y_test = encoder.transform(y_test.reshape(-1, 1))
# 構建模型
model = Sequential([
Dense(10, activation='relu', input_shape=(4,)),
Dense(10, activation='relu'),
Dense(3, activation='softmax')
])
# 編譯模型
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
# 訓練模型
model.fit(X_train, y_train, epochs=50, batch_size=8, validation_split=0.2)
# 評估模型
loss, accuracy = model.evaluate(X_test, y_test)
print(f"Test Accuracy: {accuracy:.2f}")
PyTorch 是由 Facebook 開發的開源深度學習框架,以其動態計算圖和靈活的 API 而聞名。PyTorch 在研究和開發中得到了廣泛應用,特別適合需要靈活性和控制力的場景。
import torch
import torch.nn as nn
import torch.optim as optim
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import OneHotEncoder
# 加載數據集
iris = load_iris()
X, y = iris.data, iris.target
# 劃分訓練集和測試集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 對標簽進行 one-hot 編碼
encoder = OneHotEncoder(sparse=False)
y_train = encoder.fit_transform(y_train.reshape(-1, 1))
y_test = encoder.transform(y_test.reshape(-1, 1))
# 轉換為 PyTorch 張量
X_train = torch.tensor(X_train, dtype=torch.float32)
X_test = torch.tensor(X_test, dtype=torch.float32)
y_train = torch.tensor(y_train, dtype=torch.float32)
y_test = torch.tensor(y_test, dtype=torch.float32)
# 構建模型
class Net(nn.Module):
def __init__(self):
super(Net, self).__init__()
self.fc1 = nn.Linear(4, 10)
self.fc2 = nn.Linear(10, 10)
self.fc3 = nn.Linear(10, 3)
def forward(self, x):
x = torch.relu(self.fc1(x))
x = torch.relu(self.fc2(x))
x = torch.softmax(self.fc3(x), dim=1)
return x
model = Net()
# 定義損失函數和優化器
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(model.parameters(), lr=0.01)
# 訓練模型
for epoch in range(50):
optimizer.zero_grad()
outputs = model(X_train)
loss = criterion(outputs, y_train)
loss.backward()
optimizer.step()
# 評估模型
with torch.no_grad():
outputs = model(X_test)
_, predicted = torch.max(outputs, 1)
accuracy = (predicted == torch.argmax(y_test, dim=1)).float().mean()
print(f"Test Accuracy: {accuracy:.2f}")
MXNet 是一個高效且靈活的深度學習框架,支持多種編程語言和硬件平臺。它由 Apache 基金會維護,廣泛應用于各種深度學習任務。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。