R语言

R语言简单实现决策树算法

放肆的年华 提交于 2020-11-23 22:48:19
常用的分支准则方法有三种:信息增益、信息增益率、基尼系数。其实,这里问题就来了,决策树是可以不加限制的生长到有可能到很深的吗?当然是不行的,这就是这一节需要介绍的主要内容之一决策树的修剪,当然还会对决策树算法规律稍微总结一下,并用几个小例子说明R语言的具体实现。 01 决策树的修剪 单单根据决策树算法完成树的建立后,各个叶节点代表不同的种类,部分叶节点可能只包含少数样本,有可能还是一些异常数据,没有足够的支持度,增加了树的深度,过度适配也会导致分类错误率的增加。这就需要修剪决策树,原理是:从树的底部开始,检查每个节点和该节点的子决策树,看是否能将该子决策树去掉而该节点就自然成为了叶节点代替原来的子决策树,生成一个分类错误率更低、树的深度更低的决策树。 决策树的修剪分为 事前修剪 事后修剪 顾名思义,事前修剪就是在决策树的生长过程中,比如叶节点中数据数要大于3或者信息增益值要大于一个事先设定的阈值;否则,就停止分支。事后修剪就是在树的生长完成后进行修剪,引入测试组样本来验证决策树对于新输入数据的分类与预测结果。事后修剪法较前者效率略微低下,但可避免产生稀疏叶节点,对噪声的忍耐程度也更强。这里我们主要介绍事后修剪法。 事后修剪法考虑成本复杂度,我们以R(t)代表t为起始节点的决策树分类错误率。给定一个复杂系数a可以理解为代表决策树节点个数的影响,因为我们定义他们是正比例关系的

决策树(R语言)

余生颓废 提交于 2020-11-23 22:48:05
决策树是有监督学习算法中的一种。基于属性做一系列的决策,每次决策要么进入下一级决策,要么生成最终结果。决策树可以作为集成算法中的基分类器,并且有最为广泛的应用。 决策树算法 要想理解决策树的工作原理,首先需要了解决策树的层次结构。决策树由结点与有向边组成,其中,结点分为如下三种: 根结点 :无入边,但有零条或多条出边 内部结点 :有一条入边和多条出边 叶节点 :有一条入边,无出边 每个叶节点都有一个类标号,根节点和内部结点包含属性测试条件,每个根节点和内部结点都对应一次条件判断,用来分开有不同特性的记录。对一条记录进行判断时,从根结点开始,根据判断进入相应分支,只到叶节点,叶节点的类别即为分类结果。比如,根据历史贷款记录预测贷款申请者是否会逾期,是否有房和婚姻状况作为属性,是否逾期作为类标号。历史数据如下: 序号 有房 婚姻状况 是否逾期 1 是 单身 否 2 否 已婚 否 3 否 单身 是 4 是 已婚 否 5 否 离异 是 6 否 已婚 否 7 是 离异 否 8 否 单身 是 9 否 已婚 否 根据历史贷款记录,可构造如下决策树: 当决策树构造好后,对未标记的记录进行分类就非常容易了。如使用以及构造好的决策树,对如下序号8这个人进行预测,可以知道,最终停在了未逾期这个节点。 序号 有房 婚姻状况 是否逾期 8 是 离异 ? Hunt算法 是常用的用来建立决策树的算法

决策树ID3原理及R语言python代码实现(西瓜书)

旧街凉风 提交于 2020-11-23 21:45:29
决策树ID3原理及R语言python代码实现(西瓜书) 摘要: 决策树是机器学习中一种非常常见的分类与回归方法,可以认为是if-else结构的规则。分类决策树是由节点和有向边组成的树形结构,节点表示特征或者属性, 而边表示的是属性值,边指向的叶节点为对应的分类。在对样本的分类过程中,由顶向下,根据特征或属性值选择分支,递归遍历直到叶节点,将实例分到叶节点对应的类别中。 决策树的学习过程就是构造出一个能正取分类(或者误差最小)训练数据集的且有较好泛化能力的树,核心是如何选择特征或属性作为节点, 通常的算法是利用启发式的算法如ID3,C4.5,CART等递归的选择最优特征。选择一个最优特征,然后按照此特征将数据集分割成多个子集,子集再选择最优特征, 直到所有训练数据都被正取分类,这就构造出了决策树。决策树有如下特点: 原理简单, 计算高效;使用基于信息熵相关的理论划分最优特征,原理清晰,计算效率高。 解释性强;决策树的属性结构以及if-else的判断逻辑,非常符合人的决策思维,使用训练数据集构造出一个决策树后,可视化决策树, 可以非常直观的理解决策树的判断逻辑,可读性强。 效果好,应用广泛;其拟合效果一般很好,分类速度快,但也容易过拟合,决策树拥有非常广泛的应用。 本文主要介绍基于ID3的算法构造决策树。 决策树原理 训练数据集有多个特征,如何递归选择最优特征呢

