机器学习算法详解
一、监督学习算法
1. 线性模型
- 线性回归
- 逻辑回归
- 支持向量机(SVM)
2. 树模型
- 决策树
- 随机森林
- XGBoost/LightGBM
3. 概率模型
- 朴素贝叶斯
- 高斯混合模型
- 隐马尔可夫模型
二、无监督学习算法
1. 聚类算法
- K-means
- DBSCAN
- 层次聚类
2. 降维算法
- PCA
- t-SNE
- UMAP
三、算法实现示例
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import classification_report
# 数据准备
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
# 特征标准化
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
# 逻辑回归
lr_model = LogisticRegression()
lr_model.fit(X_train_scaled, y_train)
lr_pred = lr_model.predict(X_test_scaled)
print("逻辑回归结果:")
print(classification_report(y_test, lr_pred))
# 随机森林
rf_model = RandomForestClassifier()
rf_model.fit(X_train_scaled, y_train)
rf_pred = rf_model.predict(X_test_scaled)
print("
随机森林结果:")
print(classification_report(y_test, rf_pred))四、模型评估
1. 分类问题评估指标
- 准确率(Accuracy)
- 精确率(Precision)
- 召回率(Recall)
- F1分数
2. 回归问题评估指标
- MSE(均方误差)
- MAE(平均绝对误差)
- R²分数
五、模型调优
1. 交叉验证
from sklearn.model_selection import cross_val_score
# 5折交叉验证
scores = cross_val_score(model, X, y, cv=5)
print("交叉验证分数:", scores.mean(), "±", scores.std())2. 网格搜索
from sklearn.model_selection import GridSearchCV
param_grid = {
'n_estimators': [100, 200, 300],
'max_depth': [10, 20, 30, None]
}
grid_search = GridSearchCV(RandomForestClassifier(), param_grid, cv=5)
grid_search.fit(X_train, y_train)
print("最佳参数:", grid_search.best_params_)六、特征工程
1. 特征选择
- 方差选择
- 相关性分析
- 特征重要性
2. 特征创建
- 多项式特征
- 交互特征
- 时间特征
七、实战技巧
1. 处理不平衡数据
- 过采样(SMOTE)
- 欠采样
- 类别权重调整
2. 处理缺失值
- 均值/中位数填充
- 模型预测填充
- 特殊值填充
八、进阶主题
1. 集成学习
- Bagging
- Boosting
- Stacking
2. 在线学习
- 增量学习
- 流式学习
- 概念漂移处理