低代碼機(jī)器學(xué)習(xí)工具(低代碼原理)
具有PyCaret,BigQueryML和fastai的低代碼AI
> Photo by Kasya Shahovskaya on Unsplash
機(jī)器學(xué)習(xí)有潛力幫助解決企業(yè)和整個(gè)世界范圍內(nèi)的各種問題。 通常,要開發(fā)機(jī)器學(xué)習(xí)模型并將該模型部署到可以在操作上使用的狀態(tài),需要對(duì)編程有深入的了解,并且需要充分了解其背后的算法。
這將機(jī)器學(xué)習(xí)的使用限制在一小部分人中,因此也限制了可以解決的問題數(shù)量。
幸運(yùn)的是,在過去的幾年中,涌現(xiàn)了許多庫和工具,這些庫和工具減少了模型開發(fā)所需的代碼量,或者在某些情況下完全消除了代碼開發(fā)。 這為非數(shù)據(jù)科學(xué)家(如分析師)發(fā)揮了利用機(jī)器學(xué)習(xí)功能的潛力,并允許數(shù)據(jù)科學(xué)家更快地對(duì)模型進(jìn)行原型制作。
這是一些我最喜歡的用于機(jī)器學(xué)習(xí)的低代碼工具。
PyCaret
PyCaret是Python的包裝器,用于流行的機(jī)器學(xué)習(xí)庫,例如Scikit-learn和XGBoost。 它使僅需幾行代碼就能將模型開發(fā)為可部署狀態(tài)。
可以通過pip安裝Pycaret。 有關(guān)更詳細(xì)的安裝說明,請(qǐng)參閱PyCaret文檔。
pip install pycaret
PyCaret具有公共數(shù)據(jù)集的存儲(chǔ)庫,可以使用pycaret.datasets模塊直接安裝。 完整列表可在此處找到,但出于本教程的目的,我們將使用一個(gè)非常簡單的數(shù)據(jù)集來解決稱為"葡萄酒"數(shù)據(jù)集的分類任務(wù)。
PyCaret庫包含一組模塊,用于解決所有常見的機(jī)器學(xué)習(xí)問題,其中包括:
· 分類。
· 回歸。
· 聚類。
· 自然語言處理。
· 關(guān)聯(lián)規(guī)則挖掘。
· 異常檢測。
要?jiǎng)?chuàng)建分類模型,我們需要使用pycaret.classification模塊。 創(chuàng)建模型非常簡單。 我們只需調(diào)用將Model ID作為參數(shù)的create_model()函數(shù)即可。 您可以在此處找到支持的型號(hào)及其對(duì)應(yīng)ID的完整列表。 或者,您可以在導(dǎo)入適當(dāng)?shù)哪K后運(yùn)行以下代碼以查看可用模型的列表。
from pycaret.classification import *
models()
> A snapshot of models available for classification. Image by Author.
在調(diào)用create_model()之前,您首先需要調(diào)用setup()函數(shù)來為您的機(jī)器學(xué)習(xí)實(shí)驗(yàn)指定適當(dāng)?shù)膮?shù)。 在這里,您可以指定諸如測試序列拆分的大小以及是否在實(shí)驗(yàn)中實(shí)施交叉驗(yàn)證之類的內(nèi)容。
from pycaret.classification import *
rf = setup(data = data,
target = 'type',
train_size=0.8)
rf_model = create_model('rf')
create_model()函數(shù)將自動(dòng)推斷數(shù)據(jù)類型并使用默認(rèn)方法處理這些數(shù)據(jù)類型。 運(yùn)行create_model()時(shí),您將收到以下輸出,其中顯示了推斷的數(shù)據(jù)類型。
> Image by Author.
PyCaret將使用一組默認(rèn)的預(yù)處理技術(shù)來處理諸如分類變量和估算缺失值之類的事情。 但是,如果您需要更定制的數(shù)據(jù)解決方案,則可以在模型設(shè)置中將它們指定為參數(shù)。 在下面的示例中,我更改了numeric_imputation參數(shù)以使用中位數(shù)。
from pycaret.classification import *
rf = setup(data = data,
target = 'type',
numeric_imputation='median')
rf_model = create_model('rf')
對(duì)參數(shù)滿意后,請(qǐng)按Enter鍵,模型將最終確定并顯示性能結(jié)果網(wǎng)格。
> Image by Author.
PyCaret還具有plot_model()函數(shù),該函數(shù)顯示模型性能的圖形表示。
plot_model(rf_model)
> Image by Author.
本教程剛剛展示了使用PyCaret庫進(jìn)行模型訓(xùn)練的基礎(chǔ)。 還有更多功能和模塊可提供完整的低碼機(jī)器學(xué)習(xí)解決方案,包括功能工程,模型調(diào)整,持久性和部署。
BigQuery ML
Google在2018年發(fā)布了一個(gè)名為BigQuery ML的新工具。 BigQuery是Google的云數(shù)據(jù)倉庫解決方案,旨在為數(shù)據(jù)分析師和科學(xué)家提供快速訪問大量數(shù)據(jù)的途徑。 BigQuery ML是一種工具,可讓僅使用SQL從BigQuery數(shù)據(jù)倉庫直接開發(fā)機(jī)器學(xué)習(xí)模型。
自從發(fā)布以來,BigQueryML已經(jīng)發(fā)展到可以支持大多數(shù)常見的機(jī)器學(xué)習(xí)任務(wù),包括分類,回歸和聚類。 您甚至可以導(dǎo)入自己的Tensforflow模型以在工具中使用。
根據(jù)我自己的經(jīng)驗(yàn),BigQueryML是用于加速模型原型制作的極其有用的工具,并且還可以用作基于生產(chǎn)的系統(tǒng)來解決簡單的問題。
為了簡要介紹該工具,我將使用稱為成人收入數(shù)據(jù)集的數(shù)據(jù)集來說明如何在BigQueryML中建立和評(píng)估邏輯回歸分類模型。
該數(shù)據(jù)集可以在UCI機(jī)器學(xué)習(xí)存儲(chǔ)庫中找到,我正在使用以下Python代碼以CSV文件的形式下載。
url_data = 'https://archive.ics.uci.edu/ml/machine-learning-databases/adult/adult.data'
column_names = ['age', 'workclass', 'fnlwgt', 'education', 'educational-num','marital-status',
'occupation', 'relationship', 'race', 'gender','capital-gain', 'capital-loss',
'hours-per-week', 'native-country','income']
adults_data = pd.read_csv(url_data, names=column_names)
adults_data.to_csv('adults_data.csv')
這是一個(gè)腳本,用于下載數(shù)據(jù)并導(dǎo)出為CSV文件。
如果您還沒有Google Cloud Platform(GCP)帳戶,則可以在此處創(chuàng)建一個(gè)。 最初注冊(cè)時(shí),您將獲得$ 300的免費(fèi)信用額度,足以試用以下示例。
進(jìn)入GCP后,從下拉菜單導(dǎo)航至BigQuery網(wǎng)絡(luò)用戶界面。 如果您是第一次使用GCP,則需要?jiǎng)?chuàng)建一個(gè)項(xiàng)目并使用BigQuery進(jìn)行設(shè)置。 Google快速入門指南在此處提供了很好的概述。
我先前下載的CSV文件可以直接上傳到GCP中以創(chuàng)建表格。
> Image by Author.
您可以通過單擊邊欄中的表名稱并選擇預(yù)覽來檢查表中的數(shù)據(jù)。 現(xiàn)在,成人的數(shù)據(jù)就是BigQuery中的數(shù)據(jù)。
> Image by Author.
要針對(duì)這些數(shù)據(jù)訓(xùn)練模型,我們只需編寫一個(gè)SQL查詢,該查詢從表中選擇所有內(nèi)容(*),將目標(biāo)變量(收入)重命名為label,并添加邏輯以創(chuàng)建名為" adults_log_reg"的邏輯回歸模型。
有關(guān)所有模型選項(xiàng),請(qǐng)參見此處的文檔。
CREATE MODEL `mydata.adults_log_reg`
OPTIONS(model_type='logistic_reg') AS
SELECT *,
ad.income AS label
FROM
`mydata.adults_data` ad
如果我們單擊現(xiàn)在將出現(xiàn)在數(shù)據(jù)表旁邊的側(cè)欄中的模型,則可以看到對(duì)訓(xùn)練效果的評(píng)估。
> Image by Author.
現(xiàn)在我們可以使用模型使用ML.PREDICT函數(shù)進(jìn)行預(yù)測。
Fastai
眾所周知,諸如Tensorflow之類的流行深度學(xué)習(xí)框架具有陡峭的學(xué)習(xí)曲線,對(duì)于初學(xué)者或非數(shù)據(jù)科學(xué)家而言,可能很難起步并運(yùn)行它。 fastai庫提供了一個(gè)高級(jí)API,使您可以用幾行簡單的代碼來訓(xùn)練神經(jīng)網(wǎng)絡(luò)。
Fastai與Pytorch一起使用,因此您需要先安裝這兩個(gè)庫,然后才能使用它。
pip install pytorch
pip install fastai
fastai庫具有用于處理結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù)(例如文本或圖像)的模塊。 在本教程中,我們將使用fastai.tabular.all模塊來解決我們之前使用的葡萄酒數(shù)據(jù)集的分類任務(wù)。
類似于PyCaret,fastai將通過嵌入層對(duì)非數(shù)字?jǐn)?shù)據(jù)類型執(zhí)行預(yù)處理。 為了準(zhǔn)備數(shù)據(jù),我們使用TabularDataLoaders幫助器函數(shù)。 在這里,我們具體說明了數(shù)據(jù)框的名稱,列的數(shù)據(jù)類型以及我們要模型執(zhí)行的預(yù)處理步驟。
要訓(xùn)練神經(jīng)網(wǎng)絡(luò),我們只需使用tabular_learner()函數(shù),如下所示。
dl = TabularDataLoaders.from_df(data, y_names="type",
cat_names = ['quality'],
cont_names = ['fixed acidity', 'volatile acidity',
'citric acid', 'residual sugar',
'chlorides', 'free sulfur dioxide',
'total sulfur dioxide', 'density',
'pH', 'sulphates', 'alcohol'],
procs = [Categorify, FillMissing, Normalize])
運(yùn)行此代碼后,將顯示性能指標(biāo)。
> Image by Author.
要使用模型進(jìn)行預(yù)測,您可以簡單地使用learning.predict(df.iloc [0])。
探索fastai庫的更多信息,請(qǐng)參見此處的文檔。
謝謝閱讀!
(本文翻譯自Rebecca Vickery的文章《Low Effort Machine Learning Tools》,參考:https://towardsdatascience.com/low-effort-machine-learning-tools-9622d7d57135)