Python 機器學習:十個入門機器學習的必備庫
大家好!今天我們要聊的是 Python 機器學習中不可或缺的 10 個庫。無論你是剛剛接觸機器學習的新手,還是已經有一定經驗的老手,這些庫都能幫助你更好地理解和應用機器學習技術。讓我們一步步來,從最基礎的庫開始,逐漸深入到更高級的工具。

1. NumPy
簡介:NumPy 是 Python 中用于科學計算的基礎庫,提供了多維數組對象、各種派生對象(如掩碼數組和矩陣)以及用于數組快速操作的各種函數。
示例:
import numpy as np
# 創建一個一維數組
a = np.array([1, 2, 3, 4, 5])
print(a) # 輸出: [1 2 3 4 5]
# 創建一個二維數組
b = np.array([[1, 2, 3], [4, 5, 6]])
print(b)
# 輸出:
# [[1 2 3]
# [4 5 6]]
# 數組的基本操作
c = a + 2
print(c) # 輸出: [3 4 5 6 7]
d = b * 2
print(d)
# 輸出:
# [[ 2 4 6]
# [ 8 10 12]]2. Pandas
簡介:Pandas 是一個強大的數據處理和分析庫,提供了 DataFrame 和 Series 數據結構,方便進行數據清洗、轉換和分析。
示例:
import pandas as pd
# 創建一個 DataFrame
data = {
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'City': ['New York', 'Los Angeles', 'Chicago']
}
df = pd.DataFrame(data)
print(df)
# 輸出:
# Name Age City
# 0 Alice 25 New York
# 1 Bob 30 Los Angeles
# 2 Charlie 35 Chicago
# 數據篩選
young_people = df[df['Age'] < 30]
print(young_people)
# 輸出:
# Name Age City
# 0 Alice 25 New York3. Matplotlib
簡介:Matplotlib 是一個用于繪制圖表的庫,可以生成各種靜態、動態和交互式圖表。
示例:
import matplotlib.pyplot as plt
# 繪制簡單的折線圖
x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]
plt.plot(x, y)
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.title('Simple Line Plot')
plt.show()4. Scikit-learn
簡介:Scikit-learn 是一個用于機器學習的庫,提供了大量的監督和非監督學習算法,以及模型評估和選擇的工具。
示例:
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score
# 加載 Iris 數據集
iris = load_iris()
X = iris.data
y = iris.target
# 劃分訓練集和測試集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 訓練 KNN 模型
knn = KNeighborsClassifier(n_neighbors=3)
knn.fit(X_train, y_train)
# 預測
y_pred = knn.predict(X_test)
# 評估模型
accuracy = accuracy_score(y_test, y_pred)
print(f'Accuracy: {accuracy:.2f}')
# 輸出: Accuracy: 0.975. TensorFlow
簡介:TensorFlow 是由 Google 開發的深度學習框架,支持多種平臺和語言,廣泛應用于圖像識別、自然語言處理等領域。
示例:
import tensorflow as tf
from tensorflow.keras import layers, models
# 構建一個簡單的神經網絡
model = models.Sequential([
layers.Dense(64, activation='relu', input_shape=(32,)),
layers.Dense(64, activation='relu'),
layers.Dense(10, activation='softmax')
])
# 編譯模型
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
# 生成一些隨機數據
import numpy as np
x_train = np.random.random((1000, 32))
y_train = np.random.randint(10, size=(1000,))
# 訓練模型
model.fit(x_train, y_train, epochs=10, batch_size=32)6. PyTorch
簡介:PyTorch 是由 Facebook 開發的深度學習框架,以靈活性和動態計算圖著稱,廣泛應用于研究和生產環境。
示例:
import torch
import torch.nn as nn
import torch.optim as optim
# 定義一個簡單的神經網絡
class SimpleNet(nn.Module):
def __init__(self):
super(SimpleNet, self).__init__()
self.fc1 = nn.Linear(32, 64)
self.fc2 = nn.Linear(64, 64)
self.fc3 = nn.Linear(64, 10)
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 = SimpleNet()
# 生成一些隨機數據
x_train = torch.randn(1000, 32)
y_train = torch.randint(10, (1000,))
# 定義損失函數和優化器
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(model.parameters(), lr=0.001)
# 訓練模型
for epoch in range(10):
optimizer.zero_grad()
outputs = model(x_train)
loss = criterion(outputs, y_train)
loss.backward()
optimizer.step()
print(f'Epoch {epoch+1}, Loss: {loss.item()}')7. Keras
簡介:Keras 是一個高級神經網絡 API,可以運行在 TensorFlow、Theano 或 CNTK 后端,提供了簡潔易用的接口。
示例:
from keras.models import Sequential
from keras.layers import Dense
# 構建一個簡單的神經網絡
model = Sequential([
Dense(64, activation='relu', input_shape=(32,)),
Dense(64, activation='relu'),
Dense(10, activation='softmax')
])
# 編譯模型
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
# 生成一些隨機數據
import numpy as np
x_train = np.random.random((1000, 32))
y_train = np.random.randint(10, size=(1000,))
# 訓練模型
model.fit(x_train, y_train, epochs=10, batch_size=32)8. LightGBM
簡介:LightGBM 是一個基于梯度提升決策樹(GBDT)的高效機器學習框架,特別適用于大規模數據集。
示例:
import lightgbm as lgb
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# 加載乳腺癌數據集
data = load_breast_cancer()
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)
# 轉換為 LightGBM 的數據格式
train_data = lgb.Dataset(X_train, label=y_train)
test_data = lgb.Dataset(X_test, label=y_test, reference=train_data)
# 設置參數
params = {
'objective': 'binary',
'metric': 'binary_logloss',
'boosting_type': 'gbdt',
'num_leaves': 31,
'learning_rate': 0.05
}
# 訓練模型
model = lgb.train(params, train_data, num_boost_round=100, valid_sets=[test_data], early_stopping_rounds=10)
# 預測
y_pred = model.predict(X_test)
y_pred = [1 if pred > 0.5 else 0 for pred in y_pred]
# 評估模型
accuracy = accuracy_score(y_test, y_pred)
print(f'Accuracy: {accuracy:.2f}')
# 輸出: Accuracy: 0.969. XGBoost
簡介:XGBoost 是另一個基于梯度提升決策樹的高效機器學習框架,以其高性能和準確性而聞名。
示例:
import xgboost as xgb
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# 加載乳腺癌數據集
data = load_breast_cancer()
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)
# 轉換為 DMatrix 格式
dtrain = xgb.DMatrix(X_train, label=y_train)
dtest = xgb.DMatrix(X_test, label=y_test)
# 設置參數
params = {
'objective': 'binary:logistic',
'eval_metric': 'logloss',
'eta': 0.1,
'max_depth': 3
}
# 訓練模型
model = xgb.train(params, dtrain, num_boost_round=100, evals=[(dtest, 'test')], early_stopping_rounds=10)
# 預測
y_pred = model.predict(dtest)
y_pred = [1 if pred > 0.5 else 0 for pred in y_pred]
# 評估模型
accuracy = accuracy_score(y_test, y_pred)
print(f'Accuracy: {accuracy:.2f}')
# 輸出: Accuracy: 0.9610. CatBoost
簡介:CatBoost 是一個開源的梯度提升框架,特別適合處理分類特征,無需進行預處理。
示例:
from catboost import CatBoostClassifier
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# 加載乳腺癌數據集
data = load_breast_cancer()
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 = CatBoostClassifier(iterations=100, learning_rate=0.1, depth=3)
model.fit(X_train, y_train, verbose=False)
# 預測
y_pred = model.predict(X_test)
# 評估模型
accuracy = accuracy_score(y_test, y_pred)
print(f'Accuracy: {accuracy:.2f}')
# 輸出: Accuracy: 0.96實戰案例:使用 Scikit-learn 進行房價預測
假設我們有一個包含房屋特征的數據集,目標是預測房屋的價格。我們將使用 Scikit-learn 來構建一個線性回歸模型。
數據集:
- house_prices.csv 包含以下列:
- bedrooms:臥室數量
- bathrooms:浴室數量
- sqft_living:居住面積(平方英尺)
- price:房屋價格
步驟:
- 加載數據。
- 數據預處理。
- 劃分訓練集和測試集。
- 訓練線性回歸模型。
- 評估模型性能。
代碼實現:
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score
# 1. 加載數據
data = pd.read_csv('house_prices.csv')
# 2. 數據預處理
X = data[['bedrooms', 'bathrooms', 'sqft_living']]
y = data['price']
# 3. 劃分訓練集和測試集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 4. 訓練線性回歸模型
model = LinearRegression()
model.fit(X_train, y_train)
# 5. 評估模型性能
y_pred = model.predict(X_test)
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)
print(f'Mean Squared Error: {mse:.2f}')
print(f'R^2 Score: {r2:.2f}')總結
本文介紹了 10 個 Python 機器學習的必備庫,包括 NumPy、Pandas、Matplotlib、Scikit-learn、TensorFlow、PyTorch、Keras、LightGBM、XGBoost 和 CatBoost。每個庫都有其獨特的特點和應用場景,通過實際的代碼示例,我們展示了如何使用這些庫進行數據處理、可視化和模型訓練。最后,我們通過一個實戰案例,展示了如何使用 Scikit-learn 進行房價預測。






























