标签:遗传算法 amp tar knn personal 大数据 简单 贵的 ids
现在的机器学习和深度学习中,在模型结构确定的情况下,不同的超参数的选择对整个结果的好坏有着至关重要的影响。不少人还嬉称人工智能工程师,其实是“调参侠”。
Grid Search用的是穷举搜索:在所有候选的参数选择中,通过循环遍历,尝试每一种可能性,表现最好的参数就是最终的结果。其原理就像是在数组里找最大值。(为什么叫网格搜索?以有两个参数的模型为例,参数a有3种可能,参数b有4种可能,把所有可能性列出来,可以表示成一个3*4的表格,其中每个cell就是一个网格,循环过程就像是在每个网格里遍历、搜索,所以叫grid search)
随机搜索是一种在巨大数据规模下执行一个耗时上无法接受的程序的优化方法。
随机搜索的算法类型:
这里给出一个GridSearch和RandomSearch的简单使用方式,方便同学们测试功能用。
from sklearn.neighbors import KNeighborsClassifier
from sklearn import datasets
from sklearn.model_selection import GridSearchCV,RandomizedSearchCV
from sklearn.model_selection import train_test_split
# 加载数据集
iris = datasets.load_iris()
data = iris.data
label = iris.target
# 数据集分割
X_train,X_test,y_train,y_test = train_test_split(data,label,test_size=0.3,random_state=2)
knn_clf_orogin = KNeighborsClassifier()
# 搜索的超参数范围
param_grid ={
'weights':['distance'],
'n_neighbors':[i for i in range(1,11)],
'p':[i for i in range(1,6)]
}
grid_search = GridSearchCV(knn_clf,param_grid,n_jobs=-1,verbose=2)
grid_search.fit(X_train,y_train)
knn_clf1 = grid_search.best_estimator_
y_pre = knn_clf1.predict(X_test)
knn_clf1.score(X_test,y_pre)
# print('grid_search-度量记录:',grid_search.cv_results_)
print('grid_search-最佳度量值:',grid_search.best_score_)
print('grid_search-最佳参数:',grid_search.best_params_)
print('grid_search-最佳模型:',grid_search.best_estimator_)
random_search = RandomizedSearchCV(knn_clf_orogin,param_grid,n_jobs=-1,verbose=2)
random_search.fit(X_train,y_train)
knn_clf2 = random_search.best_estimator_
y_pre = knn_clf2.predict(X_test)
knn_clf2.score(X_test,y_pre)
# print('random_search-度量记录:',random_search.cv_results_)
print('random_search-最佳度量值:',random_search.best_score_)
print('random_search-最佳参数:',random_search.best_params_)
print('random_search-最佳模型:',random_search.best_estimator_)
虽然随机搜索得到的结果互相之间差异较大,但是实验证明随机搜索的确比网格搜索效果要好。
贝叶斯优化其实就是基于模型的超参数优化,根据已有的采样点预估函数,不断迭代获得最大值的一个算法。
标签:遗传算法 amp tar knn personal 大数据 简单 贵的 ids
原文地址:https://www.cnblogs.com/huangyc/p/11519129.html