聚类指标
该 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
方法完全忽略了输入数据.