日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

auto-sklearn案例解析一

發(fā)布時間:2025/3/21 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 auto-sklearn案例解析一 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

簡單的使用

>>> import autosklearn.classification>>> cls = autosklearn.classification.AutoSklearnClassifier()>>> cls.fit(X_train, y_train)>>> predictions = cls.predict(X_test)

該例子來自于官網(wǎng)首頁.
直接調(diào)用autosklearn自動分類器即可使用,但是其他參數(shù)會直接選擇默認參數(shù).autosklearn與sklearn的訓練fit與predict參數(shù)是極其相似的,但是不懂的地方在于autosklearn的fit方法,訓練的是一堆的機器學習算法,以及數(shù)據(jù)預處理算法,預測predict同樣的也是被選出來的最佳模型的預測結果.

fit()方法默認的總是時間為time_left_for_this_task=3600, 每個算法的自動調(diào)優(yōu)時間為per_run_time_limit=360,官方建議的時間為24個小時,即time_left_for_this_task=86400,每個模型的計算時間為一個小時,即為:per_run_time_limit=3600.

注意:在實際的測試中autosklearn想要獲得不錯的最終運算效果,確實需要話費大量的時間,如果時間僅僅是幾個小時的話,很有可能它的最終結果要低于手動調(diào)優(yōu)的結果,你可以使用限制算法選擇來加快計算速度.雖然一般而言autosklearn的在足夠的運算時間后,能夠獲取高于手動調(diào)優(yōu)的結果,但是我想你很多時候還是需要其他方式比如sklearn自帶的網(wǎng)格搜索或者隨機搜索,亦或是hyperopt這樣的調(diào)參神器.

限制搜索域

例子:

automl = autosklearn.classification.AutoSklearnClassifier(time_left_for_this_task=120, per_run_time_limit=120,include_estimators=["random_forest", ], exclude_estimators=None,include_preprocessors=["no_preprocessing", ], exclude_preprocessors=None)

其中參數(shù)include_estimators,要搜索的方法,exclude_estimators:為不搜索的方法.與參數(shù)include_estimators不兼容
include_preprocessors,可以參考手冊中的內(nèi)容

預處理在 auto-sklearn中共 分為數(shù)據(jù)預處理和 特征預處理功能兩個功能。 數(shù)據(jù)預處理包括一個對分類特征的獨熱編碼,對缺失值的處理,以及對特征和樣本的歸一化處理,這些步驟目前是無法關閉的.特征預處理則是一個單一的transformer(sklearn中對特征處理算法的稱呼與機器學習算法 估計器estimator相對應),其實現(xiàn)了特征選擇與將特征轉(zhuǎn)換到不同空間(PCA).如前面的代碼所示,這可以通過 include_preprocessors=[“no_preprocessing”, ]來關閉.

exclude_preprocessors作用與exclude_estimators相似,含義就是不使用的預處理方式.與include_preprocessors不兼容

保存運算數(shù)據(jù)以及模型

保存運算數(shù)據(jù)

由之前的例子我們可知,autosklearn在運算會產(chǎn)生兩個文件夾,其中保存著運行的文件,而且這兩個文件的存儲位置有我們設定,但是因為在運算完之后這兩個文件夾默認就會被刪除,所以假如我們想要看到這兩個文件夾中的文件,我們需要對我們的參數(shù)進行設置:

# 第一個例子保存數(shù)據(jù)automl = autosklearn.classification.AutoSklearnClassifier(time_left_for_this_task=120, per_run_time_limit=120,tmp_folder='/home/fonttian/Data/Auto-sklearn/tmp/example_output_example_tmp',output_folder='/home/fonttian/Data/Auto-sklearn/tmp/example_output_example_out',delete_tmp_folder_after_terminate=False, delete_output_folder_after_terminate=False)

如上圖所示,必須設置兩個文件夾的位置,然后設置,delete_tmp_folder_after_terminate=False, delete_output_folder_after_terminate=False兩個參數(shù)為False,這兩個參數(shù)的作用是設置兩個對應文件在運算完畢后刪除

在以上參數(shù)的情況下,你還可以設置SMAC共享模型,參數(shù)為shared_mode=True,

保存模型

根據(jù)官網(wǎng)首頁的說法,模型的持久化方式與sklearn相似.我們確實可以采取相似的辦法進行處理.

# 第二個例子:存儲模型,并加載import pickles = pickle.dumps(automl)with open('example_output_pickle.pkl', 'wb') as f:f.write(s)with open('example_output_pickle.pkl', 'rb') as f:s2 = f.read()clf = pickle.loads(s2)predictions = clf.predict(X_test)print("Accuracy score", sklearn.metrics.accuracy_score(y_test, predictions))

或者使用joblib進行模型的存儲與加載,兩者效果差距不大,但是似乎joblib更好一些,但是有一點是同樣的就是隨著版本的改變同一個pkl文件不一定能夠被不同的版本加載并使用:

# 第三個例子:joblib 存儲模型并加載from sklearn.externals import joblibjoblib.dump(automl, 'example_output_joblib.pkl')clf = joblib.load('example_output_joblib.pkl')

評價函數(shù)其其他內(nèi)容請見另一篇筆記

防止過擬合

防止過擬合的參數(shù)為resampling_strategy 與 resampling_strategy_arguments

前者是字符串屬性的參數(shù),可選

  • ‘holdout’:分裂數(shù)據(jù)集為train:test,默認為0.67,即train:test = 0.67:0.33
  • ‘holdout-iterative-fit’: 分裂方式與上面相同,但是在可能的情況下誰使用迭代匹配
  • ‘cv’:進行交叉驗證

第二個參數(shù),則是對前一個參數(shù)進行設置的參數(shù),其輸入類型為dict,范圍:
‘holdout’: {‘train_size’: float} * ‘holdout-iterative-fit’: {‘train_size’: float} * ‘cv’: {‘folds’: int}

除此之外,如果使用前面的兩個參數(shù)的話,在 fit 完畢,選擇出最佳模型之后,還需要 refit 一次,這樣原來的模型才能根據(jù)新的數(shù)據(jù)進行調(diào)整,然后才能進行預測,直接使用 refit 命令無法進行預測,而只是用fit命令,不適用 refit 命令也會報下面的錯錯,:

'strategy %s, please call refit().' % self._resampling_strategy) NotImplementedError: Predict is currently not implemented for resampling strategy cv, please call refit().

中文翻譯鏈接

  • 官網(wǎng)首頁
  • AutoSklearn手冊

總結

以上是生活随笔為你收集整理的auto-sklearn案例解析一的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。