当前位置: 首页 > news >正文

1111111111111111111111111111111111111111 - 苦瓜大王

机器学习

1、立项

立项的目的是:明确项目意义,确定项目目标、范围和资源需求,能最大程度的利用所需资源,并规范项目实现流程,使用时间表等。

  • 项目的背景(项目的母胎)
  • 数据来源
  • 数据预处理
  • 特征工程 -> 特征处理与特征选择
  • 选择模型/算法
  • 模型评估
  • 模型 (上线/线下) 部署

2、功能实现

区分项目任务,一般总的分为三部分:1、数据预处理、2、特征选择与处理、3、模型应用

  • 数据预处理

    # 数据预处理一般处理的都是数据中的 "脏数据","脏数据"就是我们数据中的 (缺失值、重复值、异常值、某些字段信息不合法等)。# 1、 缺失值的处理,一般使用填充,可以根据数据信息的类型,选择不同的填充方式。
    #		   | 可以使用pandas,判断是否有缺失值,一般判断缺失值的方法为: ( pd.isnull() | pd.isna() ),我们可以对其进行求和,或布尔值观察 
    #	 	   | 常见的填充方式: mode -> 众数填充,median -> 中位数填充,mean -> 均值填充等。# 2、重复值处理,一般采用(删除 或 去重):
    # 		   | 判断是否有重复值可以使用( pandas中的duplicate() ),会更直观的查看到数据表中重复值得数量。
    # 		   | 删除重复值行,使用pd.drop_duplicates(keep="first",inplace=True,subset),可以删除重复行。
    # 				|  其中参数inplace决定是否在原表上进行操作,False则代表不在原表操作,会返回一个新的DataFrame。
    # 				|  keep参数决定了重复值得保留方法,可传入三个值:"first(第一条) | last(最后一条) | False(不保留)"
    # 				|  subset参数决定了重复列的判定方式,这让我们有机会利用多列作为判定重复的依据。参数接受的是一个字段列表# 3、异常值(离群值)观测与处理:
    # 		   |  异常值的观测一般使用箱线图(boxplot),可以很清晰的将异常值展示出来.如 (大于上边界) 或 (小于下边界) 的值。
    # 		   |  异常值处理1:使用IQR四分位间距检测
    # 		   		   | 通过计算出当前列的上四分位数与下四分位分别加上或减去正常值,从而得到一个上边界值或下边界值,用来分别检测异常值。
    # 			 	   | 上四分位数:q3 = df['column'].quantila(0.75)
    # 			 	   | 下四分位数:q1 = df['column'].quantila(0.25)
    # 			 	   | 正常值,IQR : IQR = q3 - q1
    # 			 	   | 然后计算上下边界(boundary)
    # 			 	   | 上边界:upper_boundary = q3 + IQR * 1.5
    # 			 	   | 下边界:lower_boundary = q1 - IQR * 1.5
    # 				   | 再通过计算出的上下边界值,获得异常值,并处理。
    # 				   | error = (df['column'] > upper_boundary) | (df['column'] < lower_boundary)
    # 				   | df.loc[error, column] = df[column].median()  # 中位数填充# 4、非法字段的检测处理:需要根据字段信息校验,并将字符转为所希望合法的字符,此处暂时略过...
    # 关于异常值补充:# 1、删除 : 如果想找出一般的规律,而且异常值也不太多,可以考虑删除。因为异常值可能会影响结论。很多节目中计算选手最后得分往往去掉一个最高分,去掉一个最低分,可能就是这个道理。比如我们现在研究就是要塞等级为15级的玩家的道具消耗特征,这时候异常值显然会拉高整体的水平,影响判断,所以可以考虑删除,我们要了解大多数玩家。# 2、放任不管: 因为异常值代表的也是真实发生的事件,背后是具体的行为。有些值即使异常,也不会影响模型。比如我们研究的关系,想做回归分析,也就是看道具消耗和充值金额的因果关系。我们能够很清楚的看到刚才找到的的4个异常值虽然他们游离于群体之外,但是在对进行拟合的时候并没有使模型造成太大偏差。所以这种异常值对我们的模型来说很合理。# 3、视为缺失值填充(就是上方的填充):。因为贸然删除数据可能会损失信息,而如果放任不管可能又影响我们的模型,所以可以考虑用均值、临近值进行填充。
    
  • 特征选择

    特征选择也可以称之为 (特征工程) ,我们需要在其中对比特征的相关性,选择性的降低特征维度,对特征进行一系列的处理,如:标准化、归一化等,与标签 (目标) 规范,为防止模型过于复杂从而引起过拟合,我们需要将相关性较弱的特征选择型删除,从而达到节省资源

    sklearn.metrics 评估指标,所有的评估方法都在该模块中
    accuracy_score(y_true, y_pred)变量:可修改、自定义
    常量:不可修改、不可自定义1、Accuracy 准确率 : 预测的正确样本/总样本数
    模型自带的score底层是调用的 sklearn.metrics 内的 accuracy_score,因此他们结果相同。
    from sklearn.metrics import accuracy_score  # 方法的导入
    缺点: 对当前模型进行评估时,如果对数据的类别/标签样本没有处理均衡,导致最终的Acc可能依然会很高,结果也不是预期准确的。所以acc并不是唯一评估指标。
    核心:判断 预测值 与 真实值 是否相等(或是说比例)
    2、精确率(Precision) :表示预测为正样本的实例中真正为正样本的比例
    3、召回率(Recall)-*:表示真正为正样本的实例中被预测为正样本的比例。
    4、F1分数(F1-score):使用了精确率与召回率,最终得出指标 F1-score = (2*0.769*0.556)/(0.769+0.556)classification_report # 分类报告,包含上方四种评估指标混淆矩阵:confusion_matrix线图评估
    1、roc 曲线图
    2、aoc 面积