python推荐书籍

回眸只為那壹抹淺笑 提交于 2020-11-23 07:40:18
推荐的python电子书 python学习路线图 优先级 入门:python核心编程 提高:python cookbook 其他 (1).数据分析师 需要有深厚的数理统计基础,但是对程序开发能力不做要求。 需要熟练使用主流的数据挖掘(或统计分析)工具如 Business Analytics and Business Intelligence Software (SAS)、 SPSS 、EXCEL等。 需要对与所在行业有关的一切核心数据有深入的理解,以及一定的数据敏感性培养。 经典图书推荐:《概率论与数理统计》、《统计学》推荐David Freedman版、《业务建模与数据挖掘》、《数据挖掘导论》、《SAS编程与数据挖掘商业案例》、《Clementine数据挖掘方法及应用 》、《Excel 2007 VBA参考大全》、《IBM SPSS Statistics 19 Statistical Procedures Companion》等。 (2).数据挖掘工程师 需要理解主流机器学习算法的原理和应用。 需要熟悉至少一门编程语言如(Python、C、C++、Java、Delphi等)。 需要理解数据库原理,能够熟练操作至少一种数据库(Mysql、SQL、DB2、Oracle等),能够明白MapReduce的原理操作以及熟练使用Hadoop系列工具更好。 经典图书推荐:《数据挖掘概念与技术》

Coding and Paper Letter(二十)

烂漫一生 提交于 2020-11-22 08:38:55
资源整理。 1 Coding: 1.R语言包tibbletime,处理时间数据的包。 tibbletime 2.R语言包gravity,重力模型,可以用于分析交互作用等,其实应该是模仿物理学引力模型的拓展,在经济地理中也有介绍过。 gravity 3.开源项目earth analytics fall 2018,地球分析2018秋季课程作业模板。 earth analytics fall 2018 4.开源项目GeolocatorAnalyses,地理定位数据分析,基于R语言的项目。 GeolocatorAnalyses 5.Python开源项目PyRADS,PyRADS是用于行星大气的Python逐行辐射模型。 PyRADS 6.开源项目Eco variation,论文"Spatial and temporal variation of ecosystem properties at macroscales"的数据处理脚本和代码(R)。 Eco variation 7.Python开源项目nativepython,一个基于llvm的框架,用于从Python生成和调用高性能本机代码。 nativepython 8.R语言包RGDALDB,在sf中为GDAL的ExecuteSQL提供DBI。 RGDALDB 9.DMLC开源项目xbgoost,机器学习大杀器,提供了多个语言的接口。

R语言练习代码

