Scikit-learn(简称 Sklearn)是 Python 中最流行的机器学习库之一,提供了丰富的算法和工具用于数据预处理、模型训练、评估和调优。下面整理了一些常用算法及建模流程,供大家参考学习。
1.常用算法分类
1. 监督学习(Supervised Learning)
-
分类(Classification):
-
逻辑回归(LogisticRegression): 二分类/多分类问题。
-
支持向量机(SVM): 高维数据分类。
-
决策树(DecisionTreeClassifier): 可解释性强的树模型。
-
随机森林(RandomForestClassifier): 集成多个决策树,抗过拟合。
-
K近邻(KNeighborsClassifier): 基于距离的简单分类。
-
梯度提升树(GradientBoostingClassifier): 高性能集成算法。
-
-
回归(Regression):
-
线性回归(LinearRegression): 简单线性关系建模。
-
岭回归(Ridge): 解决线性回归过拟合。
-
Lasso回归(Lasso): 特征选择 + 回归。
-
支持向量回归(SVR): 非线性回归问题。
-
随机森林回归(RandomForestRegressor): 集成回归模型。
-
2. 无监督学习(Unsupervised Learning)
-
聚类(Clustering):
-
K均值(KMeans): 基于距离的经典聚类。
-
层次聚类(AgglomerativeClustering): 树状结构聚类。
-
DBSCAN): 基于密度的噪声鲁棒聚类。
-
-
降维(Dimensionality Reduction):
-
主成分分析(PCA): 线性降维。
-
t-SNE): 非线性降维(可视化常用)。
-
-
关联规则(Association Rules):
-
Apriori): 发现频繁项集(需安装
mlxtend
库)。
-
3. 其他工具
-
模型选择与评估:
-
交叉验证(
cross_val_score
)、网格搜索(GridSearchCV
)。
-
-
数据预处理:
-
标准化(
StandardScaler
)、归一化(MinMaxScaler
)、缺失值填充(SimpleImputer
)。
-
2.建模流程
1. 数据加载与探索
python代码:
from sklearn.datasets import load_iris
import pandas as pd
data = load_iris()
X = data.data # 特征矩阵
y = data.target # 标签
df = pd.DataFrame(X, columns=data.feature_names)
2. 数据预处理
-
特征工程:
-
缺失值处理:
SimpleImputer
-
标准化/归一化:
StandardScaler
,MinMaxScaler
-
编码分类变量:
OneHotEncoder
,LabelEncoder
-
-
数据集划分:
python代码:
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
3. 选择模型
python代码:
from sklearn.ensemble import RandomForestClassifier
model = RandomForestClassifier(n_estimators=100, random_state=42)
4. 训练模型
python代码:
model.fit(X_train, y_train)
5. 预测与评估
预测:
y_pred = model.predict(X_test)
评估指标:
-
分类: 准确率(
accuracy_score
)、F1值(f1_score
)、混淆矩阵(confusion_matrix
)。 -
回归: 均方误差(
mean_squared_error
)、R²得分(r2_score
)。
python代码:
from sklearn.metrics import accuracy_score
print("Accuracy:", accuracy_score(y_test, y_pred))
6. 调参优化
网格搜索:
python代码:
from sklearn.model_selection import GridSearchCV
param_grid = {'n_estimators': [50, 100, 200], 'max_depth': [None, 5, 10]}
grid_search = GridSearchCV(model, param_grid, cv=5)
grid_search.fit(X_train, y_train)
print("Best params:", grid_search.best_params_)
7. 模型保存与部署
保存模型:
python代码:
import joblib
joblib.dump(model, 'model.pkl')
加载模型:
model = joblib.load('model.pkl')
3.注意事项
-
数据预处理:确保数据清洗和标准化,避免特征量纲影响模型。
-
过拟合与欠拟合:
-
过拟合:使用正则化、交叉验证、简化模型。
-
欠拟合:增加特征、使用复杂模型。
-
-
模型解释性:线性模型和决策树可解释性强,随机森林和神经网络较难解释。
-
特征重要性:通过
model.feature_importances_
查看关键特征。
通过以上步骤,可以快速构建一个完整的机器学习模型。实际应用中需根据数据特性和问题类型灵活选择算法和参数。