在Scikit-learn中,可以使用RandomizedSearchCV來實現隨機搜索。RandomizedSearchCV會在指定的參數空間中隨機選擇一組參數組合,并對這些參數組合進行交叉驗證來找到最優的參數設置。
下面是一個簡單的示例代碼,演示了如何使用RandomizedSearchCV進行隨機搜索:
from sklearn.model_selection import RandomizedSearchCV
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_iris
# 加載數據
iris = load_iris()
X, y = iris.data, iris.target
# 定義參數空間
param_dist = {
'n_estimators': [10, 50, 100, 200],
'max_depth': [None, 10, 20, 30, 40, 50],
'min_samples_split': [2, 5, 10],
'min_samples_leaf': [1, 2, 4]
}
# 初始化隨機搜索
rf = RandomForestClassifier()
random_search = RandomizedSearchCV(rf, param_dist, n_iter=10, cv=5)
# 進行隨機搜索
random_search.fit(X, y)
# 輸出最優參數設置和交叉驗證得分
print("Best parameters found: ", random_search.best_params_)
print("Best cross-validation score: ", random_search.best_score_)
在上面的代碼中,我們首先加載了一個伊利斯數據集,然后定義了一個隨機森林分類器的參數空間。接下來,我們初始化了一個RandomizedSearchCV對象,指定了要搜索的參數空間、迭代次數和交叉驗證的折數。最后,使用fit()方法運行隨機搜索,并輸出最優的參數設置和交叉驗證得分。
通過使用RandomizedSearchCV,我們可以更有效地搜索最優的參數設置,從而提高模型的性能。