随机森林,决策树,svm,逻辑回归,k近邻的模型参数优化代码
时间: 2024-09-30 15:15:38 浏览: 36
随机森林、决策树、SVM(支持向量机)、逻辑回归和K近邻算法都是常用的机器学习模型,它们各自的参数优化通常涉及调整训练过程中的超参数。以下是每个模型简单参数优化的一般步骤:
1. **随机森林 (Random Forest)**:
- `n_estimators`: 树的数量。
- `max_depth` 或 `min_samples_split`: 决策树的深度或分裂最小样本数。
- `max_features`: 选择特征的数量。
- 可以使用 `GridSearchCV` 或 `RandomizedSearchCV` 进行优化:
```python
from sklearn.model_selection import RandomizedSearchCV
params = {
'n_estimators': [100, 500],
'max_depth': range(1, 31),
'max_features': ['auto', 'sqrt']
}
rf = RandomForestClassifier()
search = RandomizedSearchCV(rf, params, cv=5)
search.fit(X_train, y_train)
```
2. **决策树 (Decision Tree) / 随便树林 (Extra Trees)**
- `max_depth` 和 `min_samples_split` 类似于随机森林。
- `criterion` (如 Gini 或 Entropy) 表示分割准则。
- `max_features` 可选。
3. **SVM (Support Vector Machine)**
- `C`: 正则化强度。
- `kernel`: 内核函数(如线性、RBF等)。
- `gamma` 或 `degree` 对于某些内核很重要。
```python
from sklearn.model_selection import GridSearchCV
params = {
'C': [0.1, 1, 10],
'kernel': ['linear', 'rbf'],
}
svc = SVC()
grid_search = GridSearchCV(svc, params, cv=5)
grid_search.fit(X_train, y_train)
```
4. **逻辑回归 (Logistic Regression)**
- `C`: 正则化系数。
- `penalty` (L1 or L2)。
```python
from sklearn.linear_model import LogisticRegression
params = {'C': [0.001, 0.1, 1], 'penalty': ['l1', 'l2']}
lr = LogisticRegression()
grid_search = GridSearchCV(lr, params, cv=5)
grid_search.fit(X_train, y_train)
```
5. **K近邻 (K-Nearest Neighbors, KNN)**
- `n_neighbors`: 最近邻居数量。
- `weights` (uniform, distance) 计算距离的方式。
```python
from sklearn.neighbors import KNeighborsClassifier
params = {'n_neighbors': [3, 5, 7], 'weights': ['uniform', 'distance']}
knn = KNeighborsClassifier()
grid_search = GridSearchCV(knn, params, cv=5)
grid_search.fit(X_train, y_train)
```
对于以上每一种模型,你可以通过交叉验证评估每个参数组合的效果,并选择性能最好的参数。记得先划分数据集到训练集和测试集。最后的优化代码会返回最佳参数估计以及对应的模型。
阅读全文