IBM SPSS Modeler分类决策树C5.0模型分析空气污染物数据|附代码数据

全文链接:http://tecdat.cn/?p=30752

最近我们被客户要求撰写关于决策树的研究报告,包括一些图形和统计输出。

如何通过方法有效的分析海量数据,并从其中找到有利的资讯已经成为一种趋势

而决策树算法是目前在进行数据分析时很常用的方法。本文将使用IBM SPSS Modeler进行实践,介绍决策树在空气污染预测领域的实践案例。

分类预测模型的构建流程,具体步骤如下:

(1)数据处理 :审核数据,过滤掉含有缺失值的数据记录。

(2)划分数据集,训练集70%,测试集30% 。

(3)构建模型时的参数设置 。

(4)构建模型:构建C5.0模型。

(5)结果评估,用测试集数据运行得到的运行结果,对模型采用命中率评估两个模型的预测效果。

加入表节点

读取数据

添加“抽样”节点

随机抽取70%的样本作为训练集

“C5.0”节点

生成的决策树模型,并对测试数据进行预测

得到测试数据的分类结果的准确度

预测分类结果

有88.1%的测试样本的预测值和实际值相符。

并且得到如下的决策树模型:

点击标题查阅往期内容

数据分享|PYTHON用决策树分类预测糖尿病和可视化实例

01

02

03

04

其中变量的重要性如下图所示:

从结果可以看到,首要污染物类型与AQI、NO2还有O3等变量有关。其中AQI对首要污染物类型的结果具有最重要的影响。

C5.0是在C4.5的基础上发展起来的。C5.0 算法是用信息增益(根节点的熵减去该拆分的熵)来度量拆分纯度的。第一次拆分某一字段,划分出相对应的样本子集。然后继续拆分这些样本子集,一般情况下使用的是另一字段进行拆分,一直循环这样一个过程,直到满足拆分终止条件。最后,若生成的树出现过度拟合的状况,则要修剪那些缺乏价值的样本子集。

本文选自《IBM SPSS Modeler分类决策树C5.0模型分析空气污染物数据》。

本文转载于网络 如有侵权请联系删除

