决策树

缺失值处理

佐手、 提交于 2021-02-20 16:46:40
1. 数据缺失分为两种:行记录缺失,列记录缺失。 2. 不同的数据存储和环境对缺失值的表示也不同。例如:数据库中是Null,Python是None,Pandas或Numpy是NaN。 3. 对缺失值的处理通常4种方法: (1). 丢弃 下面两种场景不宜采用该方法: 不完整数据比例较大,超过10% 缺失值存在明显的数据分布规律或特征 (2). 补全 常用补全方法: 统计法:对于 数值型 的数据,使用均值、加权均值、中位数等方法补足;对于 分类型 数据,使用类别众数最多的值补足。 模型法:基于已有的其他字段,将缺失字段作为目标变量进行预测,从而得到较为可能的补全值。如果带有缺失值的列是 数值 变量,采用回归模型补全;如果是 分类 变量,则采用分类模型补全。 专家补全:少量且具有重要意义的数据记录,专家补足也是非常重要的一种途径。 其他方法:随机发、特殊值法、多重填补等 (3). 真值转换法 (4). 不处理 常见能够自动处理缺失值模型包括:KNN、决策树和随机森林、神经网络和朴素贝叶斯、DBSCAN(基于密度的带有噪声的空间聚类)等。 处理思路: 忽略 ,缺失值不参与距离计算,例如:KNN。 将缺失值 作为分布的一种状态 ,并参与到建模过程,例如:决策树以及变体。 不基于距离做计算 ,因此基于值得距离计算本身的影响就消除了,例如:DBSCAN。 4. 对于缺失值的处理上,主要配合使用

Spark MLlib中分类和回归算法

落花浮王杯 提交于 2021-02-20 05:56:44
Spark MLlib中分类和回归算法: -分类算法: pyspark.mllib.classification -朴素贝叶斯 NaiveBayes -支持向量机(优化:随机梯度下降)SVMWithSGD -逻辑回归 LogisticRegressionWithSGD // 从Spark 2.0开始,官方推荐使用BFGS方式优化LR算法 LogisticRegressionWithBFGS // 针对流式数据实时模型训练算法 StreamingLogisticRegressionWithSGD -树Tree相关分类算法: pyspark.mllib.tree   -决策树 DecisionTree   -随机森林算法 –集成学习算法-Bagging方式 RandomForest   -梯度提升决策树算法 –集成学习算法 –Boosting方式 GradientBoostedTrees     Spark MLlib中从底层源码来看,无论是DT 还是RF还是GBT算法,底层都是RF算法实现的。 -分类算法的类别:   树相关的算法,既可以做二分类,又可以做多分类算法:   numClass: Number of classes for classification   -二分类   NB、SVM、LR   -多分类    NB、LR 监督学习算法: 数据集RDD

机器学习之集成学习和随机森林

一世执手 提交于 2021-02-18 19:21:15
一、集成学习 集成学习就是合并多个分类器的预测。一般会在一个项目快结束的时候使用集成算法,一旦建立了一些好的分类器,就可以使用集成把它们合并成一个更好的分类器。 著名的集成方法:投票分类、bogging、pasting、boosting、stacking、和一些其它算法。 1.1 投票分类(少数服从多数) 令人惊奇的是这种投票分类器得出的结果经常会比集成中最好的一个分类器结果更好。 事实上,即使每一个分类器都是一个弱学习器(意味着它们也就比瞎猜好点),集成后仍然是一个强学习器(高准确率),只要有足够数量的弱学习者,他们就足够多样化。 如果每一个分类器都在同一个数据集上训练,会导致犯同一种类型的错误。相比较而言,每个分类器在不同的数据集上训练,集成后的结果会更好。 下面使用moons数据集,训练三个分类器,使用集成算法。 from sklearn.datasets import make_moons from sklearn.model_selection import train_test_split moons = make_moons(noise=0.3, random_state= 0) X, y = moons X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=.4, random

机器学习:集成学习:随机森林.GBDT

笑着哭i 提交于 2021-02-18 18:31:47
集成学习(Ensemble Learning) 集成学习的思想是将若干个学习器(分类器&回归器)组合之后产生一个新学习器.弱分类器(weak learner)指那些分类准确率只稍微好于随机猜测的分类器(error rate < 0.5); 集成算法的成功在于保证弱分类器的多样性(Diversity).而且集成不稳定的算法也能够得到一个比较明显的性能提升 常见的集成学习思想有: Bagging Boosting Stacking Why need Ensemble Learning? 1. 弱分类器间存在一定的差异性,这会导致分类的边界不同,也就是说可能存在错误。那么将多个弱分类器合并后,就可以得到更加合理的边界,减少整体的错误率,实现更好的效果; 2. 对于数据集过大或者过小,可以分别进行划分和有放回的操作产生不同的数据子集,然后使用数据子集训练不同的分类器,最终再合并成为一个大的分类器; 3. 如果数据的划分边界过于复杂,使用线性模型很难描述情况,那么可以训练多个模型,然后再进行模型的融合; 4. 对于多个异构的特征集的时候,很难进行融合,那么可以考虑每个数据集构建一个分类模型,然后将多个模型融合。 Bagging方法 Bagging方法又叫做自举汇聚法(Bootstrap Aggregating),思想是:在原始数据集上通过有放回的抽样的方式

