Chapter 09
第三章 模型搭建和评估-评估
NotebookPython 348 cells
第三章 模型搭建和评估-评估
根据之前的模型的建模,我们知道如何运用sklearn这个库来完成建模,以及我们知道了的数据集的划分等等操作。那么一个模型我们怎么知道它好不好用呢?以至于我们能不能放心的使用模型给我的结果呢?那么今天的学习的评估,就会很有帮助。
加载下面的库
In [3]python · cell 4
python
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
from IPython.display import Image
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import RandomForestClassifierIn [4]python · cell 5
python
%matplotlib inlineIn [5]python · cell 6
python
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
plt.rcParams['figure.figsize'] = (10, 6) # 设置输出图片大小任务:加载数据并分割测试集和训练集
In [1]python · cell 8
python
#写入代码
In [1]python · cell 9
python
#写入代码
In [1]python · cell 10
python
#写入代码
In [1]python · cell 11
python
#写入代码
模型评估
- 模型评估是为了知道模型的泛化能力。
- 交叉验证(cross-validation)是一种评估泛化性能的统计学方法,它比单次划分训练集和测试集的方法更加稳定、全面。
- 在交叉验证中,数据被多次划分,并且需要训练多个模型。
- 最常用的交叉验证是 k 折交叉验证(k-fold cross-validation),其中 k 是由用户指定的数字,通常取 5 或 10。
- 准确率(precision)度量的是被预测为正例的样本中有多少是真正的正例
- 召回率(recall)度量的是正类样本中有多少被预测为正类
- f-分数是准确率与召回率的调和平均
【思考】:将上面的概念进一步的理解,大家可以做一下总结
In [34]python · cell 15
python
#思考回答:
任务一:交叉验证
- 用10折交叉验证来评估之前的逻辑回归模型
- 计算交叉验证精度的平均值
In [6]python · cell 17
python
#提示:交叉验证
Image('Snipaste_2020-01-05_16-37-56.png')Output
<IPython.core.display.Image object>
提示4
- 交叉验证在sklearn中的模块为
sklearn.model_selection
In [1]python · cell 19
python
#写入代码
In [1]python · cell 20
python
#写入代码
In [1]python · cell 21
python
#写入代码
In [1]python · cell 22
python
#写入代码
思考4
- k折越多的情况下会带来什么样的影响?
In [35]python · cell 24
python
#思考回答
任务二:混淆矩阵
- 计算二分类问题的混淆矩阵
- 计算精确率、召回率以及f-分数
【思考】什么是二分类问题的混淆矩阵,理解这个概念,知道它主要是运算到什么任务中的
In [37]python · cell 27
python
#思考回答
In [40]python · cell 28
python
#提示:混淆矩阵
Image('Snipaste_2020-01-05_16-38-26.png')Output
<IPython.core.display.Image object>
In [42]python · cell 29
python
#提示:准确率 (Accuracy),精确度(Precision),Recall,f-分数计算方法
Image('Snipaste_2020-01-05_16-39-27.png')Output
<IPython.core.display.Image object>
提示5
- 混淆矩阵的方法在sklearn中的
sklearn.metrics模块 - 混淆矩阵需要输入真实标签和预测标签
- 精确率、召回率以及f-分数可使用
classification_report模块
In [1]python · cell 31
python
#写入代码
In [1]python · cell 32
python
#写入代码
In [1]python · cell 33
python
#写入代码
In [1]python · cell 34
python
#写入代码
【思考】
- 如果自己实现混淆矩阵的时候该注意什么问题
In [43]python · cell 36
python
#思考回答
任务三:ROC曲线
- 绘制ROC曲线
【思考】什么是ROC曲线,OCR曲线的存在是为了解决什么问题?
In [44]python · cell 39
python
#思考
提示6
- ROC曲线在sklearn中的模块为
sklearn.metrics - ROC曲线下面所包围的面积越大越好
In [1]python · cell 41
python
#写入代码
In [1]python · cell 42
python
#写入代码
In [1]python · cell 43
python
#写入代码
In [1]python · cell 44
python
#写入代码
思考6
- 对于多分类问题如何绘制ROC曲线
In [45]python · cell 46
python
#思考回答
【思考】你能从这条OCR曲线的到什么信息?这些信息可以做什么?
In [ ]python · cell 48
python
#思考回答
