作者|Ali Aryan
編譯|VK
來源|Towards Data Science
隨著機器學習的興起,我們看到了許多偉大的框架和庫的興起,比如scikit learn、Tensorflow、Pytorch,這些框架使得用戶更容易創建機器學習模型,但仍然需要遵循包括資料準備、建模、評估在內的整個程序,
資料準備包括資料清理和預處理,建模接受預處理的資料并使用演算法來預測結果,評估為我們的演算法的性能提供了一個度量,由于這些庫和框架,我們撰寫所有東西的時間減少了,但是我們仍然需要撰寫少量的代碼,

“機器智能是人類最后一個需要創造的發明,”—尼克·博斯特羅姆
在驚人的開源社區的幫助下,這個領域的進步與日俱增,這些社區催生了現有的框架,考慮一個在一行中完成所有上述程序的框架,
是的,你讀對了,現在你也可以這么做了,Libra是一個框架,它一條龍式為你作業,即使對于非技術人員來說,它也很容易使用,Libra需要最少的平均代碼行數來訓練模型,

在這個博客里,我將給出如何使用Libra的完整指導,我將采取不同的資料集為不同的問題,并將向你展示一步一步的方法,
利用Libra進行信用卡欺詐檢測
我使用了Kaggle資料集來預測信用卡欺詐,資料已經經過主成分分析,因此與原始資料相比,它現在被簡化為更小維的資料,
在解決這個問題時,需要遵循一種系統的方法,一般來說,你將遵循第一段中提到的順序,但有了Libra,你就不用擔心了,
資料集鏈接:https://www.kaggle.com/mlg-ulb/creditcardfraud
此資料中的大多數交易在時間上是非欺詐性的(99.83%),而欺詐性交易在資料集中發生的時間(0.17%),這意味著資料是高度不平衡的,讓我們看看Libra對資料的預處理和結果,
安裝Libra
pip install -U libra
從libra匯入客戶端(client)
from libra import client
使用Libra
一切都是圍繞client構建的,你可以對它呼叫不同的查詢,所有的內容都將存盤在物件的models欄位下,
我們在client物件中傳遞檔案的位置,并將其命名為newClient,現在要訪問各種查詢,請參閱檔案,
我用的是決策樹,例如,預測房屋價值中位數,或估計住戶數量,否則,該代碼應與資料集中的列相對應,Libra會自動檢測到目標列,但為了確保它選擇了正確的列,我已經傳遞了目標列的名稱,
newClient = client('creditcard.csv')
newClient.decision_tree_query('Class')

只需兩行代碼,我們就得到了大約0.99的分數,這是我們能得到的最好成績,如果你檢查其他人的成功,你會發現只有少數人獲得了0.99的準確率,他們花了數小時來預處理資料并為其撰寫代碼,
在這種情況下,Libra為你節省了很多時間,給你最好的結果,Libra使用智能預處理,這樣你就不需要自己去預處理資料了,
你不必擔心分析結果
newClient.analyze()為所有分類問題創建混淆矩陣和ROC曲線,它還計算召回率,精確度,f1和f2分數,
newClient.analyze()

newClient.info()回傳所有鍵,表示為資料集生成的每種資料類別,
newClient.info()

newClient.model() 回傳該模型的字典,它包括從準確度,精確度,召回率,F1分數到所有的預處理技術,對于那些已經了解這些概念并能夠撰寫代碼的人來說,這會更有幫助,非技術用戶不必為此擔心,
newClient.model()

訪問模型
newClient.model()回傳字典,如果要訪問模型,則可以直接使用newClient.model()['model']
newClient.model()['model']

