Sklearn GridSearchCV 引數優化
2018/3/16更新:
遇到個引數優化的需求,不禁想起了網格搜尋演算法,還是比較好用的,存在的問題:速度慢,每次更新引數都需要重訓練,所以針對這個問題需要自己權衡;下面就已隨機森林演算法為例,做一個網格優化的Demo。
程式碼如下:這個程式碼主要優化的是森林規模、森林深度和樣本權重
import pandas as pd
import numpy as np
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import classification_report,confusion_matrix
from sklearn.metrics import accuracy_score,f1_score
from sklearn.grid_search import GridSearchCV
from sklearn import metrics
def fea_select():
train_data = pd.read_csv(r'data.csv')
test_data = pd.read_csv(r'data.csv')
train_label = train_data['41']
test_label = test_data['41']
return train_data,test_data,train_label,test_label
def test_result(train_data,test_data,train_label,test_label):
n = 200
weight_dis = []
while n>0:
weight_dis.append({0:1,1:3,2:1,3:1+0.01*n,4:0.02*n})
n -= 1
sel_train = train_data[['0','2','3','4','5','9',
'11','12','22','23','25','26','27','31','32','33','34',
'35','36','37','38','39']]
sel_test = test_data[['0','2','3','4','5','9',
'11','12','22','23','25','26','27','31','32','33','34',
'35','36','37','38','39']]
over_train = sel_train.iloc[1003:,:]
over_train = over_train.reset_index(drop=True)
over_label = train_label.iloc[1003:]
#thr_train = over_train.iloc[0:25,:]
#thr_label = pd.DataFrame([3]*len(thr_train))
new_train = pd.concat([sel_train,over_train],axis=0)
new_label = pd.concat([train_label,over_label],axis=0)
parameters = {'n_estimators':[x for x in range(50,500,20)],'max_depth':[x for x in range(5,25,1)],'class_weight':weight_dis}
rf = RandomForestClassifier()
gride = GridSearchCV(rf, parameters, scoring = 'precision_weighted' )
gride.fit(new_train,new_label)
print(gride.best_score_)
print(gride.best_params_)
之後列印最佳訓練分數和模型最佳引數;但是對於引數優化而言,需要告知模型一個評分標準,是準確率,損失等等;本例中用的是 precision_weight;如果需要定製,可以利用make_scorer進行定製,例如:
def loss_func(y_truth, y_predict):
diff = np.abs(ground_truthpredictions).max()
return np.log(1 + diff)
loss = make_scorer(loss_func, greater_is_better=False)
通過make_scorer封裝之後,實現介面,可以在scoring = 'loss’,完成私人配置。
以上就是Sklearn基本的引數優化和評估定製方法,有不懂的地方可以問我!
轉載請註明出處!
相關文章
- sklearn使用小記GridSearchCV
- linux核心引數優化重要項Linux優化
- swoole優化核心引數調整優化
- sklearn: CountVectorize處理及一些使用引數
- SKlearn中分類決策樹的重要引數詳解
- sklearn與XGBoost庫xgboost演算法引數總結演算法
- VNPY 批量優化引數,並輸出到excel優化Excel
- 介紹tomcat Connector 引數優化說明Tomcat優化
- 調優引數
- RocketMQ 4.2.0 broker JVM優化引數深入刨析MQJVM優化
- 實用TCP協議(2):TCP 引數優化TCP協議優化
- mysql 引數調優MySql
- 利用粒子群優化演算法(PSO)來優化vnpy的量化策略引數優化演算法
- mysql之 CentOS系統針對mysql引數優化MySqlCentOS優化
- 淺析MySQL語句優化中的explain引數MySql優化AI
- 【效能優化之道】每秒上萬併發下的Spring Cloud引數優化實戰優化SpringCloud
- 數倉調優實戰:GUC引數調優
- lr引數化
- JVM 引數調優(qbit)JVM
- JVM常用調優引數JVM
- 1,Spark引數調優Spark
- locust 如何引數化?
- pytest(8)-引數化
- irace package -- 引數調優神器Package
- 谷歌提出最新引數優化方法Adafactor,已在TensorFlow中開源谷歌優化
- VNPY引數優化功能v1版本中的一個更新引數批量生成方法優化
- 利用 Laravel Macroable 特性優化多型引數傳遞的技巧分享LaravelMac優化多型
- MySQL 配置InnoDB配置非持久優化器統計資訊引數MySql優化
- tomcat 如何調優,涉及哪些引數Tomcat
- Android Jenkins引數化配置AndroidJenkins
- jmeter引數化介紹JMeter
- Pytest 引數化報錯
- pytest 引數化進階
- 16 初始化引數
- pytest-mark 引數化
- 【pytest系列】- parametrize引數化
- 一個小技巧,VNPY策略引數優化時候顯示完成數量和總數量優化
- 從記憶體洩露、記憶體溢位和堆外記憶體,JVM優化引數配置引數記憶體洩露記憶體溢位JVM優化