當前位置:
首頁 > 最新 > 在Python中構建可部署的ML分類器

在Python中構建可部署的ML分類器

現在,由於問題的複雜性和大量數據的關聯,機器學習已經成為找到問題解決方案的必要、有效且高效的方式。在大多數資源中,為了檢查模型的準確性,在結構化數據中開發了機器學習模型。但是,實時開發機器學習模型的一些主要要求是在構建模型時處理不平衡數據,在模型中進行參數調整,並將模型保存到文件系統中供以後使用或部署。

在這裡,我們將看到如何在處理上面指定所有三個需求同時在python中設計一個二進位分類器。

在開發機器學習模型時,我們通常將所有創新都放在標準工作流程中。其中涉及的一些步驟是獲取數據,對其進行特徵工程,通過迭代訓練和測試構建具有適當參數的模型,並在生產環境中部署構建的模型。

機器學習工作流程

我們將通過構建一個二元分類器來預測紅酒的質量,從可用的功能中完成這一工作流程。該數據集可在UCI 機器學習存儲庫中公開獲得。Scikit學習庫用於分類器設計。

首先,我們需要導入所有必要的依賴關係並載入數據集。由於數據框架、矩陣和陣列操作都涉及到,所以在任何ml模型設計中,我們都需要numpy和pandas。

數據集看起來像。

從這裡可以看出,質量是由3到8的數字表示。為了使其成為二元分類問題,讓我們取> 5的質量設為好,否則為不好。

獲取數據描述的摘要。

從快照中可以看到,數據值在某些屬性上有相當的偏離。標準化這些值是一個很好的做法,因為它會使方差達到合理的水平。另外,由於大多數演算法在背景中使用歐氏距離,因此在模型構建中縮放特徵效果更好。

這裡使用了fit_transform,以使標準標量可以適應X_data並轉換X_data。如果你需要在兩個不同的數據集上進行擬合和轉換,也可以分別調用擬合和轉換函數。現在,我們共有1599個數據實例,其中855個質量差,744個質量好。

數據在這裡顯然是不平衡的,由於數據實例的數量較少,所以我們將進行過採樣。但重要的是要注意,重採樣應該總是只在訓練數據而不是測試、驗證數據上進行。現在,我們將數據集劃分為模型構建的訓練和測試數據集。

除了訓練和測試拆分之外,你還可以選擇更有效的交叉驗證方法。現在我們有588個質量差和531個質量好的訓練實例,仍有267個質量差和213個質量良好的實例。現在是對訓練數據進行重新採樣以平衡它的時候,這樣模型就不會出現偏差。這裡我們將使用SMOTE演算法進行過採樣。

經過抽樣調查,共有588例優質和劣質葡萄酒實例。那我們來看一下模型選擇,在這裡採用了隨機梯度分類器。但是,你可以檢查幾個模型,並比較準確性來選擇合適的。

結果看起來像。

得到的準確度是65.625%。學習率、損失函數等參數對模型的性能起主要作用。我們可以使用GridSearchCV有效地選擇模型的最佳參數。

從這裡可以看出,這裡只提供了損失函數和alpha值,以便為它們找到最佳選擇。其他參數也可以做到這一點,損失函數的最佳選擇似乎是「鉸鏈」的i.r.線性支持向量機和alpha值,它似乎是0.001。現在,我們將使用網格搜索選擇的最佳參數來構建模型。

現在,我們選擇了模型,調整了參數,以便在部署之前驗證模型。

從這裡可以看出,調整參數後,度量值已經提高了2-3%。準確度也從65.625%提高到70.625%。如果你對該模型不滿意,可以通過一些訓練和測試迭代來嘗試其他演算法。現在,由於模型已經建立,所以需要將其保存到文件系統以備後用或在其他地方部署。

當你需要分類器時,可以使用joblib簡單載入它,並通過特性樹組來獲得結果。

那麼,恭喜,現在你已經準備好了設計可部署的機器學習模型。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Python 的精彩文章:

小白Python編程從入門到實踐——序章
小白問Python頂級大牛:你這個級別的,你最怕什麼!

TAG:Python |