基于Libra的卷積神經網路
在colab Notebook使用下面的代碼下載石頭剪刀布資料集,我本可以直接向你展示使用Libra創建CNN的代碼,但是我想創建一個例子,你可以自己在colab Notebook中嘗試,以便更好地理解,你不需要擔心下面的代碼,
!wget --no-check-certificate \
https://storage.googleapis.com/laurencemoroney-blog.appspot.com/rps.zip \
-O /tmp/rps.zip
!wget --no-check-certificate \
https://storage.googleapis.com/laurencemoroney-blog.appspot.com/rps-test-set.zip \
-O /tmp/rps-test-set.zip
使用下面的代碼提取下載的檔案,
import os
import zipfile
local_zip = '/tmp/rps.zip'
zip_ref = zipfile.ZipFile(local_zip, 'r')
zip_ref.extractall('/tmp/')
zip_ref.close()
local_zip = '/tmp/rps-test-set.zip'
zip_ref = zipfile.ZipFile(local_zip, 'r')
zip_ref.extractall('/tmp/')
zip_ref.close()
我們用下面的代碼創建檔案夾,并將提取的影像放入其中,
rock_dir = os.path.join('/tmp/rps/rock')
paper_dir = os.path.join('/tmp/rps/paper')
scissors_dir = os.path.join('/tmp/rps/scissors')
print('total training rock images:', len(os.listdir(rock_dir)))
print('total training paper images:', len(os.listdir(paper_dir)))
print('total training scissors images:', len(os.listdir(scissors_dir)))
rock_files = os.listdir(rock_dir)
print(rock_files[:10])
paper_files = os.listdir(paper_dir)
print(paper_files[:10])
scissors_files = os.listdir(scissors_dir)
print(scissors_files[:10])
下圖顯示了有關資料集的資訊

使用下面的代碼,你可以創建CNN,資料將通過縮放、剪切、翻轉和重新縮放自動增加,然后選擇最佳的影像大小,你還將注意到每個類中的影像數量以及與之關聯的類的數量,最后,還要觀察訓練精度和測驗精度,
你還可以在convolutional_query內部傳遞read_mode超引數,在其中你可以指定讀取模式,允許有三種讀取模式,我將逐一描述它們,默認情況下,read_mode=distinguisher()自動檢測資料型別,允許的三種讀取模式是:
1.Setwise
目錄由“training_set”和“testing_set”檔案夾組成,這兩個檔案夾都包含帶有影像的分類檔案夾,

2.Classwise
目錄由包含影像的分類檔案夾組成,

3.CSV Wise
目錄由影像檔案夾和包含影像列的CSV檔案組成,

newClient = client('/tmp/rps')
newClient.convolutional_query("Please classify my images")

基于Libra的NLP文本分類
我使用垃圾郵件分類資料集來解決這個問題,
鏈接:https://www.kaggle.com/team-ai/spam-text-message-classification
new_client = client('SPAM text message 20170820 - Data.csv')
new_client.text_classification_query('sentiment')
new_client.classify_text('new text to classify')

new_client.classify_text()將對其中輸入的文本進行分類,在上面的輸出中,你可以看到它將我的文本分類為“ham”,


使用Libra進行均值聚類
我使用商場客戶劃分資料來解決這個問題:https://www.kaggle.com/vjchoudhary7/customer-segmentation-tutorial-in-python

Libra將創建一個K均值聚類模型,并將確定最佳簇中心,優化準確度,以及最佳聚類數,


基于Libra的神經網路分類
在本節中,我將使用神經網路查詢進行分類,為此,我使用了一個私人資料集來預測大腦信號的行為,讓我們檢查一下它在那個資料集上的執行情況,
new_client = client('Mood_classification.csv')
new_client.neural_network_query('Predict the behavior')

從上面的代碼中,你可以注意到模型使用的初始層數是3,然后,它還測驗了不同層數的精度,這些層數根據前一層的性能而變化,
它可以預測找到的最佳層數以及訓練和測驗的準確性,看來我需要為我的資料集收集更多的資料,
你可以用new_client.model()[‘model’]訪問模型,并可以使用Keras的summary()函式獲取神經網路模型的摘要,
new_client.model()['model'].summary()

結論
Libra是一個非常有趣的框架,每天都在進步,這個框架為我們提供了資料科學領域發展速度的概述,也讓我們看到了這個領域中可能存在的變化型別,他們還為現有的資料科學家添加了一些功能,以修改現有的神經網路,并在指定的索引處添加類似LSTM的層,我對這個框架帶來的概念感到興奮,
參考文獻:
[1] Libra, Documentation(2020), http://libradocs.github.io/
原文鏈接:https://towardsdatascience.com/machine-learning-and-deep-learning-in-one-liner-using-libra-7eef4023618f
歡迎關注磐創AI博客站:
http://panchuang.net/
sklearn機器學習中文官方檔案:
http://sklearn123.com/
歡迎關注磐創博客資源匯總站:
http://docs.panchuang.net/
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/708.html
標籤:其他
上一篇:win10+anaconda+tensorflow1+pycharm
下一篇:遷移學習概論
