数据分析项目练习笔记(2)—— 数据重构和基础处理
使用工具:Jupyter
使用库:Pandas,NumPy
参考资料:
https://pandas.pydata.org/docs/user_guide/10min.html
https://www.osgeo.cn/numpy/user/absolute_beginners.html
1、数据清洗
- 将部分无关后续分析的信息删去
- 将文字信息转化为数字信息,加快处理速度
2、监督学习 vs 无监督学习
监督学习:通过标记后的数据训练模型,进行回归或分类的任务
无监督学习:通过未标记的数据训练模型,进行回归或分类
选择模型的考虑因素
- 任务、样本量、样本稀疏程度
- 基本流程:选择一个基本模型作为对比基准,其他模型与其比较,选择泛化和性能较好的
3、模型评估(过拟合,欠拟合)
- 留出法:数据集分自变量和因变量,且自变量和因变量总记录数应该是一致的(测试集占比10%-30%),分层抽样,抽样时设置随机种子(便于复现)
- 交叉验证:数据集分为k个同样大小的互斥子集,每次训练使用其中一个为测试集,剩下为训练集,训练k个模型取平均值
- 自助法:主要用于小样本,设样本量k,抽样k次,每次选取并放回一个样本,最后所有选取的是训练集,剩下从未被选中的为测试集
ps:最常用的时交叉验证,因为更加稳定,数据会被多次划分,训练多个模型,k通常为5or10
4、模型选取
- 线性模型
- 一般线性
- 多元线性回归
- 逻辑
- 树类模型
- 决策树
5、sklearn
predict() # 预测样本的分类结果
predict_proba() # 预测样本属于每个标签的概率
score() # 根据测试数据的预期分类结果和实际分类标签计算准确度
逻辑回归
LogisticRegression().fit(训练集数据, 训练集标签) # 逻辑回归训练模型
- para の penalty: 正则化,主要用于防止过拟合
决策树
二分法在每个节点进行条件判断,通过判断结果进行分类,到叶节点即分类结果
LogisticRegression().fit(训练集数据, 训练集标签) # 逻辑回归训练模型- para の penalty: 正则化,主要用于防止过拟合
优化:随机森林,多个决策树同时使用,投票获得分类结果
RandomForestClassfier().fit(数据,标签)
6、线性多元分类
- 特征值两两分类
- 特征值整体分类
7、影响模型好坏的因素
- 数据选取(eg:人脸识别如果样本选取都是亚洲人的图片,那么最终模型对亚洲人的识别效果会好于其他地区)
- 评估方法
- 调参
8、评估方法
混淆矩阵(误差矩阵)
- TN 预测假,实际假
- TP 预测真,实际真
- FN 预测假,实际真
- FP 预测真,实际假
Accuracy = (TP+TN)/TP+TN+FN+FP)
Precise = TP/(TP+FP)
Recall = TP/(TP+FN)
F1 = 2RecallPrecise/Recall+Precise
ROC曲线
(roc_curve)
以判断对的百分比为纵轴,错的百分比为横轴画出的曲线,通常毕竟基准为随机曲线(0,0)- (100%, 100%),越向左上方凸起效果越好