月亮数据集
1、导入数据make_moons
n_samples= 1000  # 数据量
noise = 0.05  # 噪音X,y = make_moons(n_samples= 1000, noise = 0.05)
# 转换DataFrame类型  指定 columns 
# 拼接 concat -> 拼接需要指定拼接列或行的维度 axisvalue_counts()   -> 返回的元素值,可以直接来接收例如:X1, X2 = value_counts( ... )  # 前提是返回的元素与接收的元素对等取反 ~ 符号,可以将条件取反 True 变 False 等,灵活运用学习曲线:方法在 model_selection 中需要的参数有,模型,X,y模型传入使用的模型,X与y传入训练数据最终返回值是训练大小,训练成绩,测试成绩-------------------------------------------------------------------------------------------------------------------
任务一1、数据的读取1)本地读取使用 pandas 读取尾缀:.data .txt .csv认识数据:打印(前几行、后几行、数据总数、数据特征总数(-1)...)2)sklern 读取鸢尾花数据集(load_iris)、红酒数据集(load_wine)、月亮标签数据集(make_moons)、乳腺癌数据集、糖尿病数据集2、数据处理缺失值(fillna)、重复值(DROP)、异常值(IQR),在处理这些脏数据时,要通过观测数据本身来选择填充、删除等方法。3、特征选择与处理选择的相关性较强的特征 | 处理的特征和标签不规范 标准化缩放:将值缩放到均值为0,方差为1的范围内归一化缩放:范围在[0,1]之间3、模型算法选择模型与网格优化网格优化(优化模型)estimator 估计器/分类器best 最好的评估指标:sklearn.metrics 准确率、精确率、召回率、f1分数、混淆矩阵、分类报告、roc曲线、auc数值/面积
http://www.vanclimg.com/news/3438.html

相关文章:

  • IDEA初步了解
  • 读书笔记:Oracle数据库连接与进程的奥秘
  • 7
  • 7.30随笔
  • 回溯算法实现全排列2
  • 进程间通信(IPC)机制详解
  • TTS-1技术报告:基于Transformer的文本转语音模型
  • 兴业寰宇人生卡
  • 幻兽帕鲁服务器部署完整指南 - sherlock
  • 基于PaddleOCR的图像验证码快速识别实践
  • 每天阅读30分钟-阿里测试之道读书笔记(一)(二)
  • webapi第三天
  • PG系列:PostgreSQL连接内存开销测量
  • 高并发处理的Rust实现方案(9639)
  • HTTP请求处理的高效封装(3087)
  • 微服务架构的轻量级解决方案(6417)
  • 高性能路由系统的设计与实现(9854)
  • HTTP响应处理的灵活设计(3260)
  • 使用Prism Template Pack快速构建基于 Prism 的应用程序
  • 延迟优化的极致追求:毫秒级响应的秘密(4788)
  • 实时通信技术深度对比:WebSocket与SSE的最佳实践(9347)
  • 轻量级服务器架构的极致优化(4135)
  • httpx.InvalidURL: Invalid port
  • 高效实现 LRU 缓存机制:双向链表与哈希表的结合
  • 7月30日总结
  • 三极管原理
  • 30天总结-第二十九天
  • sqlserver一些区别mysql基本命令
  • 壳的学习笔记
  • 英语_阅读_Why do we love mountains?_待读