动手学习数据分析之模型建立和评估

  • 建模
  • sklearn模型算法选择路径图
  • 切割训练集和测试集
  • 回归模型
  • 随机森林
  • 输出模型预测结果
  • 评价
  • k 折交叉验证
  • 混淆矩阵、精确率、召回率以及f-分数


建模

数据分析的目的是运用数据,结合业务来得到某些我们需要知道的结果。分析的第一步就是建模,搭建一个合适的模型获得合适的结果。在本章中,我们提出了对目标生存与否的预测的任务,我们分别搭建了回归模型,和决策树模型帮助我们实现目标。

sklearn模型算法选择路径图

下面给出sklearn的算法选择路径,供大家参考:

机器学习中数据分析和模型建立的先后 数据分析及模型建立_召回率

切割训练集和测试集

切割数据集是为了后续能评估模型泛化能力,sklearn中切割数据集的方法为train_test_split,将stratify=y就是按照y中的比例分配, random_state=0设置了随机种子,便于实验的复现。

X_train, X_test, y_train, y_test = train_test_split(X, y, stratify=y, random_state=0)
X_train.shape, X_test.shape

机器学习中数据分析和模型建立的先后 数据分析及模型建立_机器学习_02

回归模型

线性模型所在的模块为sklearn.linear_model,线性回归简单来说就是这样一个公式,线性回归模型在训练中调整权重进行拟合。

机器学习中数据分析和模型建立的先后 数据分析及模型建立_机器学习_03


模型训练:

lr = LogisticRegression()
lr.fit(X_train, y_train)

随机森林

树模型所在的模块为sklearn.ensemble,决策树模型同时使用多个条件进行判断的模型。
模型训练:

rfc = RandomForestClassifier()
rfc.fit(X_train, y_train)

输出模型预测结果

一般监督模型在sklearn里面有个predict能输出预测标签,predict_proba则可以输出标签概率。

下面是回归模型的预测示例。

机器学习中数据分析和模型建立的先后 数据分析及模型建立_机器学习_04

评价

我们需要对模型进行评估来知道这个模型好用与否。
我们分别使用k 折交叉验证(k-fold cross-validation)和准确率(precision)以及召回率(recall)对模型进行评价。

  • 最常用的交叉验证是 k 折交叉验证(k-fold cross-validation),其中 k 是由用户指定的数字,通常取 5 或 10。
  • 准确率(precision)度量的是被预测为正例的样本中有多少是真正的正例
  • 召回率(recall)度量的是正类样本中有多少被预测为正类
  • f-分数是准确率与召回率的调和平均

k 折交叉验证

K折就是讲数据集切分成K小块,验证集和测试集相互形成补集,循环交替:

机器学习中数据分析和模型建立的先后 数据分析及模型建立_机器学习中数据分析和模型建立的先后_05

scores = cross_val_score(lr, X_train, y_train, cv=10)

机器学习中数据分析和模型建立的先后 数据分析及模型建立_召回率_06

混淆矩阵、精确率、召回率以及f-分数

混淆矩阵如图:

机器学习中数据分析和模型建立的先后 数据分析及模型建立_机器学习_07


准确率 (Accuracy),精确度(Precision),Recall,f-分数计算方法如图:

机器学习中数据分析和模型建立的先后 数据分析及模型建立_交叉验证_08

  • 混淆矩阵的方法在sklearn中的sklearn.metrics模块
  • 混淆矩阵需要输入真实标签和预测标签
  • 精确率、召回率以及f-分数可使用classification_report模块
    模型的各项指标如图所示: