亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Python > 正文

python調參神器hyperopt

2019-11-06 07:47:14
字體:
來源:轉載
供稿:網友
Hyperopt庫為python中的模型選擇和參數優化提供了算法和并行方案。機器學習常見的模型有KNN,SVM,PCA,決策樹,GBDT等一系列的算法,但是在實際應用中,我們需要選取合適的模型,并對模型調參,得到一組合適的參數。尤其是在模型的調參階段,需要花費大量的時間和精力,卻又效率低下。但是我們可以換一個角度來看待這個問題,模型的選取,以及模型中需要調節的參數,可以看做是一組變量,模型的質量標準(比如正確率,AUC)等等可以看做是目標函數,這個問題就是超參數的優化的問題。我們可以使用搜索算法來解決。def q (args) : x, y = args return x ?? 2 + y ?? 2

Hyperopt提供了一個優化接口,這個接口接受一個評估函數和參數空間,能計算出參數空間內的一個點的損失函數值。用戶還要指定空間內參數的分布情況。 Hyheropt四個重要的因素:指定需要最小化的函數,搜索的空間,采樣的數據集(trails database)(可選),搜索的算法(可選)。 首先,定義一個目標函數,接受一個變量,計算后返回一個函數的損失值,比如要最小化函數q(x,y) = x**2 + y**2:

from hyperopt import hpspace = [hp.uniform(’x’, 0, 1), hp.normal(’y’, 0, 1)]

然后,定義一個參數空間,比如x在0-1區間內取值,y是實數,所以

第三,指定搜索的算法,算法也就是hyperopt的fmin函數的algo參數的取值。當前支持的算法由隨機搜索(對應是hyperopt.rand.suggest),模擬退火(對應是hyperopt.anneal.suggest),TPE算法。舉個栗子:

from hyperopt import hp, fmin, rand, tpe, space_evalbest = fmin(q, space, algo=rand.suggest)PRint space_eval(space, best)

搜索算法本身也有內置的參數決定如何去優化目標函數,我們可以指定搜索算法的參數,比如針對TPE,指定jobs:

from functools import partialfrom hyperopt import hp, fmin, tpealgo = partial(tpe.suggest, n_startup_jobs=10)best = fmin(q, space, algo=algo)print space_eval(space, best)

關于參數空間的設置,比如優化函數q,輸入fmin(q,space=hp.uniform(‘a’,0,1)).hp.uniform函數的第一個參數是標簽,每個超參數在參數空間內必須具有獨一無二的標簽。hp.uniform指定了參數的分布。其他的參數分布比如 hp.choice返回一個選項,選項可以是list或者tuple.options可以是嵌套的表達式,用于組成條件參數。 hp.pchoice(label,p_options)以一定的概率返回一個p_options的一個選項。這個選項使得函數在搜索過程中對每個選項的可能性不均勻。 hp.uniform(label,low,high)參數在low和high之間均勻分布。 hp.quniform(label,low,high,q),參數的取值是round(uniform(low,high)/q)*q,適用于那些離散的取值。 hp.loguniform(label,low,high)繪制exp(uniform(low,high)),變量的取值范圍是[exp(low),exp(high)] hp.randint(label,upper) 返回一個在[0,upper)前閉后開的區間內的隨機整數。 搜索空間可以含有list和dictionary.

from hyperopt import hplist_space = [hp.uniform(’a’, 0, 1),hp.loguniform(’b’, 0, 1)]tuple_space = (hp.uniform(’a’, 0, 1),hp.loguniform(’b’, 0, 1))dict_space = {’a’: hp.uniform(’a’, 0, 1),’b’: hp.loguniform(’b’, 0, 1)}

使用sample函數從參數空間內采樣:

from hyperopt.pyll.stochasti import sampleprint sample(list_space)# => [0.13, .235]print sample(nested_space)# => [[{’case’: 1, ’a’, 0.12‘}, {’case’: 2, ’b’: 2.3}],# ’extra_literal_string’,# 3]

在參數空間內使用函數:

from hyperopt.pyll import scopedef foo(x):return str(x) ? 3expr_space = {’a’: 1 + hp.uniform(’a’, 0, 1),’b’: scope.minimum(hp.loguniform(’b’, 0, 1), 10),’c’: scope.call(foo, args=(hp.randint(’c’, 5),)),}

—————–這是一條有點短的昏割線———————————–

在blog上發現了一段使用感知器判別鳶尾花數據的代碼,使用的學習率是0.1,迭代40次得到了一個測試集上正確率為82%的結果。使用hyperopt優化參數,將正確率提升到了91%。

