zoukankan      html  css  js  c++  java
  • 机器学习sklearn(二十八): 模型评估(八)量化预测的质量(五)聚类指标/虚拟估计

     聚类指标

    该 sklearn.metrics 模块实现了一些 loss, score 和 utility 函数. 更多信息请参阅 聚类性能度量 部分, 例如聚类, 以及用于二分聚类的 Biclustering 评测.

    虚拟估计

    在进行监督学习的过程中,简单的 sanity check(理性检查)包括将人的估计与简单的经验法则进行比较. DummyClassifier 实现了几种简单的分类策略:

    • stratified 通过在训练集类分布方面来生成随机预测.
    • most_frequent 总是预测训练集中最常见的标签.
    • prior 总是给出能够最大化类先验概率的预测 (类似于 most_frequent) 并且 predict_proba 返回类先验概率.
    • uniform 随机产生预测.
    • constant总是预测用户提供的常量标签.当 positive class(正类)较少时,这种方法的主要动机是 F1-scoring.

    请注意, 这些所有的策略, predict 方法彻底的忽略了输入数据!

    为了说明 DummyClassifier, 首先让我们创建一个不平衡数据集.

    >>> from sklearn.datasets import load_iris
    >>> from sklearn.model_selection import train_test_split
    >>> iris = load_iris()
    >>> X, y = iris.data, iris.target
    >>> y[y != 1] = -1
    >>> X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)

    接下来, 让我们比较一下 SVC 和 most_frequent 的准确性.

    >>> from sklearn.dummy import DummyClassifier
    >>> from sklearn.svm import SVC
    >>> clf = SVC(kernel='linear', C=1).fit(X_train, y_train)
    >>> clf.score(X_test, y_test)
    0.63...
    >>> clf = DummyClassifier(strategy='most_frequent',random_state=0)
    >>> clf.fit(X_train, y_train)
    DummyClassifier(constant=None, random_state=0, strategy='most_frequent')
    >>> clf.score(X_test, y_test)  
    0.57...

    我们看到 SVC 没有比一个 dummy classifier(虚拟分类器)好很多. 现在, 让我们来更改一下 kernel:

    >>> clf = SVC(gamma='scale', kernel='rbf', C=1).fit(X_train, y_train)
    >>> clf.score(X_test, y_test)  
    0.94...

    我们注意到准确率提升到将近 100%. 建议采用交叉验证策略, 以更好地估计精度, 如果不是太耗 CPU 的话. 更多信息请参阅 交叉验证:评估估算器的表现 部分. 此外,如果要优化参数空间,强烈建议您使用适当的方法; 更多详情请参阅 调整估计器的超参数 部分.

    通常来说,当分类器的准确度太接近随机情况时,这可能意味着出现了一些问题: 特征没有帮助, 超参数没有正确调整, class 不平衡造成分类器有问题等…

    DummyRegressor 还实现了四个简单的经验法则来进行回归:

    • mean 总是预测训练目标的平均值.
    • median 总是预测训练目标的中位数.
    • quantile 总是预测用户提供的训练目标的 quantile(分位数).
    • constant 总是预测由用户提供的常数值.

    在以上所有的策略中, predict 方法完全忽略了输入数据.

  • 相关阅读:
    腾讯X5内核使用详解(X5内核播放器使用如何去除控制栏全屏播放)以及一些注意事项
    易语言加壳SDK(宏标记)
    安卓相对布局常用语句
    安卓平分位置layout_weight学习记录
    为什么要前后端分离?各有什么优缺点?
    前端开发技术路线
    超实用的JQuery小技巧
    HTML元素脱离文档流的三种方法
    Promise的理解
    JS闭包是什么?
  • 原文地址:https://www.cnblogs.com/qiu-hua/p/14905547.html
Copyright © 2011-2022 走看看