python人工智能human?learn繪圖創(chuàng)建機(jī)器學(xué)習(xí)模型
如今,數(shù)據(jù)科學(xué)家經(jīng)常給帶有標(biāo)簽的機(jī)器學(xué)習(xí)模型數(shù)據(jù),以便它可以找出規(guī)則。
這些規(guī)則可用于預(yù)測(cè)新數(shù)據(jù)的標(biāo)簽。
這很方便,但是在此過程中可能會(huì)丟失一些信息。也很難知道引擎蓋下發(fā)生了什么,以及為什么機(jī)器學(xué)習(xí)模型會(huì)產(chǎn)生特定的預(yù)測(cè)。
除了讓機(jī)器學(xué)習(xí)模型弄清楚所有內(nèi)容之外,還有沒有一種方法可以利用我們的領(lǐng)域知識(shí)來設(shè)置數(shù)據(jù)標(biāo)記的規(guī)則?
是的,這可以通過 human-learn 來完成。
什么是 human-learn
human-learn 是一種工具,可讓你使用交互式工程圖和自定義模型來設(shè)置數(shù)據(jù)標(biāo)記規(guī)則。在本文中,我們將探索如何使用 human-learn 來創(chuàng)建帶有交互式圖紙的模型。
安裝 human-learn
pip install human-learn
我將使用來自sklearn的Iris數(shù)據(jù)來展示human-learn的工作原理。
from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split import pandas as pd # Load data X, y = load_iris(return_X_y=True, as_frame=True) X.columns = ['sepal_length', 'sepal_width', 'petal_length', 'petal_width'] # Train test split X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=1) # Concatenate features and labels of the training data train = pd.concat([X_train, pd.DataFrame(y_train)], axis=1) train
互動(dòng)繪圖
human-learn 允許你繪制數(shù)據(jù)集,然后使用工程圖將其轉(zhuǎn)換為模型。 為了演示這是如何有用的,想象一下如何創(chuàng)建數(shù)據(jù)集的散點(diǎn)圖,如下所示:
查看上面的圖時(shí),你會(huì)看到如何將它們分成3個(gè)不同的區(qū)域,如下所示:
但是,可能很難將圖形編寫為規(guī)則并將其放入函數(shù)中,human-learn的交互式繪圖將派上用場。
from hulearn.experimental.interactive import InteractiveCharts charts = InteractiveCharts(train, labels='target') charts.add_chart(x='sepal_length', y='sepal_width')
– 動(dòng)圖01
繪制方法:使用雙擊開始繪制多邊形。然后單擊以創(chuàng)建多邊形的邊。再次雙擊可停止繪制當(dāng)前多邊形。
我們對(duì)其他列也做同樣的事情:
charts.add_chart(x='petal_length', y='petal_width')
創(chuàng)建模型并進(jìn)行預(yù)測(cè)
一旦完成對(duì)數(shù)據(jù)集的繪制,就可以使用以下方法創(chuàng)建模型:
from hulearn.classification import InteractiveClassifier model = InteractiveClassifier(json_desc=charts.data()) preds = model.fit(X_train, y_train).predict_proba(X_train) print(preds.shape) # Output: (150, 3)
cool! 我們將工程圖輸入InteractiveClassifier類,使用類似的方法來擬合sklearn的模型,例如fit和predict_proba。
讓我們來看看pred的前5行:
print('Classes:', model.classes_) print('Predictions:\n', preds[:5, :]) """Output Classes: [1, 2, 0] Predictions: [[5.71326574e-01 4.28530630e-01 1.42795945e-04] [2.00079952e-01 7.99720168e-01 1.99880072e-04] [2.00079952e-01 7.99720168e-01 1.99880072e-04] [2.49812641e-04 2.49812641e-04 9.99500375e-01] [4.99916708e-01 4.99916708e-01 1.66583375e-04]] """
需要說明的是,predict_proba給出了樣本具有特定標(biāo)簽的概率。 例如,[5.71326574e-01 4.28530630e-01 1.42795945e-04]的第一個(gè)預(yù)測(cè)表示樣本具有標(biāo)簽1的可能性為57.13%,樣本具有標(biāo)簽2的可能性為42.85%,而樣本為標(biāo)簽2的可能性為0.014% 該樣本的標(biāo)簽為0。
預(yù)測(cè)新數(shù)據(jù)
# Get the first sample of X_test new_sample = new_sample = X_test.iloc[:1] # Predict pred = model.predict(new_sample) real = y_test[:1] print("The prediction is", pred[0]) print("The real label is", real.iloc[0])
解釋結(jié)果
為了了解模型如何根據(jù)該預(yù)測(cè)進(jìn)行預(yù)測(cè),讓我們可視化新樣本。
def plot_prediction(prediction: int, columns: list): """Plot new sample Parameters ---------- prediction : int prediction of the new sample columns : list Features to create a scatter plot """ index = prediction_to_index[prediction] col1, col2 = columns plt.figure(figsize=(12, 3)) plt.scatter(X_train[col1], X_train[col2], c=preds[:, index]) plt.plot(new_sample[col1], new_sample[col2], 'ro', c='red', label='new_sample') plt.xlabel(col1) plt.ylabel(col2) plt.title(f"Label {model.classes_[index]}") plt.colorbar() plt.legend()
使用上面的函數(shù)在petal_length和petal_width繪圖上繪制一個(gè)新樣本,該樣本的點(diǎn)被標(biāo)記為0的概率著色。
plot_prediction(0, columns=['petal_length', 'petal_width'])
其他列也是如此,我們可以看到紅點(diǎn)位于具有許多黃點(diǎn)的區(qū)域中! 這就解釋了為什么模型預(yù)測(cè)新樣本的標(biāo)簽為0。這很酷,不是嗎?
預(yù)測(cè)和評(píng)估測(cè)試數(shù)據(jù)
現(xiàn)在,讓我們使用該模型來預(yù)測(cè)測(cè)試數(shù)據(jù)中的所有樣本并評(píng)估其性能。 開始使用混淆矩陣進(jìn)行評(píng)估:
from sklearn.metrics import confusion_matrix, f1_score predictions = model.predict(X_test) confusion_matrix(y_test, predictions, labels=[0,1,2])
array([[13, 0, 0], [ 0, 15, 1], [ 0, 0, 9]])
我們還可以使用F1分?jǐn)?shù)評(píng)估結(jié)果:
f1_score(y_test, predictions, average='micro')
結(jié)論
剛剛我們學(xué)習(xí)了如何通過繪制數(shù)據(jù)集來生成規(guī)則來標(biāo)記數(shù)據(jù)。 這并不是說你應(yīng)該完全消除機(jī)器學(xué)習(xí)模型,而是在處理數(shù)據(jù)時(shí)加入某種人工監(jiān)督。
以上就是python人工智能human learn繪圖可創(chuàng)建機(jī)器學(xué)習(xí)模型的詳細(xì)內(nèi)容,更多關(guān)于human learn繪圖創(chuàng)建機(jī)器學(xué)習(xí)模型的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- Python梯度提升庫XGBoost解決機(jī)器學(xué)習(xí)問題使用探究
- Python機(jī)器學(xué)習(xí)特征重要性分析的8個(gè)常用方法實(shí)例探究
- python taipy庫輕松地將數(shù)據(jù)和機(jī)器學(xué)習(xí)模型轉(zhuǎn)為功能性Web應(yīng)用
- Python BentoML構(gòu)建部署和管理機(jī)器學(xué)習(xí)模型技巧掌握
- Python機(jī)器學(xué)習(xí)性能度量利用鳶尾花數(shù)據(jù)繪制P-R曲線
- Python機(jī)器學(xué)習(xí)利用鳶尾花數(shù)據(jù)繪制ROC和AUC曲線
- python機(jī)器學(xué)習(xí)Github已達(dá)8.9Kstars模型解釋器LIME
- python?lazypredict構(gòu)建大量基本模型簡化機(jī)器學(xué)習(xí)
相關(guān)文章
超級(jí)詳細(xì)實(shí)用的pycharm常用快捷鍵
本文詳細(xì)總結(jié)了Pycharm的常用快捷鍵,下文介紹使用方法和場景, 并不需要記憶這些快捷鍵, 你只需要知道有這些快捷鍵, 再需要用的時(shí)候查看一下, 用的多了自然也就記住了,需要的朋友可以參考下2021-05-05networkx庫繪制帶權(quán)圖給無權(quán)圖加權(quán)重輸出
這篇文章主要為大家介紹了Python?networkx庫繪制帶權(quán)圖給無權(quán)圖加權(quán)重并輸出權(quán)重的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05Python2.7環(huán)境Flask框架安裝簡明教程【已測(cè)試】
這篇文章主要介紹了Python2.7環(huán)境Flask框架安裝方法,結(jié)合實(shí)例形式詳細(xì)分析了Python2.7環(huán)境下安裝Flask框架遇到的問題與相關(guān)解決方法、注意事項(xiàng),并給出了一個(gè)基本的測(cè)試示例,需要的朋友可以參考下2018-07-07python 實(shí)現(xiàn)在txt指定行追加文本的方法
下面小編就為大家分享一篇python 實(shí)現(xiàn)在txt指定行追加文本的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-04-04Python使用lambda拋出異常實(shí)現(xiàn)方法解析
這篇文章主要介紹了Python使用lambda拋出異常實(shí)現(xiàn)方法解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08詳解程序意外中斷自動(dòng)重啟shell腳本(以Python為例)
這篇文章主要介紹了詳解程序意外中斷自動(dòng)重啟shell腳本(以Python為例),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07淺析Django 接收所有文件,前端展示文件(包括視頻,文件,圖片)ajax請(qǐng)求
這篇文章主要介紹了Django 接收所有文件,前端展示文件(包括視頻,文件,圖片)ajax請(qǐng)求,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2020-03-03