<jupyter_start><jupyter_text>回歸問題常見的評估指標有- MAE- MSE- R-square 我們隨機生成(X, y)資料，然後使用線性回歸模型做預測，再使用 MAE, MSE, R-square 評估<jupyter_code>X, y = datasets.make_regression(n_features=1, random_state=42, noise=4) # 生成資料
model = LinearRegression() # 建立回歸模型
model.fit(X, y) # 將資料放進模型訓練
prediction = model.predict(X) # 進行預測
mae = metrics.mean_absolute_error(prediction, y) # 使用 MAE 評估
mse = metrics.mean_squared_error(prediction, y) # 使用 MSE 評估
r2 = metrics.r2_score(prediction, y) # 使用 r-square 評估
print("MAE: ", mae)
print("MSE: ", mse)
print("R-square: ", r2)<jupyter_output>MAE:  2.8417972525655673
MSE:  12.488680067398239
R-square:  0.9916581036260311<jupyter_text>分類問題常見的評估指標有- AUC- F1-Score (Precision, Recall)<jupyter_code>cancer = datasets.load_breast_cancer() # 我們使用 sklearn 內含的乳癌資料集
X_train, X_test, y_train, y_test = train_test_split(cancer.data, cancer.target, test_size=50, random_state=0)
print(y_test) # 測試集中的 label
y_pred = np.random.random((50,)) # 我們先隨機生成 50 筆預測值，範圍都在 0~1 之間，代表機率值
print(y_pred)<jupyter_output>[0.88020553 0.00582627 0.55231401 0.93010329 0.75114499 0.88251056
 0.88751515 0.25403727 0.56522296 0.39482483 0.30985037 0.07305572
 0.76539673 0.10472615 0.07738924 0.55117679 0.38266898 0.31422488
 0.47429077 0.91976477 0.70888401 0.97002571 0.30401677 0.16284212
 0.20703373 0.28801946 0.05953835 0.31013068 0.86415154 0.70828046
 0.26690311 0.91564687 0.10973302 0.12845369 0.0853283  0.74136598
 0.2907843  0.5520364  0.17597545 0.10793774 0.20796923 0.47554019
 0.26701358 0.10186195 0.52445989 0.64575859 0.81274211 0.26800271
 0.67786045 0.33819718]<jupyter_text>AUC<jupyter_code>auc = metrics.roc_auc_score(y_test, y_pred) # 使用 roc_auc_score 來評估。 **這邊特別注意 y_pred 必須要放機率值進去!**
print("AUC: ", auc) # 得到結果約 0.5，與亂猜的結果相近，因為我們的預測值是用隨機生成的<jupyter_output>AUC:  0.366723259762309<jupyter_text>F1-Score<jupyter_code>threshold = 0.5 
y_pred_binarized = np.where(y_pred > threshold, 1, 0) # 使用 np.where 函數, 將 y_pred > 0.5 的值變為 1，小於 0.5 的為 0
f1 = metrics.f1_score(y_test, y_pred_binarized) # 使用 F1-Score 評估
precision = metrics.precision_score(y_test, y_pred_binarized) # 使用 Precision 評估
recall  = metrics.recall_score(y_test, y_pred_binarized) # 使用 recall 評估
print("F1-Score: ", f1) 
print("Precision: ", precision)
print("Recall: ", recall)<jupyter_output>F1-Score:  0.5818181818181819
Precision:  0.6666666666666666
Recall:  0.5161290322580645
StarcoderdataJupyterStructuredCleanDedup