文章目录
- 一. Sklearn工具包介绍
- 1.2 模型评估: 量化预测的质量
- 二. SciKit-Learn数据集
- 三. 模型评估-交叉验证(cross validation)
- 四. 模型评估——混淆矩阵(Confusion Matrix)
- 五. 模型评价指标——Precision/Recall
-
- 5.1 准确率、精确率、召回率、F值对比
- 5.2 精确率、召回率计算公式
-
- 5.4.1 precision_score函数
- 5.4.2 recall_score函数
- 六. 模型评价——选择合适阈值
-
- 6.2 recall变化precision的变化情况
- 七. 模型评价——ROC curves
-
- 7.2 ROC-AUC(ROC曲线下面积)
一. Sklearn工具包介绍
scikit-learn,又写作sklearn,是一个开源的基于python语言的机器学习工具包。它通过NumPy, SciPy和Matplotlib等python数值计算的库实现高效的算法应用,并且涵盖了几乎所有主流机器学习算法。
官网: scikit-learn: machine learning in Python — scikit-learn 1.1.1 documentation
搜索相关语法:
https://scikit-learn.org/stable/search.html?q=fetch_openml
安装sklearn
# 不是 pip install -U sklearn pip install -U scikit-learn
1.1 常用模块
从官网的首页我们可以看到常用的模块如下图所示:
Sklearn中常用模块:分类(Classification)、回归(Regression)、聚类(Clustering)、降维(Dimensionality reduction)、模型选择(Model selection)、数据预处理(Preprocessing)。
-
分 类 \color{red}{分类} 分 类 :识别某个对象属于哪个类别,常用的算法有:SVM(支持向量机)、nearest neighbors(最近邻)、random forest(随机森林),常见的应用有:垃圾邮件识别、图像识别。
-
回 归 \color{red}{回归} 回 归 :预测与对象相关联的连续值属性,常见的算法有:SVR(支持向量机)、 ridge regression(岭回归)、Lasso,常见的应用有:药物反应,预测股价。
-
聚 类 \color{red}{聚类} 聚 类 :将相似对象自动分组,常用的算法有:k-Means、 spectral clustering、mean-shift,常见的应用有:客户细分,分组实验结果。
-
降 维 \color{red}{降维} 降 维 :减少要考虑的随机变量的数量,常见的算法有:PCA(主成分分析)、feature selection(特征选择)、non-negative matrix factorization(非负矩阵分解),常见的应用有:可视化,提高效率。
-
模 型 选 择 \color{red}{模型选择} 模 型 选 择 :比较,验证,选择参数和模型,常用的模块有:grid search(网格搜索)、cross validation(交叉验证)、 metrics(度量)。它的目标是通过参数调整提高精度。
-
预 处 理 \color{red}{预处理} 预 处 理 :特征提取和归一化,常用的模块有:preprocessing,feature extraction,常见的应用有:把输入数据(如文本)转换为机器学习算法可用的数据。
1.2 模型评估: 量化预测的质量
有 3 种不同的 API 用于评估模型预测的质量:
- Estimator score method(估计器得分的方法) : Estimators(估计器)有一个
score(得分)
方法,为其解决的问题提供了默认的 evaluation criterion (评估标准)。 在这个页面上没有相关讨论,但是在每个 estimator (估计器)的文档中会有相关的讨论。 - Scoring parameter(评分参数) : Model-evaluation tools (模型评估工具)使用 cross-validation (如 model_selection.cross_val_score 和 model_selection.GridSearchCV ) 依靠 internal scoring strategy (内部 scoring(得分) 策略)。这在 scoring 参数: 定义模型评估规则 部分讨论。
- Metric functions(指标函数) :
metrics
模块实现了针对特定目的评估预测误差的函数。这些指标在以下部分部分详细介绍 分类指标 , 多标签排名指标 , 回归指标 和 聚类指标 。
二. SciKit-Learn数据集
sklearn.datasets 模块 包含加载数据集的实用程序,包括加载和获取流行引用数据集的方法。它还具有一些人工数据生成器。
2.1 加载数据集
数据科学的第一步通常是加载数据,首先需要学会如何使用SciKit-Learn来加载数据集。
数据集的来源通常是自己准备或第三方处获取。非研究人员,通常是从第三方获取数据。可以下载获取数据集的网站:
SciKit-Learn库中,也有自带一些数据集可以尝试加载。
datasets
模块中也包含了获取其他流行数据集的方法,例如 datasets.fetch_openml
可以从 openml 存储库获取数据集。
代码:
def get_data(): # 通过名称或数据集ID从openml获取数据集 from sklearn.datasets import fetch_openml # Mnist 数据是图像数据:(28,28,1)的灰度图 mnist = fetch_openml('mnist_784') # print(mnist) X, y = mnist["data"], mnist["target"] print (X.shape) # (70000, 784) print (y.shape) # (70000,) get_data()
测试记录:
(70000, 784)
(70000,)
2.2 数据集切分
将数据集切分为训练集、测试集。
一般使用:
from sklearn.model_selection import train_test_split # 划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_