动手学习数据分析之模型建立和评估
- 建模
- 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
回归模型
线性模型所在的模块为sklearn.linear_model,线性回归简单来说就是这样一个公式,线性回归模型在训练中调整权重进行拟合。
模型训练:
lr = LogisticRegression()
lr.fit(X_train, y_train)
随机森林
树模型所在的模块为sklearn.ensemble,决策树模型同时使用多个条件进行判断的模型。
模型训练:
rfc = RandomForestClassifier()
rfc.fit(X_train, y_train)
输出模型预测结果
一般监督模型在sklearn里面有个predict能输出预测标签,predict_proba则可以输出标签概率。
下面是回归模型的预测示例。
评价
我们需要对模型进行评估来知道这个模型好用与否。
我们分别使用k 折交叉验证(k-fold cross-validation)和准确率(precision)以及召回率(recall)对模型进行评价。
- 最常用的交叉验证是 k 折交叉验证(k-fold cross-validation),其中 k 是由用户指定的数字,通常取 5 或 10。
- 准确率(precision)度量的是被预测为正例的样本中有多少是真正的正例
- 召回率(recall)度量的是正类样本中有多少被预测为正类
- f-分数是准确率与召回率的调和平均
k 折交叉验证
K折就是讲数据集切分成K小块,验证集和测试集相互形成补集,循环交替:
scores = cross_val_score(lr, X_train, y_train, cv=10)
混淆矩阵、精确率、召回率以及f-分数
混淆矩阵如图:
准确率 (Accuracy),精确度(Precision),Recall,f-分数计算方法如图:
- 混淆矩阵的方法在sklearn中的
sklearn.metrics
模块 - 混淆矩阵需要输入真实标签和预测标签
- 精确率、召回率以及f-分数可使用
classification_report
模块
模型的各项指标如图所示: