# -*- coding: utf-8 -*-
import time
import numpy as np
from sklearn.datasets import load_digits
from sklearn.ensemble import RandomForestClassifier
from sklearn.grid_search import GridSearchCV
from sklearn.grid_search import RandomizedSearchCV
# 生成数据
digits = load_digits()
X, y = digits.data, digits.target
# 元分类器
meta_clf = RandomForestClassifier(n_estimators=20)
# =================================================================
# 设置参数
param_dist = {"max_depth": [3, None],
"max_features": [1,5,7,11],
"min_samples_split": [1,5,7,11],
"min_samples_leaf": [1,5,7,11],
"bootstrap": [True, False],
"criterion": ["gini", "entropy"]}
# 运行随机搜索 RandomizedSearch
n_iter_search = 20
rs_clf = RandomizedSearchCV(meta_clf, param_distributions=param_dist,n_iter=n_iter_search)
start = time.time()
rs_clf.fit(X, y)
print("RandomizedSearchCV took %.2f seconds for %d candidates parameter settings." % ((time.time() - start), n_iter_search))
print(rs_clf.grid_scores_)
# =================================================================
# 设置参数
param_grid = {"max_depth": [3, None],
"max_features": [1, 3, 10],
"min_samples_split": [1, 3, 10],
"min_samples_leaf": [1, 3, 10],
"bootstrap": [True, False],
"criterion": ["gini", "entropy"]}
# 运行网格搜索 GridSearch
gs_clf = GridSearchCV(meta_clf, param_grid=param_grid)
start = time.time()
gs_clf.fit(X, y)
print("GridSearchCV took %.2f seconds for %d candidate parameter settings." % (time.time() - start, len(gs_clf.grid_scores_)))
print(gs_clf.grid_scores_)