scikit-learn
(简称 sklearn
)是 Python 生态中一个非常流行且强大的机器学习库,支持各种机器学习算法和工具。
核心模块和功能
-
监督学习 (Supervised Learning):
-
分类 (Classification):
-
回归 (Regression):
-
-
无监督学习 (Unsupervised Learning):
-
聚类 (Clustering):
-
降维 (Dimensionality Reduction):
-
-
模型选择与优化 (Model Selection and Optimization):
-
交叉验证 (Cross Validation):
- 使用
cross_val_score
实现简单交叉验证。 - 示例:
from sklearn.model_selection import cross_val_scorescores = cross_val_score(clf, X, y, cv=5) # 5折交叉验证 print(scores.mean()) # 平均准确率
- 使用
-
超参数调优 (Hyperparameter Tuning):
- 使用
GridSearchCV
或RandomizedSearchCV
。 - 示例:
from sklearn.model_selection import GridSearchCVparam_grid = {'n_estimators': [50, 100, 150], 'max_depth': [10, 20, None]} grid_search = GridSearchCV(RandomForestClassifier(), param_grid, cv=3) grid_search.fit(X_train, y_train) print(grid_search.best_params_) # 最优参数
- 使用
-
-
预处理 (Preprocessing):
-
标准化与归一化:
- 使用
StandardScaler
或MinMaxScaler
。 - 示例:
from sklearn.preprocessing import StandardScalerscaler = StandardScaler() X_scaled = scaler.fit_transform(X)
- 使用
-
特征选择 (Feature Selection):
- 支持的方法:SelectKBest、递归特征消除 (RFE) 等。
- 示例:
from sklearn.feature_selection import SelectKBest, f_classifselector = SelectKBest(f_classif, k=10) X_new = selector.fit_transform(X, y)
-
常用工具
-
评估指标 (Metrics):
- 分类指标:准确率、F1分数、ROC曲线等。
from sklearn.metrics import accuracy_score, classification_reportprint(accuracy_score(y_test, y_pred)) print(classification_report(y_test, y_pred))
- 回归指标:均方误差 (MSE)、R²等。
from sklearn.metrics import mean_squared_error, r2_scoreprint(mean_squared_error(y_test, y_pred)) print(r2_score(y_test, y_pred))
- 分类指标:准确率、F1分数、ROC曲线等。
-
数据集工具:
完整工作流程示例
以一个分类任务为例,使用随机森林进行训练并评估:
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, classification_report# 1. 加载数据
data = load_iris()
X, y = data.data, data.target# 2. 数据集划分
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 3. 模型训练
clf = RandomForestClassifier(n_estimators=100, random_state=42)
clf.fit(X_train, y_train)# 4. 模型预测
y_pred = clf.predict(X_test)# 5. 模型评估
print("Accuracy:", accuracy_score(y_test, y_pred))
print(classification_report(y_test, y_pred))