
如何使用 DeepSeek 構建 AI Agent:終極指南
在模型性能評估中,經常使用精確率和召回率。假設我們將數據集分為四個區域:T1部分應該是正確的卻被預測為錯誤(FP),T2部分是正確的且預測正確(TP),T3部分是錯誤的卻被預測為正確(FN),T4部分是錯誤且預測錯誤(TN)。
精確率和召回率的公式分別為:
import matplotlib.pyplot as plt
import numpy as np
labels = np.random.choice([0, 1], size=1000, p=[0.7, 0.3])
scores = np.random.rand(1000)
TP = np.cumsum(labels == 1)
FP = np.cumsum(labels == 0)
precision = TP / (TP + FP)
recall = TP / np.sum(labels)
def plot_pr_curve(recall, precision):
ap = 0
for i in range(len(recall) - 1):
ap += (recall[i+1] - recall[i]) * precision[i+1]
plt.plot(recall, precision, marker='.')
plt.xlabel('Recall')
plt.ylabel('Precision')
plt.title(f'PR CurvenAverage Precision: {ap:.3f}')
plt.grid(True)
plt.show()
plot_pr_curve(recall, precision)
PR曲線的理想情況是趨近于縱軸,即在較高的召回率下保持較高的精確率。一個完美的分類器的PR曲線將是一個從(0,1)到(1,1)的直線。
ROC曲線是另一種評估二分類模型性能的工具。它以真正例率(TPR)為縱軸,假正例率(FPR)為橫軸。TPR是指在所有實際正例中,被模型正確預測為正例的比例,而FPR是指在所有實際負例中,被模型錯誤地預測為正例的比例。
import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
X, y = load_pts()
plt.show()
def plot_model(X, y, clf):
plt.scatter(X[np.argwhere(y==0).flatten(),0], X[np.argwhere(y==0).flatten(),1],s = 20, color = 'blue', edgecolor = 'k')
plt.scatter(X[np.argwhere(y==1).flatten(),0], X[np.argwhere(y==1).flatten(),1],s = 20, color = 'red', edgecolor = 'k')
plt.xlim(-40,40)
plt.ylim(-40,40)
plt.show()
plot_model(X, y, clf)
在ROC空間中,左上角(0,1)表示TPR=1和FPR=0,意味著模型完美地將所有正例判斷為正例,并且沒有錯誤地將負例判斷為正例。對角線表示隨機猜測。ROC曲線越靠近左上角,說明模型的性能越好。
PR曲線和ROC曲線是非常有用的二分類模型性能評價工具。PR曲線在類別不平衡的數據集上表現更優,而ROC曲線在樣本均衡的數據集上更能反映模型性能。選擇適合的數據集及評價工具,可以幫助我們更好地優化模型性能。
問:如何選擇PR曲線和ROC曲線?
問:AUC是什么?
問:如何使用Python繪制PR曲線和ROC曲線?
以上是關于使用Python生成性能曲線的詳細指南,通過理解和實現PR曲線和ROC曲線,我們可以有效優化模型性能。