相关文章

  • 次世代3A游戏开发将飙至1.5亿美元,游戏时长将更短

    大家好,又见面了,我是你们的朋友全栈君。即将翻过的这个世代,是大作的时代,涌现了一大批的大作,譬如《荒野大镖客2》、《GTA5》、《巫师3》等游戏。当然也是预算高涨、不断跳票和开发商经常加班加点的时代。随着PS5和XSX即将到来,随之一起的将是有史以来细节最丰富和预算更贵的游戏世界,问题就出现了:游戏行业还会继续痴迷于这么庞大世界的游戏吗?在GameBabLive会议上,SIE前总裁ShawnLayden表达了对次世代游戏开发成本倍增的担忧。他认为次世代3A游戏的开发将不可避免地从今天的8000万美元飙升至1.5亿美元。因此Layden预测玩家将在次世代主机上看到更多时长只有12-15个小时的3A游戏,就像是玩家在PS1和PS2时代经常看到的那样。“让每一个冒险游戏都提供50-60小时的游戏体验是非常难的,因为这将需要更多的成本。最后,你可能会把一些有趣的创作者和他们的故事赶出市场,如果这是他们必须要达到的门槛的话。我们必须重新评估。是否还有另外一个答案?不再是花5年时间开发一个80小时的游戏,那花3年时间提供一个15小时的游戏怎么样?这样的话成本是多少?这仍然是一个完整的体验吗?个人

  • MyBatis源码分析之建造者模式运用

    前言这些天在阅读MyBatis的源码,发现MyBatis源码中运用了很多设计模式,例如:模板模式,建造者模式,装饰器模式。其中最常用的就是建造者模式。下面我们就来学习下建造者模式。建造者模式建造者模式结构图及角色建造者模式中的主要角色如下:建造者(Builder)接口:Builder接口用于定义构建产品对象的各部分的行为。具体建造者(ConcreteBuilder)角色:直接创建产品对象的具体建造者。具体建造者类必须实现建造者接口所要求的两类方法:一类是建造方法,如上图中的buildPart1()等方法。另外一类是获取构造好的产品对象的方法,如上图中的getProduct()方法。指挥者(Director)角色:该角色会通过调用具体建造者,创建需要的产品对象产品(Product)角色:一个具体的产品对象建造者模式的优缺点优点将复杂产品的创建步骤分解在不同的方法中。使得创建过程更加清晰,使得我们能更加精确的控制复杂对象的产生过程。将产品的创建过程与产品本身分离开来,可以使用相同的创建过程来得到不同的产品。也就是说细节依赖抽象每一个具体建造者都相对独立,而与其他的具体建造者无关,因此可以

  • NTP/PTP网络时间服务器技术原理设计详解

    NTP/PTP网络时间服务器技术原理设计详解NTP/PTP网络时间服务器技术原理设计详解1、引言  以太网技术由于其开放性好、价格低廉和使用方便等特点,已经广泛应用于电信级别的网络中,以太网的数据传输速度也从早期的10M提高到100M,GE,10GE。40GE,100GE正式产品也于2009年推出。  以太网技术是“即插即用”的,也就是将以太网终端接到IP网络上就可以随时使用其提供的业务。但是,只有“同步的”的IP网络才是一个真正的电信级网络,才能够为IP网络传送各种实时业务与数据业务的多重播放业务提供保障。目前,电信级网络对时间同步要求十分严格,对于一个全国范围的IP网络来说,骨干网络时延一般要求控制在50ms之内,现行的互联网网络时间协议NTP(NetworkTimeProtocol),简单网络时间协议SNTP(SimpleNetworkTimeProtocol)等不能达到所要求的同步精度或收敛速度。基于以太网的时分复用通道仿真技术(TDMoverEthernet)作为一种过渡技术,具有一定的以太网时钟同步概念,可以部分解决现有终端设备用于以太网的无缝连接问题。IEEE1588标准

  • day05(数字类型,字符串类型,列表类

    一,复习:1.顺序结构、分支结构、循环结构 2.if分支结构 if条件: 代码块 elif条件: 代码块 else: 代码块 #可以被if转换为False:0|''|None|[]|{} 3.while循环结构 while条件: 循环体 #1)可以通过改变循环变量,使循环条件不满足 #2)当达到特定条件,直接使用break来强行结束所属循环 break:结束所属循环 continue:结束所属循环的本次循环进入下一次循环 while...else...:当循环正常结束,else分支才会被执行(break结束的循环才叫不正常结束) 4.for循环(迭代器) #for循环:用来循环容器对象的(左右多个值的对象) #range(end)#[0,end) #range(start,end)#[start,end) #range(start,end,step)#[start,end,步长) '''复制二,今日内容:''' 数据类型的使用 #int|complex|float|str|bool|list|d

  • SAS-编程中的小技巧(七)

    最近啊,小编很倒霉,用喝凉水都塞牙来形容一点也不为过...虽然难以启齿,但是花费巨额的代价买的教训,还是想分享给大家。“驾驶有风险,开车需谨慎”即使在停车场再小的剐蹭,也不要走...第一时间报警,走了就有“肇事逃逸”的风险,就变成了“我为鱼肉,人为刀俎”...只能选择私了..认人宰割了....而且啊,私了的钱保险也不给报销的钱都花完了,还是老老实实回家写公众号了...让“删库跑路”变成历史...很多人都发现了用SAS程序语句删除的数据集,在回收站里面找不到...那就这就意味着不能用传统的回收站还原的方式来恢复误删除的SAS数据集...如果数据是没有办法溯源,是否剩下的只有是删库跑路这个选择呢呢...前几天看到有人问到相关问题,觉得还算不错,于是就尝试了如何去恢复用SAS语句删除的数据集...这里要被迫给一个软件打广告因为解决这个问题太好使了而且还不花钱这个软件就是360文件恢复试了几下不管是永久库还是临时库都能恢复...下面是我删除的数据集嗯,如上和回收站还原一样,都是一键式傻瓜操作...自从有了360文件恢复后,在也不用担心删库跑路的事情发生了...当然删除也需谨慎...比较重要的库

  • FATAL ERROR: please install the following Perl mod

    今天在CentOS7上安装MySQL时,遇到如下错误:[mysql@mysql01mysqlc]$scripts/mysql_install_db--no-defaults--datadir=/mysql/my_cluster/mysqld_data/ FATALERROR:pleaseinstallthefollowingPerlmodulesbeforeexecutingscripts/mysql_install_db: Data::Dumper复制要想解决此错误,需要用以下命令安装Perl模块:[root@mysql01~]#yuminstallperl-Data-Dumper.x86_64 ResolvingDependencies -->Runningtransactioncheck --->Packageperl-Data-Dumper.x86_640:2.145-3.el7willbeinstalled -->FinishedDependencyResolution DependenciesResolved =======================

  • iOS苹果内购(详细步骤)

    一.设置付费协议1.进入开发者平台,点击如下图所示:设置2.查看付费同意条款设置付费协议 添加这3个信息 4.添加银行账户 5.选择报税表 默认美国 6.根据报税表填写报税情况,根据自己实际情况,在这里我们需要选择NO,后面选了几个勾,以为可以,后面报错了! 三者必须填写 注意:这里可以随便填写。 7.填写联系人,这几个部分可以填写同一人 二.添加内购项目点击添加 2.选择内购项目类型 根据功能选择 3.设置产品价格及名称 4.显示信息 5.审核信息 注意:这些信息都要填完整,否则会提示元数据丢失。 内购项目 三.创建沙盒技术测试号添加账号三.代码集成在需要购买的控制器内#import<StoreKit/StoreKit.h> @interfaceHomeViewController()<SKProductsRequestDelegate,SKPaymentTransactionObserver> @end -(void)viewDidLoad{ [s

  • Java 之 Array 数组

    Java反射技术除了可以在运行时动态地决定要创建什么类型的对象,访问哪些成员变量,方法,还可以动态地创建各种不同类型,不同维度的数组。 动态创建数组的步骤如下: 1.创建Class对象,通过forName(String)方法指定数组元素的类型 2.调用Array.newInstance(Class,length_of_array)动态创建数组 访问动态数组元素的方法和通常有所不同,它的格式如下所示,注意该方法返回的是一个Object对象 Array.get(arrayObject,index) 为动态数组元素赋值的方法也和通常的不同,它的格式如下所示,注意最后的一个参数必须是Object类型 Array.set(arrayObject,index,object) 动态数组Array不单可以创建一维数组,还可以创建多维数组。步骤如下: 1.定义一个整形数组:例如int[]dims=newint{5,10,15};指定一个三维数组 2.调用Array.newInstance(Class,dims);创建指定维数的数组 访问多维动态数组的方法和访问一维数组的方式没有什么大的不同,只

  • 基于DKHadoop的智慧人社服务平台开发案例简述

    大数据技术的应用与发展正在让我们的生活经历一场深刻的“变革”,而且这种变革几乎让所有人都感觉非常舒服,自然而然的就完成了这样的一个变化。最根本的原因其实是大数据技术的应用真正帮助我们解决了问题。我想也正是基于大数据技术的超强实用性吧,它才会被上升到国家战略层面的高度得以出现在政府工作报告中。大数据技术的应用于,对于建设智慧政务平台的可谓功不可没。智慧政务云平台的建设技术以及方案,可以说是比较成熟了,当然前提是必须与大的、开发团队强的大数据公司或者机构合作(不过,一般做大数据的都是有一定实力的技术团队)。关于政务大数据平台的建设方案以及实施的项目案例,曾经给大家分享过一些。今天想给大家分享一个基于DKhadoop开发的智慧政务服务平台的建设方案。DKhadoop是大快的原生开发的纯国产商业发行版Hadoop,基于这个发行版hadoop开发的这个智慧政务服务平台是为了解决人社大数据的问题,从而实现“智慧人社”。而一旦实现“智慧人社”,那么它所能够带来的联动效益将得以完美发挥。目前人社建设中普遍存在的问题主要可以归纳为以下几点:1、数据采集和治理能力不足:手工数据积累量巨大,且大量数据分散存

  • GitHub 将源代码保存在北极洞穴,至少使用 1000 年!

    最近,GitHub分享了开放ArcticCodeVault的计划,该计划旨在存储和保存Flutter和TensorFlow等开源软件。所有开放源代码项目的代码都将存储在胶片上,该胶片每帧包含880万像素,可以使用1000年。胶片由挪威公司PiqlAS制造,表面有氧化铁粉涂层,Piql称在正常条件下这种材料能保存750年,在寒冷干燥低氧洞穴内能保存2000年。这些代码将保存在挪威斯瓦尔巴特群岛(Svalbard)退役的煤矿中,这也是被选为托管全球种子库的城市。斯瓦尔巴特永久冻土是地球上最北端的城市之一,可以延伸到地表以下数百米。档案管理员认为,寒冷和接近恒定的条件可以帮助保存。今年年初开始,数千个流行的GitHub项目(例如Blockchain,WordPress)和编程语言(如Rust或Ruby)加入了ArcticCodeVault计划,但ArcticCodeVault将于明年2月扩展到所有公共存储库。根据2019年Octoverse报告,GitHub有超过4000万开发人员使用,目前托管超过1亿个存储库。GitHubCEONatFriedman在解释为什么创建ArcticCodeVa

  • emacs小技巧(持更

    1. 调整字体大小快捷键 放大:Ctrl-xCtrl-+或Ctrl-xCtrl-=缩小:Ctrl-xCtrl--重置:Ctrl-xCtrl-0

  • 解决nginx+vue--502的问题

    当前的nginx配置如下: server{ listen80; server_namelocalhost; location/{ root/usr/share/nginx/html; indexindex.htmlindex.htm; } location@router{ rewrite^(.+)$/index.htmllast; } }复制 遇到的问题是,当访问http://localhost:80的时候是可以的,但访问除此之外的其他路由时遇到了502的问题 解决方案:+ try_files server{ listen80; server_namelocalhost; location/{ root/usr/share/nginx/html; indexindex.htmlindex.htm; try_files$uri$uri/@router; } location@router{ rewrite^(.+)$/index.htmllast; } }复制 即可   python中文名:蟒蛇,设计者:GuidovanRossum

  • Unity应用架构设计(4)——设计可复用的SubView和SubViewModel(Part 2)

    在我们设计和开发应用程序时,经常要用到控件。比如开发一个客户端WinForm应用程序时,微软就为我们提供了若干控件,这些控件为我们提供了可被定制的属性和事件。属性可以更改它的外观,比如背景色,标题等,而事件可以丰富控件的行为,比如最常见的『按钮点击』,谁也不能确定点击之后将发生什么事,是连接数据库呢还是弹出警告框,在不同的场景下,『按钮点击』的行为往往呈现不一致。所以,与其举棋不定,还不如把处理委托给开发者,这就是『OnClick』事件。 SubView行为多变性 在上篇文章中,我阐述了为什么要使用SubView,总结起来就3个字:『可复用』。那么问题来了,既然是可复用,那就意味着SubView可以在任何场景下使用,那怎样才能确保它做的是正确的行为呢? 举个栗子,还是以如下图FaceBox为例,不同的场景下点击头像应该处理不同的事: 在战团中点击头像,则显示该成员的具体信息 在队伍里点击头像,则进入换人界面 在战斗时点击头像,则显示它配置的战术 你看,同样一个SubView,在不同的场景下它的行为往往是不一致的。那我们怎么去跟踪这些行为呢? 定制SubView的行为 你可能会

  • [bzoj3566][SHOI2014]概率充电器【树形dp】

    【题目链接】   https://www.lydsy.com/JudgeOnline/problem.php?id=3566 【题解】   套路题O(n)O(n)求出一个的解,然后O(1)O(1)换根。   *注意除0的问题。 /*-------------- userVanisher problembzoj-3566 ----------------*/ #include<bits/stdc++.h> #definelllonglong #defineinf0x3f3f3f3f #defineN500010 usingnamespacestd; intread(){ inttmp=0,fh=1;charch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')fh=-1;ch=getchar();} while(ch>='0'&&ch<='9'){tmp=tmp*10+ch-'0';ch=getchar();} returntmp*fh; } structnode{ intdata,next;

  • 面向对象设计的原则

    SRP单一职责原则 就一个类而言,应该仅有一个引起它变化的原因。 OCP开放封闭原则 软件实体(类、模块、函数等)应该是可以扩展的,但是不可以修改。 LSPLiskov替换原则 子类型必须能够替换他们的基本类型。 DIP依赖倒置原则 抽象不应该依赖于细节。细节应该依赖于抽象。 ISP接口隔离原则 不应该强迫客户依赖于他们不用的方法。接口属于客户,不属于他所在的类层次结构。 REP重用发布等价原则 重用的粒度就是发布的粒度。 CCP共用重用原则 一个包中的所有类应该是共同重用的。如果重用了包中的一个类,那么就要重用包中的所有类。相互之间没有紧密联系的类不应该在同一个包中。 CRP共同封闭原则 一个包中的所有类对于同一类性质的变化应该是共同封闭的。一个变化若对一个包影响,则将对包中的所有类产生影响,而对其他包不造成任何影响。 ADP无依赖原则 在包的依赖关系中不允许存在环。细节不应该被依赖。 SDP稳定依赖原则 朝着稳定的方向进行依赖。 SAP稳定抽象原则 一个包的抽象程度应该和其他稳定程度一致。

  • Team Leader炖完石头汤后干嘛

    在万众创业的互联网年代,挖人组建全明星团队过于奢侈。面对水平参差不齐的团队咋办? 命运真是捉弄,半年前在大美团打工时准备做个[NABC的教学项目]饭团,结果自己就被挖到“Competitors竞争”那去了。忙到现在总算是稍微闲点了。期间各种坑后面慢慢吐槽,欢迎关注。今儿先说说团队管理那些事儿~ 团队现状 我饭,四老板。大老板管产品,不懂技术。我负责技术。另外两老板分管运营和市场。陆续招了一个UI和五个90后,分做android,iOS*2,后端,web前端。 因为不知道招来的小伙子和小菇凉们水平如何,所以前期基本放养。(也因为自己买房定婚的事去了。。。) 现在iOS已经等待审核两周。android却还在解决性能问题。后端和web前端更是在补全iOS审核需要的功能:登录和举报。这两个月,我们遭遇了一大波问题 那些问题们 老板处女座,需求经常变,造成技术代码经常变。 技术对需求理解有偏差,造成无用工作。 各路大佬不时来“关照”下,技术手头工作常被打断,影响思绪。 UI还没出图,没法开工。 不知道自己要干嘛,先做哪个。 “领导们”不知道项目做什么样了,要多久能做完。 纯堆代码,技能没成

  • js动态改变样式属性(style属性)

    <!DOCTYPEhtml> <html> <headlang="en"> <metacharset="UTF-8"> <title>Style</title> <!-- 之前接触的行内样式style是css设置样式 现在我们使用的是js中的设置样式! --> <styletype="text/css"> #myDiv{ height:50px; width:50px; } </style> </head> <body> <divid="myDiv"style="border:1pxsolidred"></div> <buttontype="button"onclick="changeBackground();">换背景色</button> <buttontype="button"onclick="changeMargin();">换外边距</button> <s

  • 2017-2018-2 20155225《网络对抗技术》实验四 恶意代码分析

    2017-2018-220155225《网络对抗技术》实验四恶意代码分析 系统运行监控 使用计划任务 先在网上找了篇博客学习一下如何使用schtasks命令。 Schtasks命令详解 我们需要用到的参数如下: schtasks/create/tnTaskName/trTaskRun/scMINUTE[/mo{1-365}] /tnTaskName 指定任务的名称。 /trTaskRun 指定任务运行的程序或命令。 /scschedule 指定计划类型,有效值MINUTE表示指定计划的单位时间为分钟。 /momodifier 指定任务在其计划类型内的运行频率,默认值为1。 复制 为了记录日期和时间,需要用到bat批处理文件 又学习了一下如何写批处理文件dos命名大全.bat文件的写法 批处理文件是一个文本文件,这个文件的每一行都是一条DOS命令 >、>>二者都是输出重定向命。 >命令在清除掉原有文件中的内容后才把新的内容写入原文件 >>命令会另起一行把新的内容追加到原文件中。 time,显示和设置DOS的系统时间。[格式]time[h

  • multipart/form-data接口模拟不同用户上传不同文件Jmeter脚本

    1.首先准备要上传的文件,路径和文件名复制下来; 2.配置csv文件,如下图    3.配置Jmeter脚本   1)添加csv数据文件设置          2)添加信息头管理器,multipart接口不需要contenttype;(如有要测的接口有其它重要信息头,自行添加,示例接口只需认证就行)         3)添加http请求         4)线程数设置为csv文件里的用户数          5)添加查看结果树运行查看结果       4.保存脚本

  • 洛谷P3763 - [TJOI2017]DNA

    Portal Description 给出字符串\(s,s_0(|s|,|s_0|\leq10^5)\),求有多少个\(s_0\)的连续子串修改小于等于三个字母能够变成\(s\)。共有\(T(T\leq10)\)组测试数据。 Solution 后缀数组。 易知\(s_0\)有\(|s_0|-|s|+1\)个长度为\(|s|\)的子串,我们依次检查这些子串是否合法。 检查从位置\(i\)开始的子串是否合法时,设已经匹配了\(j\)位,那么求出\(s_0\)的\(i+j\)位与\(s\)的\(j+1\)位的最长公共前缀\(len\),说明他们匹配\(len\)位后失配。那么用掉一次修改机会跳过这一位,即\(j=j+len\),继续进行匹配。如果三次机会都用掉了依然有\(j<|s|\),说明不合法,否则合法。求LCP可以将\(s_0\)与\(s\)拼起来再求后缀数组来\(O(1)\)得到。 时间复杂度\(O(T\cdot|s|log|s|)\)。 Code //[TJOI2017]DNA #include<algorithm> #include<cstdio>

  • 10270 : 青蛙的游戏

    问题描述 青蛙王国的年度游戏再次开始。最著名的比赛是铁蛙铁人三项。铁蛙铁人三项的一项跳跃比赛。这个项目需要青蛙运动员跳过河。河的宽度是L(1<=L<=1000000000)。有n(0<=n<=100000)个石块排成一条直线。青蛙过河只能借助于石头。如果他们掉进河里,他们就出局。现在要求青蛙最多跳m(1<=m<=n+1)次。现在青蛙想知道要跳过河,他们至少有什么能力。(即至少具有跳多远的能力)。 输入格式 第一行包含三个正整数L,n和m。 然后接下来n行。每个代表从开始岸边到第n块石头的距离,两块石头出现在一个地方是不可能的。 输出格式 输出一个整数,代表青蛙至少应该有的能力。 样例输入 2533 11 2 18 样例输出 11 题 本题用2分法 #include<bits/stdc++.h> usingnamespacestd; inta[500001],L,n,m,ll,rr,mid,ans; intcheck(intk) { if(k*m<L)return1; intcnt=0,i=1,j=0; whi

相关推荐

推荐阅读