模型评价模块 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的数组,表示每一次交叉验证的结果

返回主页