from sklearn import datasetsimport numpy as npfrom sklearn.cross_validation import train_test_splitfrom sklearn.metrics import accuracy_scoreiris = datasets.load_iris()X = iris.datay = iris.targetX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)from sklearn.preprocessing import StandardScalersc = StandardScaler()sc.fit(X_train)X_train_std = sc.transform(X_train)X_test_std = sc.transform(X_test)from sklearn.linear_model import Perceptronppn = Perceptron(n_iter=40, eta0=0.1, random_state=0)ppn.fit(X_train_std, y_train)y_pred = ppn.predict(X_test_std)print accuracy_score(y_test, y_pred)def percept(args): global X_train_std,y_train,y_test ppn = Perceptron(n_iter=int(args["n_iter"]),eta0=args["eta"]*0.01,random_state=0) ppn.fit(X_train_std, y_train) y_pred = ppn.predict(X_test_std) return -accuracy_score(y_test, y_pred)from hyperopt import fmin,tpe,hp,partialspace = {"n_iter":hp.choice("n_iter",range(30,50)), "eta":hp.uniform("eta",0.05,0.5)}algo = partial(tpe.suggest,n_startup_jobs=10)best = fmin(percept,space,algo = algo,max_evals=100)print bestprint percept(best)#0.822222222222#{'n_iter': 14, 'eta': 0.12877033763511717}#-0.911111111111

xgboost具有很多的參數,把xgboost的代碼寫成一個函數,然后傳入fmin中進行參數優化,將交叉驗證的auc作為優化目標。auc越大越好,由于fmin是求最小值,因此求-auc的最小值。所用的數據集是202列的數據集,第一列樣本id,最后一列是label,中間200列是屬性。

#coding:utf-8import numpy as npimport pandas as pdfrom sklearn.preprocessing import MinMaxScalerimport xgboost as xgbfrom random import shufflefrom xgboost.sklearn import XGBClassifierfrom sklearn.cross_validation import cross_val_scoreimport pickleimport timefrom hyperopt import fmin, tpe, hp,space_eval,rand,Trials,partial,STATUS_OKdef loadFile(fileName = "E://zalei//browsetop200Pca.csv"): data = pd.read_csv(fileName,header=None) data = data.values return datadata = loadFile()label = data[:,-1]attrs = data[:,:-1]labels = label.reshape((1,-1))label = labels.tolist()[0]minmaxscaler = MinMaxScaler()attrs = minmaxscaler.fit_transform(attrs)index = range(0,len(label))shuffle(index)trainIndex = index[:int(len(label)*0.7)]print len(trainIndex)testIndex = index[int(len(label)*0.7):]print len(testIndex)attr_train = attrs[trainIndex,:]print attr_train.shapeattr_test = attrs[testIndex,:]print attr_test.shapelabel_train = labels[:,trainIndex].tolist()[0]print len(label_train)label_test = labels[:,testIndex].tolist()[0]print len(label_test)print np.mat(label_train).reshape((-1,1)).shapedef GBM(argsDict): max_depth = argsDict["max_depth"] + 5 n_estimators = argsDict['n_estimators'] * 5 + 50 learning_rate = argsDict["learning_rate"] * 0.02 + 0.05 subsample = argsDict["subsample"] * 0.1 + 0.7 min_child_weight = argsDict["min_child_weight"]+1 print "max_depth:" + str(max_depth) print "n_estimator:" + str(n_estimators) print "learning_rate:" + str(learning_rate) print "subsample:" + str(subsample) print "min_child_weight:" + str(min_child_weight) global attr_train,label_train gbm = xgb.XGBClassifier(nthread=4, #進程數 max_depth=max_depth, #最大深度 n_estimators=n_estimators, #樹的數量 learning_rate=learning_rate, #學習率 subsample=subsample, #采樣數 min_child_weight=min_child_weight, #孩子數 max_delta_step = 10, #10步不降則停止 objective="binary:logistic") metric = cross_val_score(gbm,attr_train,label_train,cv=5,scoring="roc_auc").mean() print metric return -metricspace = {"max_depth":hp.randint("max_depth",15), "n_estimators":hp.randint("n_estimators",10), #[0,1,2,3,4,5] -> [50,] "learning_rate":hp.randint("learning_rate",6), #[0,1,2,3,4,5] -> 0.05,0.06 "subsample":hp.randint("subsample",4),#[0,1,2,3] -> [0.7,0.8,0.9,1.0] "min_child_weight":hp.randint("min_child_weight",5), # }algo = partial(tpe.suggest,n_startup_jobs=1)best = fmin(GBM,space,algo=algo,max_evals=4)print bestprint GBM(best)

