比如說,分類模型,主要看準確率、精度、召回率、F1 分數,簡單來說就是預測數據點屬于哪個類別,與實際類別是否一致。比如預測郵件是不是垃圾郵件,腫瘤是不是良性的,或者客戶會不會買咱們的產品。

再比如說,回歸模型就是要評估模型預測的數值(比如預測股票第二天的價格是10塊),與實際價格數值差異大不大

分類模型的評估指標

也就是要看模型分類準不準。具體來說,有這些常用的指標:

這里有個簡單的例子,用 sklearn 庫計算上面提到的指標:

Python

from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score, confusion_matrix, roc_auc_score, roc_curve
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression

# 加載數據集
data = load_iris()
X, y = data.data, data.target

# 為了簡單起見,我們只取兩個類別的數據
X_binary = X[y != 2]
y_binary = y[y != 2]

# 劃分訓練集和測試集
X_train, X_test, y_train, y_test = train_test_split(X_binary, y_binary, test_size=0.3, random_state=42)

# 初始化模型
model = LogisticRegression()

# 訓練模型
model.fit(X_train, y_train)

# 進行預測
y_pred = model.predict(X_test)

# 計算各項指標
accuracy = accuracy_score(y_test, y_pred)
precision = precision_score(y_test, y_pred)
recall = recall_score(y_test, y_pred)
f1 = f1_score(y_test, y_pred)
conf_mat = confusion_matrix(y_test, y_pred)
# 計算AUC
auc = roc_auc_score(y_test, y_pred_prob)
print("AUC: ", auc)

回歸模型指標

回歸,簡單說就是基于已知的東西,來猜未知的數。比如你想知道一套房子的價格,就可以根據房子的面積、地理位置等特征來猜。回歸模型就是這樣幫你預測的。

但模型預測得準不準呢?這就需要用回歸指標來量化了。

  1. 均方誤差(MSE):這就是看你模型預測出來的價格和真實價格差多少。差值越小,模型預測得越準。

公式:MSE = (1/n) * Σ(實際值 – 預測值)2

  1. 均方根誤差(RMSE):就是MSE的“平方根版”。和MSE相比,它的數值更容易理解,因為它和真實數據的單位是一樣的。

公式:RMSE = √MSE

  1. 平均絕對誤差(MAE):這個和MSE類似,但是它算的是預測值和真實值差多少的平均值,而不是差值的平方的平均值。

公式:MAE = (1/n)* Σ|實際值 – 預測值|

  1. R平方:這個指標是衡量模型有多好地解釋了數據的變動。值越接近1,說明模型解釋得越好。

除了上面這些,還有調整后的R平方,這個考慮了模型中特征的數量,避免因為特征多導致R平方虛高。

這些指標都可以幫你評估回歸模型的好壞,選擇最適合你問題的模型。

下面是一個用Python的sklearn庫來計算這些指標的簡單例子:

Python

from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
import numpy as np

# 假設這是你的數據和目標值(你可以用你自己的數據替換這些)
X = np.random.rand(100, 1) # 特征數據
y = X * 2 + np.random.randn(100, 1) * 0.1 # 目標數據

# 把數據分成訓練集和測試集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 創建一個線性回歸模型并訓練它
model = LinearRegression()
model.fit(X_train, y_train)

# 使用模型進行預測
y_pred = model.predict(X_test)

# 計算指標
mse = mean_squared_error(y_test, y_pred)
rmse = np.sqrt(mse)
mae = mean_absolute_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)

# 樣本數量和特征數量
n = len(y_test)
p = X_test.shape[1]

# 計算調整后的R平方
adjusted_r2 = 1 - (1 - r2) * (n - 1) / (n - p - 1)

# 輸出結果
print(f"MSE: {mse}")
print(f"RMSE: {rmse}")
print(f"MAE: {mae}")
print(f"R平方: {r2}")
print(f"調整后的R平方: {adjusted_r2}")

聚類指標

聚類嘛,就是一種沒有標簽的數據分組方法。比如,咱們可以根據客戶的購物習慣把他們分成不同的群體,或者根據文章的內容判斷它們是不是講同一件事。

下面是一個簡單的代碼示例,用 scikit-learn 來計算這些指標:

Python

from sklearn.metrics import silhouette_score, davies_bouldin_score, calinski_harabasz_score
from sklearn.cluster import KMeans
from sklearn.datasets import make_blobs

# 生成一些隨機數據
X, _ = make_blobs(n_samples=150, n_features=2, centers=3, cluster_std=0.5, shuffle=True, random_state=0)

# 用 KMeans 進行聚類
kmeans = KMeans(n_clusters=3, random_state=0)
y_kmeans = kmeans.fit_predict(X)

# 計算指標
silhouette = silhouette_score(X, y_kmeans)
davies_bouldin = davies_bouldin_score(X, y_kmeans)
calinski_harabasz = calinski_harabasz_score(X, y_kmeans)

print(f"Silhouette Score: {silhouette}")
print(f"Davies-Bouldin Index: {davies_bouldin}")
print(f"Calinski-Harabasz Index: {calinski_harabasz}")

降維指標

降維,簡單來說,就是把高維度的數據變成低維度的,同時盡量保留原始數據的信息。比如,我們可以把一張彩色圖片變成灰度圖,雖然顏色信息丟失了,但大致的輪廓還在。

降維指標主要分兩類:重建和保存。重建指標看的是降維后的數據能不能還原成原始數據;保存指標看的是降維后的數據能不能保持原始數據的某些特性,比如點與點之間的距離。

一些常用的降維指標有:

下面是一個簡單的代碼示例,用 scikit-learn 來計算這些指標(以PCA為例):

Python

from sklearn.decomposition import PCA
from sklearn.metrics import mean_squared_error
from sklearn.datasets import make_blobs

# 生成一些隨機數據
X, _ = make_blobs(n_samples=150, n_features=5, centers=3, cluster_std=0.5, shuffle=True, random_state=0)

# 用 PCA 進行降維
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X)

# 計算重建誤差
X_reconstructed = pca.inverse_transform(X_pca)
reconstruction_error = mean_squared_error(X, X_reconstructed)

# 計算解釋方差
explained_variance = pca.explained_variance_ratio_.sum()

print(f"Reconstruction Error: {reconstruction_error}")
print(f"Explained Variance: {explained_variance

文章轉自微信公眾號@Python人工智能前沿

上一篇:

深度時間序列模型!全面總結!

下一篇:

AI大模型+RAG的綜述
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數據驅動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內容創意新穎性、情感共鳴力、商業轉化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費