您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關python人工智能human learn繪圖怎么用,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
如今,數據科學家經常給帶有標簽的機器學習模型數據,以便它可以找出規則。
這些規則可用于預測新數據的標簽。
這很方便,但是在此過程中可能會丟失一些信息。也很難知道引擎蓋下發生了什么,以及為什么機器學習模型會產生特定的預測。
除了讓機器學習模型弄清楚所有內容之外,還有沒有一種方法可以利用我們的領域知識來設置數據標記的規則?
是的,這可以通過 human-learn 來完成。
human-learn 是一種工具,可讓你使用交互式工程圖和自定義模型來設置數據標記規則。在本文中,我們將探索如何使用 human-learn 來創建帶有交互式圖紙的模型。
pip install human-learn
我將使用來自sklearn的Iris數據來展示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
human-learn 允許你繪制數據集,然后使用工程圖將其轉換為模型。 為了演示這是如何有用的,想象一下如何創建數據集的散點圖,如下所示:
查看上面的圖時,你會看到如何將它們分成3個不同的區域,如下所示:
但是,可能很難將圖形編寫為規則并將其放入函數中,human-learn的交互式繪圖將派上用場。
from hulearn.experimental.interactive import InteractiveCharts charts = InteractiveCharts(train, labels='target') charts.add_chart(x='sepal_length', y='sepal_width')
– 動圖01
繪制方法:使用雙擊開始繪制多邊形。然后單擊以創建多邊形的邊。再次雙擊可停止繪制當前多邊形。
我們對其他列也做同樣的事情:
charts.add_chart(x='petal_length', y='petal_width')
一旦完成對數據集的繪制,就可以使用以下方法創建模型:
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給出了樣本具有特定標簽的概率。 例如,[5.71326574e-01 4.28530630e-01 1.42795945e-04]的第一個預測表示樣本具有標簽1的可能性為57.13%,樣本具有標簽2的可能性為42.85%,而樣本為標簽2的可能性為0.014% 該樣本的標簽為0。
# 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])
為了了解模型如何根據該預測進行預測,讓我們可視化新樣本。
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()
使用上面的函數在petal_length和petal_width繪圖上繪制一個新樣本,該樣本的點被標記為0的概率著色。
plot_prediction(0, columns=['petal_length', 'petal_width'])
其他列也是如此,我們可以看到紅點位于具有許多黃點的區域中! 這就解釋了為什么模型預測新樣本的標簽為0。這很酷,不是嗎?
現在,讓我們使用該模型來預測測試數據中的所有樣本并評估其性能。 開始使用混淆矩陣進行評估:
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分數評估結果:
f1_score(y_test, predictions, average='micro')
關于“python人工智能human learn繪圖怎么用”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。