model_selection
时间: 2024-05-24 12:08:21 浏览: 106
`model_selection`模块是Scikit-learn中非常重要的模块之一,它提供了用于模型选择和评估的工具。主要目的是从数据集中选择合适的训练集和验证集,并进行模型评估和参数调整的技术,以获得更好的泛化性能。 以下是一些 `model_selection` 中的常用方法示例:
1. 数据集分割成训练和测试集
```python
from sklearn.model_selection import train_test_split
X, y = dataset.data, dataset.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)
```
2. K-Fold 交叉验证
```python
from sklearn.model_selection import KFold
kf = KFold(n_splits=10, random_state=0, shuffle=True)
for train_index, test_index in kf.split(X):
X_train, X_test = X[train_index], X[test_index]
y_train, y_test = y[train_index], y[test_index]
```
3. 网格搜索
网格搜索是一种超参数选择技术,它搜索一组预定义的超参数,通常通过交叉验证来评估超参数的性能。 `GridSearchCV` 是 Scikit-learn 中最常用的网格搜索类之一。
```python
from sklearn.model_selection import GridSearchCV
param_grid = {'C': [0.1, 1, 10], 'gamma': [0.1, 1, 10]}
grid_search = GridSearchCV(svm.SVC(), param_grid, cv=5)
grid_search.fit(X_train, y_train)
```
4. 随机搜索
随机搜索是一种超参数选择技术,它搜索预定义的超参数范围,通常通过交叉验证来评估超参数的性能。 `RandomizedSearchCV` 是 Scikit-learn 中最常用的随机搜索类之一。
```python
from sklearn.model_selection import RandomizedSearchCV
from scipy.stats import uniform
param_dist = {'C': uniform(loc=0, scale=4), 'penalty': ['l1', 'l2']}
random_search = RandomizedSearchCV(estimator=LogisticRegression(), param_distributions=param_dist, n_iter=100, random_state=0)
random_search.fit(X_train, y_train)
```
阅读全文