天天看点

Python之算法评估-4

  一、评估算法的方式分两种,一种是分类算法的评估,一种是回归算法的评估。为什么要分两种呢,因为分类算法中可以通过准确率、精准率、召回率、混淆矩阵、AUC来评估算法的准确度。但是在预测值的时候是没有办法去获得这个准确值(比如分类对了,那就对了,错了就是错了,可以通过对错来统计准确率),那么回归算法的方式,就通过均方误差来确认算法的准确度。

  二、分类算法的评估(以K-近邻算法来说)

knn = KNeighborsClassifier(n_neighbors=5)
    knn.fit(x_train, y_train)
    y_predict = knn.predict(x_test)
    print("预测值:", y_predict)

    # 5、评估
    # 评估
    score = knn.score(x_test, y_test)
    print("准确率:", score)      

  说明:可以通过predict()函数来预测结果

        source()来出来预测准确率(理解为真实预测数据/所有数据)

  其中还有其他的值的算法过程,和进准率差不多。 

  数据:
         预测值 0  预测值 1
  真实值 0   TN          FP
  真实值 1   FN          TP
  精准率(precision):
                    TP
      precision = ——————   
                  TP + FP
  召回率(recall):
                 TP
      recall = ———————
               TP + FN
  模型的稳定性:
                2TP        2precision * recall
      F1 = ————————————— = ———————————————————
           2TP + FN + FP    precision + recall      

  三、均方误差

from sklearn.metrics import mean_squared_error

def mean_squared_error(y_true, y_pred,
                       sample_weight=None,
                       multioutput='uniform_average'):
    ...      

  主要参数,y_true,y_pred:真实值,预测值

  公式:

1  m      _
            MSE = ——— ∑(yi - y)^2
                   m i=1
                      _
            yi:预测值 y:真实值
            一定要标准化之前的值      

  四、统一说明:在分类算法中准确率只是其中的一项,以越接近100%,越准确。回归算法中以MSE(均方误差值越小,越准确)