萝らか妹 提交于 2020-11-18 17:46:43
x <- c(1:10) x <- c(v1 = 1:4,v2 = 10:14) install.packages() install.packages("xlsx") install.packages("rJava") install.packages("xlsxjars") install.packages("vcd") .libPaths() install.packages(c("AER","ca")) library() library(xlsx) library(rJava) print() require(vcd) require(xlsx) installed.packages() installed.packages()[,1] Rpack <- installed.packages()[,1] save(Rpack,file = "Rpack.Rdata") for (i in Rpack) install.packages(i) help.xlsx() help.start() x <- read.csv("碧彩测试数据1.07",header = TRUE) y <- readClipboard() read.table("clipboard",sep = ",",header = TRUE) read.table("clipboard",sep = "\t

【R语言学习笔记】4. 文本挖掘之情感分析

故事扮演 提交于 2020-11-10 06:28:42
1. 目的:通过分析和挖掘推特上的推文,来尽可能准确的判断其对苹果公司的态度(积极、消极、或者为其他)。 2. 数据来源: Twitter API;构建因变量方法:Amazon Mechanical Turk;自变量为推文内容。 Amazon Mechanical Turk: 亚马逊Mechanical Turk是一个众包市场,使个人或企业能够使用人工智能来执行计算机当前无法执行的任务。作为全球最大的众包市场之一,Mechanical Turk提供按需、可扩展的员工队伍,将创业公司、企业、研究人员、艺术家、知名科技公司和政府机构与个人联系起来,以解决计算机视觉、机器学习、自然语言处理等方面的问题。 tweets <- read.csv("tweets.csv", stringsAsFactors=FALSE) View(tweets)    str(tweets) # 查看数据结构    创建因变量 tweets$Negative = as.factor(tweets$Avg <= -1) table(tweets$Negative) 3. 数据预处理:词袋模型(bag of words) 创建语料库 corpus <- VCorpus(VectorSource(tweets$Tweet)) # VCorpus() creates volatile corpora. #

用python或R往数据库上传数据

≯℡__Kan透↙ 提交于 2020-11-07 09:43:39
如何使用python或R往数据库上传数据 多数情况下,我们是用python或R从数据库里面提取数据,但有的时候为了工作方便,我们会需要建一个临时表。 一、用python在数据库建立临时表并上传数据 本文以postgresql为例 代码如下(示例): import string import psycopg2 import random conn = psycopg2 . connect ( database = "dbname" , user = "user" , password = "your_password" , host = "your_host" , port = "your_port" ) cur = conn . cursor ( ) cur . execute ( '' 'drop table if exists table_test_kk' '' ) conn . commit ( ) cur . execute ( '' 'create table table_test_kk(uid integer,life_group integer,money_group integer)' '' ) conn . commit ( ) # 上传数据 uid是我想上传上去的一个dataframe,他有 3 列 for i in range ( uid . shape [

机器学习背后的数学原理--学习笔记3

心不动则不痛 提交于 2020-11-04 01:27:23
统计学习原理思路总结: 机器学习的实质:估计未知函数在给定点的值的问题。一般有两种学习理论,一是归纳学习,或归纳推理;一是转导推理(Vapnik命名的); 其中,归纳学习是由个别或特殊的知识概括出一般性的结论,其思维过程是由个别到一般,由证据来推导结论,它并不能保证结论的正确性。归纳学习的哲学本源是问如何由真实的前提完全相信归纳的结论。即使前提正确,也不能由此证明归纳结论的真实性。统计学习为某些归纳方法提供部分演绎的数学证明。 参考文献: 1、《统计学习理论基础》 Sanjeev Kulkarni 2、《非参数估计与R语言 》 柳向东 3、《统计学习理论》 Vladimir.N.Vapnik 张学工(译) 来源: oschina 链接: https://my.oschina.net/u/3889482/blog/4701558

送书~R数据科学~纸质书

China☆狼群 提交于 2020-11-03 23:56:41
今天的头条发文是一条 恰饭内容 ,非常感谢各位对 小明的数据分析笔记本 的关注。为了回馈各位,以后每接一次 恰饭内容 ,都会送出一些小礼物。礼物的数量视恰饭收入的多少来定。 今天送出的是R语言学习参考书 《R数据科学》 ,前段时间当当有优惠我在当当上买的。一次性买了两本。一本我自己看,一本送出。准备送出的这本还没有拆封,全新的。里面的内容还是彩印的。原价 139元 。我买了两本,花了 191.80块 。平均 95块9 一本。 image.png 刚刚打开当当查看订单的时候发现 现在定价是 125.3块,还有满100减50的活动。那现在买就相当于才 75.3块。感觉里外里亏了好多。 这本 **《R数据科学》**是英文版 R for Data Science的中译本。英文版2017年出版。中文版2018年出版,还挺新的。书面上的推荐语是 摒弃其他R语言工具书从头到尾讲统计的陋习,从实用R包出发,带你重新认识R和数据科学 image.png 目录 第一部分 探索 第1 章 使用ggplot2进行数据可视化 3 第2 章 工作流:基础 29 第3 章 使用dplyr进行数据转换 33 第4 章 工作流:脚本 60 第5 章 探索性数据分析 63 第6 章 工作流:项目 86 第二部分 数据处理 第7 章 使用tibble实现简单数据框 93 第8 章 使用readr进行数据导入 98 第9