hyperopt文獻原文介紹: 鏈接:http://pan.baidu.com/s/1i5aAXKx 密碼:2gtr


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91精品国产沙发| 欧美激情精品久久久久久大尺度| 亚洲欧美国产高清va在线播| 91久久精品国产91久久| 欧美视频在线免费看| 日韩免费看的电影电视剧大全| 久热精品视频在线观看| 日韩电影免费观看在线| 国产精品成人一区二区三区吃奶| 91成人国产在线观看| 欧美极品在线视频| 国产精品免费视频xxxx| 久久91亚洲精品中文字幕奶水| 成人午夜激情网| 久久99亚洲热视| 国产精品久久久久久久久免费看| 成人精品一区二区三区电影黑人| 久久免费视频在线观看| 不用播放器成人网| 日韩av电影在线网| 色婷婷久久一区二区| 久久久伊人欧美| 欧美久久精品午夜青青大伊人| 91精品国产91久久久久久吃药| 亚洲网在线观看| 国产99久久久欧美黑人| 国产视频综合在线| 中文.日本.精品| 亚洲人成电影网站色| 欧美大片大片在线播放| 亚洲偷熟乱区亚洲香蕉av| 久久精品福利视频| 日韩免费看的电影电视剧大全| 日韩精品有码在线观看| 欧美成aaa人片免费看| 91精品视频一区| 国产日韩欧美黄色| 亚洲乱码国产乱码精品精| 亚洲精品电影在线观看| 日韩欧美中文字幕在线观看| 欧美日韩成人精品| 红桃视频成人在线观看| 国产精品男女猛烈高潮激情| 668精品在线视频| 国产亚洲日本欧美韩国| 奇米影视亚洲狠狠色| 在线观看国产精品91| 久久久999精品视频| 日韩久久精品电影| 国产成人精品免费久久久久| 亚洲在线免费视频| 91免费版网站入口| 国产成人精品a视频一区www| 日韩欧美在线免费| 欧美亚洲在线播放| 一二美女精品欧洲| 日本精品中文字幕| 精品国产乱码久久久久久天美| 亚洲国产精品va在线看黑人| 日韩精品在线电影| 中文在线资源观看视频网站免费不卡| 日韩电影中文字幕在线| 97视频在线观看亚洲| 奇米四色中文综合久久| 欧美激情欧美激情在线五月| 日韩中文字幕免费视频| 国产精品男女猛烈高潮激情| 欧美在线观看网站| 国产在线98福利播放视频| 视频在线观看一区二区| 久久成年人视频| 欧美高清激情视频| 欧美亚洲国产视频| 欧美性极品少妇精品网站| 成人免费网站在线观看| 国产97在线|日韩| 欧美日韩午夜剧场| 欧美亚洲视频在线看网址| 九九精品在线观看| 日本免费在线精品| 亚洲成人激情小说| 日韩激情视频在线播放| 日韩影视在线观看| 91成品人片a无限观看| 日韩精品欧美国产精品忘忧草| 日韩在线资源网| 日韩欧美在线视频日韩欧美在线视频| 国产成人jvid在线播放| 亚洲成人动漫在线播放| 午夜精品久久久久久久99热| 国产一区玩具在线观看| 亚洲精品日韩在线| 日韩国产欧美精品一区二区三区| 日韩有码片在线观看| 国产91精品黑色丝袜高跟鞋| 国产成人精品久久| 2019中文在线观看| 亚洲一区二区三区毛片| 美日韩精品免费视频| 第一福利永久视频精品| 欧美限制级电影在线观看| 九九热精品视频| 日产精品99久久久久久| 2019亚洲日韩新视频| 日韩av三级在线观看| 欧美一级大片视频| 精品久久久一区二区| 国产精品激情av电影在线观看| 中文欧美日本在线资源| 最新国产成人av网站网址麻豆| 97在线免费观看视频| 日韩av成人在线观看| 亚洲在线观看视频| 久久精品电影网站| 色一情一乱一区二区| 日韩电影大片中文字幕| 精品久久久久久中文字幕大豆网| 久久久91精品| 夜夜嗨av一区二区三区免费区| 亚洲美女精品久久| 欧美午夜片在线免费观看| 色噜噜久久综合伊人一本| 久久久久中文字幕| 麻豆精品精华液| 69久久夜色精品国产7777| 国产精品高精视频免费| 久久久亚洲成人| 精品福利视频导航| 亚洲欧美成人一区二区在线电影| www.日韩欧美| 欧美极品在线视频| 奇米四色中文综合久久| 欧美极品第一页| 国产精品一区二区久久国产| 日本不卡高字幕在线2019| 国产成人高清激情视频在线观看| 久久久久久国产精品久久| 日韩中文字幕国产精品| 2019日本中文字幕| 国产精品久久久久久久久粉嫩av| 亚洲曰本av电影| 亚洲精品欧美日韩专区| 国产精品一区二区在线| 成人午夜在线观看| 成人性教育视频在线观看| 国产在线观看精品一区二区三区| 国产精品女主播视频| 亚洲欧美国产精品va在线观看| 九九九久久久久久| 国产日韩精品在线观看| 欧美在线免费视频| 亚洲精品福利免费在线观看| 国内精品久久久久久久| 欧美性极品少妇精品网站| 91免费看片在线| 国产a级全部精品| 91精品国产91久久久久| 亚洲国产成人精品久久久国产成人一区| 欧美精品videofree1080p| 国产精品91一区| 黑人巨大精品欧美一区二区免费| 久热精品视频在线免费观看| 中文字幕日韩在线观看| 81精品国产乱码久久久久久|