模型评价模块 simple_ml.evaluation
一、二分类模型评价
1.0 分类作图
def classify_plot(model, x_train, y_train, x_test, y_test, title="",compare=False, px=100)
名称 | 类型 | 描述 | |
---|---|---|---|
Parameters: | model | BaseClassifier | 必须是继承BaseClassifier的模型,并且必须是一个新的实例,可以通过classmethod方法传入 ,见 SVM.new() |
x_train | np.2darray | 训练集特征 | |
y_train | np.array | 训练集标签 | |
x_test | np.2darray | 测试集特征 | |
y_test | np.array | 测试集标签 | |
title | str | 图的title | |
compare | bool | 是否和原数据集进行比较作图 | |
px | int | 作图像素 | |
Returns: | Void |
1.1 classify_accuracy
def classify_accuracy(y_predict, y_true)
模型准确度 = (TP + FP) / (TP + FP + TN + FN)
1.2 classify_precision
def classify_precision(y_predict, y_true)
模型精度 = TP / (TP + FP)
1.3 classify_recall
def classify_recall(y_predict, y_true)
模型召回率 = TP / (TP + FN)
1.5 classify_f1
def classify_f1(y_predict, y_true)
F1 = 2 * precision * recall / (recall + precision)
1.6 classify_roc
def classify_roc(y_predict, y_true)
获得TPR, FPR
注意: y_predict 必须为float数组
1.7 classify_auc
classify_auc(y_predict, y_true)
根据TPR、FPR计算预测的AUC值
1.8 classify_roc_plot
def classify_roc_plot(y_predict, y_true)
绘制ROC曲线
二、多分类模型评价
2.1 classify_f1_micro
def classify_f1_micro(y_predict, y_true)
在求recall和precision时,在计算前进行加总(recall = sum(tp_i) / (sum(tp_i+fn_i))
2.2 classify_f1_macro
def classify_f1_macro(y_predict, y_true)
求每一个类的recall和precision以及f1,然后求平均
2.3 classify_f1_weighted
def classify_f1_weighted(y_predict, y_true)
用样本中正例数目加权(避免了样本不平衡的问题)
三、回归模型评价
3.1 regression_explained_variance
def regression_explained_variance(y_predict, y_true)
解释平方和 (SSR)
3.2 regression_absolute_error
def regression_absolute_error(y_predict, y_true):
绝对误差
3.3 regression_squared_error
def regression_squared_error(y_predict, y_true)
平方误差
3.4 regression_rmse
def regression_rmse(y_predict, y_true)
均方根误差
3.5 regression_rmsel
def regression_rmsel(y_predict, y_true)
对数均方根误差
3.6 regression_r2
def regression_r2(y_predict, y_true)
r方 = SSR / SST
3.7 regression_median_absolute_error
def regression_median_absolute_error(y_predict, y_true)
中位数绝对误差
3.8 regression_plot
def regression_plot(x_train, y_train, x_test, y_test, x_column_id, title)
回归结果作图
四、交叉验证
from simple_ml.base.base_enum import CrossValidationType
def cross_validation(model, x, y, method=CrossValidationType.holdout, test_size=0.3, cv=5)
名称 | 类型 | 描述 | |
---|---|---|---|
Parameters: | model | BaseClassifier | 必须是继承BaseClassifier的分类器 |
x | np.2darray | 特征 | |
y | np.array | 标签 | |
method | CrossValidationType | 交叉验证类型,支持hold-out和K折 | |
test_size | float | 测试集占的比重 | |
cv | int | 交叉验证次数,如果是K折则等同于K的值 | |
Returns: | np.array | 长度等于cv的数组,表示每一次交叉验证的结果 |