为什么你的提问没人解答?

牧云@^-^@ 提交于 2021-02-17 12:28:26
作者:王大伟 微软最有价值专家(MVP) 平安金融壹账通大数据研究院数据挖掘攻城狮 Python爱好者社区唯一小编 最近很忙,很久没有写文章了 今天的话题是 “为什么你的提问没人解答? ” 在IT圈子里,不同岗位的从业者都会或多或少在工作中遇到各种问题,公司的相关规章制度流程,大部分人倾向于求助同事,毕竟他们是你最直接获得答案的来源,一问一答,几次下来,即使你是新入职的员工,你也能和同事相互认识了解,这是一件不错的事。 但是关于技术相关的问题,很多从业者并不倾向问同事,或许是因为他们不好意思开口,或许是因为觉得自己的问题同事不一定知道,或许是因为他觉得同事会认为他这都不知道,会嘲笑他! 于是这群“有问题”的人来到了各种技术交流群,例如“人工智能爱好者交流群”、“XX编程语言学习群”。 在群里反正自己也不是实名制,问的啥问题都没事,能得到答案岂不是美滋滋? 于是他们找到了列表中的这些群,编辑了一下自己的问题,如果有心的话,配上一张并不清晰甚至旋转了90度拍摄的问题照片,或许是想让群友活动一下颈椎吧。 编辑的提问文字各有千秋 有朴素版: 有会Python的朋友么? 有会用户画像的么? 有人在么? 有追求卓越版: 有精通网络爬虫的大佬么? 有参与过XXX大型项目的大牛么? 有感觉卑微版: 请各位大佬指点一下我,我是XX编程语言初学者,请问怎么快速入门啊? 有暴躁老哥版:

如何入门机器学习

試著忘記壹切 提交于 2021-02-17 08:16:14
本篇文章,我将从过来的人角度介绍下机器学习如何从入门到精通,这里我们谈经验,谈工具,更谈方法论。 1.入门 作为初入机器学习的小白,你可能除了一颗好奇的心和一番热血外什么都不没有,当然最好还是希望你能有线性代数、微积分和概率论的基础。你可能会心存顾虑:学过但忘了。不用担心,这种东西不用就会忘,但只要用到,学一学便会;或者说你可能真的没学过,这个也不用担心,只要你真的想学现在也来得及。 好了废话不多说,我们进入入门阶段的正题。入门阶段主要有三个任务: 快速看完周志华的《西瓜书》 ; 看吴恩达 Coursera 上的《机器学习》 ; 调包跑算法 。 看完这个后可能大家会有很多不解或者很多疑惑。不着急,我们一个一个解答。 1.1 快速看完《西瓜书》 问题一:为什么要选《机器学习》? 因为这本书真的很不错,作为入门书籍非常合适。同样有名的《统计学习方法》虽然也很不错,但是其对小白来说相对较难。虽然《西瓜书》上面也有公式,但我们在初学的时候太复杂的完全可以先跳过去,并且书中还配有西瓜的例子,可以很好的帮助同学们理解算法的工作过程。 问题二:为什么要快速看完? 我这里强调快速,是因为快速真的很重要。因为如果战线拉得太长,如果一开始看的太细又读哪儿哪不懂,人是很容易有排斥心理的。最简单的一个例子,你想想你背英语单词的时候,多少次是从“abandon”开始背起的。每次快要期末考试了,或者四六级

机器学习入门

折月煮酒 提交于 2021-02-16 23:19:48
机器学习 针对经验 E 和一系列任务 T 和一定表现的衡量 P ,如果随着经验 E 的积累,针对定义好的任务 T 可以提高其表现 P ,则说明机器有学习能力 S klearn 库 基本使用 包含了所有机器学习算法 ——> 分类 回归 非监督分类 数据降维 数据预处理 1. 构建机器学习模型 A. 逻辑回归 B. 支持向量机 C. 决策树 D. 神经网络 在给定的数据上做解决分类的问题 导入样本数据 代码: from sklearn import datasets wine = datasets.load_wine() print(wine) 补充: y 是样本的标签!每个分类的个数是类似的,所以不会存在不平衡的问题! 通过 numpy 包的 shape() 方法输入 data 和 target 的大小: 代码: import numpy as np print(np.shape(x),np.shape(y)) 其中, (178,13)---- 代表 178*13 的矩阵【意思是 178 个样本,每个样本有 13 个特征(或 13 个特征矩阵)】 (178,) ----- 代表长度是 178 的一个一维向量 把数据分成训练数据和测试数据 ----- 搭建模型后用一种机制评估模型 代码: from sklearn.model_selection import train_test

思维 | 数据驱动决策的10种思维

流过昼夜 提交于 2021-02-15 02:36:01
点击蓝字 关注我们 ▼ 往期精彩回顾 ▼ 科研大牛们怎么读文献 聚类分析 数据分析师需要掌握的商业模型 导语 很多人都说会数据分析的人比别人聪明,实际上他们“聪明”在拥有分析思维,今天我们就来说说常见的数据分析思维。我总结了十种数据分析思维,也许会为你带来“灵光一闪”的感觉。 一、分类思维 日常工作中,客户分群、产品归类、市场分级……许多事情都需要有分类的思维。关键在于,分类后的事物,需要在核心关键指标上能拉开距离!也就是说,分类后的结果必须是显著的。 如图,横轴和纵轴往往是你运营当中关注的核心指标(当然不限于二维),而分类后的对象,你能看到他们的分布不是随机的,而是有显著的集群的倾向。 打个比方,经典的RFM模型依托收费的3个核心指标构建用户分群体系:最近一次消费时间(Recency)、消费频率(Frequency)、消费金额(Monetary)。 在R/M/F三个指标上,我们通过经验将实际的用户划分为以下8个区(如上图),我们需要做的就是促进不同的用户向更有价值的区域转移。也就是将每个付费用户根据消费行为数据,匹配到不同的用户价值群体中,然后根据不同付费用户群体的价值采用不同的策略(如下表) 二、矩阵思维 分类思维的发展之一是 矩阵思维 ,矩阵思维不再局限于用量化指标来进行分类。许多时候,我们没有数据做为支持,只能通过经验做主观的推断时,是可以把某些重要因素组合成矩阵

Adaboost 算法的原理与推导

社会主义新天地 提交于 2021-02-15 00:04:32
Adaboost 算法的原理与推导 0 引言 一直想写Adaboost来着,但迟迟未能动笔。其算法思想虽然简单:听取多人意见,最后综合决策,但一般书上对其算法的流程描述实在是过于晦涩。昨日11月1日下午,在我组织的 机器学习班 第8次课上讲决策树与Adaboost,其中,Adaboost讲得酣畅淋漓,讲完后,我知道,可以写本篇博客了。 无心啰嗦,本文结合机器学习班决策树与Adaboost 的 PPT ,跟邹讲Adaboost指数损失函数推导的 PPT (第85~第98页)、以及李航的《统计学习方法》等参考资料写就,可以定义为一篇课程笔记、读书笔记或学习心得,有何问题或意见,欢迎于本文评论下随时不吝指出,thanks。 1 Adaboost的原理 1.1 Adaboost是什么 AdaBoost,是英文"Adaptive Boosting"(自适应增强)的缩写,由Yoav Freund和Robert Schapire在1995年提出。它的自适应在于:前一个基本分类器分错的样本会得到加强,加权后的全体样本再次被用来训练下一个基本分类器。同时,在每一轮中加入一个新的弱分类器,直到达到某个预定的足够小的错误率或达到预先指定的最大迭代次数。 具体说来,整个Adaboost 迭代算法就3步: 初始化训练数据的权值分布。如果有N个样本,则每一个训练样本最开始时都被赋予相同的权值:1/N。

数据可视化matplotlib、seaborn、pydotplus

橙三吉。 提交于 2021-02-15 00:02:41
如需转发,请注明出处: 小婷儿的python https://www.cnblogs.com/xxtalhr/p/10486560.html 一、数据可视化 data.mat 链接: https://pan.baidu.com/s/1XMi-71QzlzkGppN17AS1bw 提取码:uddg 方法一 import matplotlib.pyplot as plt import seaborn as sns import pandas as pd import scipy.io as sio #导入数据 mat = sio.loadmat( '../data.mat' ) mat.keys() data1 = pd.DataFrame(mat.get( 'X' ), columns=[ 'X1' , 'X2' ]) data1.head() fig, ax = plt.subplots(figsize=( 12 , 8 )) ax.scatter(data1[ 'X1' ],data1[ 'X2' ]) plt.show() 方法二 plt.figure(figsize=(12,8)) plt.scatter(data1[ 'X1' ],data1[ 'X2' ]) plt.show() 方法三 sns.lmplot( 'X1' , 'X2' , data=data1, fit