简介:这份 WEKA 操作入门文档面向数据挖掘与机器学习初学者,帮助读者快速认识这一开放的数据挖掘工作平台,理解其在数据预处理、分类、回归、聚类、关联规则和可视化等任务中的基本用法。压缩包共 1 个 doc 文件,约 172KB,篇幅精炼,适合作为入门阅读与术语速查材料。内容围绕 WEKA 的数据组织方式展开,讲解实例、属性、关系等核心术语,并说明 ARFF 文件的头信息、@relation 与 @attribute 声明、@data 数据区结构,同时涉及从 CSV 等常见格式准备数据的思路。文档还简要介绍 WEKA 的开放接口、算法集成方式、ARFF 类文件转换中的注意事项与发展背景,便于读者建立从数据格式到功能模块、再到实际操作入口的完整认知。目前已有 792 人学习,适合希望低成本掌握 WEKA 基本概念、数据准备方法和操作入口的读者。
1. 先破除一个误会:你搜的「weak 操作入门」多半是 WEKA
十个人里有八个第一次都拼错,在搜索框里敲下「weak 操作入门 数据挖掘」,然后一脸茫然地发现结果全指向另一个词——WEKA。它的名字读起来像一个单词,其实是几个英文单词首字母拼出来的缩写,恰好又是一种鸟的名字,所以软件图标是一只蹦跶的小鸟。你可以把它想成一个「数据挖掘的中央厨房」:菜(数据)你自己带,锅碗瓢盆和调料它全给你备好了,分类、回归、聚类、关联规则、还有画图看结果,点几下就能出一盘菜,不用先从磨刀学起写代码。它最初出自高校的研究项目,后来开放给非商业的研究和教学使用,界面是开放的,也能把自己的算法塞进去。它最适合三类人:统计课上要交作业但不会编程的学生、手里有一份表格想快速验证个想法的新人、以及刚接触数据挖掘、想先看清「整个流程长什么样」的零基础选手。下面按「它是什么 → 为什么值得学 → 第一个例子怎么跑」的顺序,带你从零走一遍。
2. 为什么零基础也值得学 WEKA:它替你省掉的是「搭环境写代码」这段路
新手最容易死在起跑线上,而不是死在算法上。想用代码做一次数据挖掘,你得先装解释器、装几个库、搞清版本兼容、再写几十行读文件、分列、训练的代码,中途任何一个报错都够劝退半天。WEKA 把这条路上最磨人的一段直接砍掉了:它自带一整套算法和一个图形界面,你只要把数据整理成它认识的格式,剩下的点按钮就行。这不是说它比写代码强,而是说它把「第一次跑通」的门槛压到了很低,让你先看见结果,再回头理解原理,顺序反过来了,反而学得下去。
2.1 一次数据挖掘到底要做哪几步
先把流程说清楚,你才知道 WEKA 的按钮对应的是哪一步。一次完整的数据挖掘,通常是这么几段:先想清楚要回答什么问题,比如「哪些客户更可能购买某个产品」;然后准备数据,把散在表格、数据库里的字段凑到一张表上;接着是预处理,删掉没用的列、处理缺失值、把数值切成区间、把文本转成类别;再往后是建模,选一个算法让机器从数据里找规律;最后是评估,看这个规律靠不靠谱,以及解释结果。
现实里最耗时间的不是建模,是中间那两步预处理,很多人八成精力都花在洗数据上。WEKA 的设计恰好把这段做成了可视化的:左边列出所有属性,勾一下就能删,选个过滤器就能批量转换,改完立刻能在右边的摘要和直方图里看到变化。对零基础的人来说,这种「改一下、马上看到」的反馈特别重要,因为它把抽象的数据变换变成了看得见的动作,你不用先在脑子里模拟一遍代码跑出来会怎样。
2.2 和写代码调库相比,WEKA 的位置在哪
有人会问,现在都用代码调库了,学这个图形工具还有意义吗。我的看法是,它俩解决的不是同一个问题。写代码调库的优势是灵活,任何自定义的变换、任何新算法、任何工程化部署,都能做,代价是你得先有编程基础,而且每换一个任务都要重写一遍流程。WEKA 的优势是「流程固定、界面固定、算法齐全」,你把数据丢进去,同一个预处理流程可以立刻换三四个算法对比结果,这在教学演示和快速验证阶段非常省事。
更实际的一点是,它帮你建立的是「流程感」而不是「语法感」。你在界面上亲手做过一遍:删列、离散化、选算法、看混淆矩阵,这套动作在脑子里是有画面的。等以后转去写代码,你会知道自己每一步在干什么、该期待什么样的输出,而不是对着教程抄一遍、跑通了也不知道为什么。我带过的新人里,先玩两周图形界面再学代码的,普遍比一上来就啃代码的更少迷路。
2.3 装完第一次打开:先认三个入口
WEKA 是 Java 写的,所以入门第一件事是确认机器上有 Java 运行环境,没有的话先装上,这一步做完再谈别的。启动之后会出来一个主界面,下方一排按钮通往不同的模块,新手只需要先认识三个。
第一个是 Explorer,中文可以理解成「探索器」,它是使用频率最高的模块,预处理、分类、聚类、关联规则、可视化几乎都在这一个窗口里完成,前面说的八个区域就是它的界面划分。第二个是 Simple CLI,一个纯命令行的窗口,只能在下方的输入框里打字,上面那块是只读的输出区,它的用处是执行那些界面上不好点的命令,比如批量格式转换。第三个是 Arff Viewer,专门用来看 ARFF 文件长什么样,可以打开一个 CSV 浏览之后再另存成 ARFF。
提示:刚开始别贪多,把 Explorer 用熟就够你走完一整个入门流程了,另外两个等到需要转格式的时候再回来看。
3. 先搞懂数据长什么样:ARFF 文件其实只有两大块
很多人卡在这一步,不是因为难,是因为一打开文件看见一堆 @ 符号就发怵。其实你可以把它当成一张 Excel 表格加了几行说明。WEKA 处理的数据集就是一张二维表,横着一行是一条记录,竖着一列是一个字段,跟你平时用的表格没有本质区别,只是它要求你用文本的方式把「这张表有几列、每列叫什么、每列是什么类型」提前写清楚。写清楚了,软件才知道该怎么读;写不清楚,后面全是报错。
3.1 把数据集看成一张 Excel 表:实例、属性、关系
WEKA 有三个术语,听起来唬人,翻译过来特别朴素。一个横行叫一个实例(Instance),就是统计学里的一个样本、数据库里的一条记录,比如一个客户的资料。一个竖行叫一个属性(Attribute),就是统计学里的一个变量、数据库里的一个字段,比如年龄、收入。整张表在 WEKA 眼里呈现的是属性之间的一种关系(Relation),所以这张表本身有个名字,叫关系名。
拿一份天气数据举例,14 行记录、5 列字段,关系名就叫 weather。这 14 行就是 14 个实例,5 列就是 5 个属性,其中前 4 列描述天气状况,最后一列记录「这天有没有出去玩」。你完全可以把它想成一张普通的表:行是样本,列是特征,最后一列是你想预测的答案。把这个画面记住,后面看到任何术语都能对上号。
3.2 拆开一个 ARFF 文件:头信息 + 数据信息
WEKA 存数据的格式叫 ARFF,全称是 Attribute-Relation File Format,本质是一个纯 ASCII 文本文件,用记事本就能打开。以 % 开头的行是注释,软件会直接忽略。去掉注释之后,整个文件只剩两部分:头信息负责声明关系名和每个属性,数据信息就是一行行的具体数值。分界线是 @data 这个标记,它下面开始全是数据。
% 以百分号开头的行是注释,WEKA 读取时会跳过 @relation weather @attribute outlook {sunny, overcast, rainy} @attribute temperature real @attribute humidity real @attribute windy {TRUE, FALSE} @attribute play {yes, no} @data sunny,85,85,FALSE,no sunny,80,90,TRUE,no overcast,83,86,FALSE,yes rainy,70,96,FALSE,yes rainy,68,80,FALSE,yes rainy,65,70,TRUE,no overcast,64,65,TRUE,yes sunny,72,95,FALSE,no sunny,69,70,FALSE,yes rainy,75,80,FALSE,yes sunny,75,70,TRUE,yes overcast,72,90,TRUE,yes overcast,81,75,FALSE,yes rainy,71,91,TRUE,no这段文件分成三段看就清楚了。第一行 @relation weather 是关系声明,给整张表起个名字,名字里如果带空格,必须用英文单引号或双引号括起来。中间五行 @attribute 是属性声明,一行管一列,写清这一列叫什么、是什么类型。@data 之后是数据区,每行一条记录,字段之间用英文逗号隔开,顺序必须和上面声明的顺序一模一样。
这里有个特别容易被忽略的点:属性声明的顺序决定了数据列的位置。humidity 是第三个被声明的属性,那数据区里每行被逗号分开的第三个数(85、90、86、96 这些)就是 humidity 的值。你如果把两条 @attribute 调换位置却没动数据,整张表就错位了,而且软件不会报错,只会安安静静地给你一个错的结果,这种坑最难查。
3.3 四种数据类型,够用就行
WEKA 支持的数据类型有四种,入门阶段你只要记住它们的写法和适用场景,不用深究实现。
| 类型 | 写法示例 | 说明 | 常见用途 |
|---|---|---|---|
| 数值型 | @attribute age real | 连续的数值 | 年龄、收入、温度 |
| 分类型 | @attribute size {S,M,L} | 有限个取值,用大括号列出 | 性别、地区、是否购买 |
| 字符串型 | @attribute name string | 任意文本 | 备注、名称,一般不参与建模 |
| 日期时间型 | @attribute day date yyyy-MM-dd | 需要指定解析格式 | 时间序列类任务 |
数值型和分类型是绝对主力,你把这两类用明白,八成的入门任务都能做。分类型的花括号里必须把所有可能出现的取值穷举出来,数据区里出现了花括号外的值,读取就会失败,这一点后面避坑那章还会提。字符串型适合放一些不参与计算的说明性字段,真拿它当特征,很多算法是不认的。
日期时间型稍微特殊一点,统一用 date 表示,后面可以跟一个格式串来规定怎么解析和显示,不写的话默认用国际标准的日期时间组合格式,形如 2024-05-01T09:30:00,注意中间那个大写 T 不能少、不能换成空格。数据区里的日期字符串必须严格符合声明的格式,差一个字符都可能读不进去。
3.4 为什么最后一列那么关键
新手最容易忽略的规则是:最后一个被声明的属性会被当作 class 属性,也就是分类或回归任务里默认的目标变量。换句话说,你想让机器预测哪一列,就得把那一列放在最后。上面那份天气数据里,play 是最后一个声明的,所以它自动成为要预测的目标,前面的天气状况是依据。
这条规则解释了为什么很多人第一次点分类,结果发现软件要预测的东西完全不是自己想的那个。不是你操作错了,是列的顺序不对。我的建议是,整理数据的时候就养成习惯:特征放前面,答案放最后,中间不要插 ID 这类没用的列,能省掉后面一堆麻烦。
4. 第一个能跑通的例子:从一份 CSV 到一次预处理
理论说到这里就够了,接下来动手。这一章的目标很具体:把一份普通的 CSV 表格变成 WEKA 认识的 ARFF,然后在界面里完成两个最常见的预处理动作——删掉一列没用的 ID,把两列数值改成区间。做完这两步,你就算真正入门了,因为后面所有的分类、聚类,都是在这个基础上继续点下去。
4.1 导出 CSV 时的三个细节
你手上的数据多半不是 ARFF,可能是 Excel 表,也可能是别的软件算出来的矩阵。WEKA 直接支持 CSV,而这种格式几乎所有表格软件都能导出,所以转换的第一步是先把数据存成 CSV。Excel 里操作很简单:打开文件,切到需要的那张工作表,另存为 CSV 类型,中途弹出「只保存当前工作表」之类的提示,点确定、点是,忽略掉就行。要注意 Excel 一个文件可以有多张工作表,而 CSV 只能装一张表,所以每张表都得单独存一个文件。
从计算软件导出的矩阵要格外小心,很多导出的 CSV 是不带表头的,只有数据没有列名。而 WEKA 读 CSV 时会把第一行当作属性名,你给它一份没有表头的文件,它就会把第一行的数值当成列名,后面整张表全乱。遇到这种情况,用文本编辑器打开文件,手工在最上面补一行属性名,名字之间同样用逗号隔开,属性名的个数必须和数据列数一致,多一个少一个都会错位。
第三个细节是编码和分隔符。文件里有中文的时候,确认存的是通用编码,别存成某些软件私有的格式;分隔符必须是英文逗号,中文逗号、分号、制表符都会让软件认不出列。这些看起来是小事,但新手翻车十次里有三次是这类问题。
4.2 把 CSV 转成 ARFF:命令行和界面两条路
转换有两条路,命令行最快,界面最直观,建议两条都试一遍加深印象。命令行那条,启动主程序后点进 Simple CLI 模块,在新窗口最下方的输入框里敲命令,上面那块区域是只读的,只能看输出不能写字。
# CSVLoader 是 WEKA 自带的读取器,负责把 CSV 解析成数据集 # 大于号把解析结果输出到后面的文件里,不会覆盖原始 CSV java weka.core.converters.CSVLoader bank-data.csv > bank-data.arff这条命令拆开看就三块:java 是运行环境,中间那串是 WEKA 里负责读 CSV 的类,最后是用重定向把结果写进一个新文件。执行完你在当前目录下就能找到 bank-data.arff,用记事本打开看看,会发现软件已经自动帮你写好了 @relation、@attribute 和 @data 三段,属性类型也替你猜好了。猜得准不准另说,但至少格式是对的。
界面那条路更适合新手理解发生了什么:进 Explorer 模块,用上方的打开按钮选一个 CSV 文件,浏览一遍确认数据没读错,然后直接另存为 ARFF。Arff Viewer 模块也能干同样的事,打开 CSV 看一眼再另存。两条路的区别在于,命令行适合一次转一批文件,界面适合边看边确认。
注意:转换完之后别急着往下做,一定用文本编辑器打开生成的 ARFF 扫一眼,重点看属性数量和列名对不对,这一步能拦住后面八成的莫名其妙的问题。
4.3 Explorer 的八个区域,先认四个
打开 Explorer,界面元素看着多,其实按功能切成八块,新手先认其中四块就够用,剩下的用到了再看。
| 区域 | 位置 | 作用 | 入门阶段要不要用 |
|---|---|---|---|
| 1 | 顶部选项卡 | 切换预处理、分类、聚类、关联规则等不同任务面板 | 要,目前只用预处理 |
| 2 | 选项卡下方按钮 | 打开、保存、编辑数据,以及撤销 | 要,保存和撤销最常用 |
| 3 | Choose 过滤器 | 选择筛选器,对数据做变换 | 要,预处理的主力 |
| 4 | 右上方概况 | 显示关系名、实例数、属性数 | 要,一眼确认数据规模 |
| 5 | 左侧属性列表 | 列出所有属性,可勾选删除 | 要,删列就在这 |
| 6 | 右中属性摘要 | 显示选中属性的类型、缺失情况、分布 | 要,检查数据质量 |
| 7 | 右下方直方图 | 选中属性的分布图 | 要,直观看出异常 |
| 8 | 底部状态栏 | 看日志、判断有没有报错 | 要,出错先看这里 |
区域 1 的选项卡管的是「做哪类任务」,这一章只用预处理那个。区域 2 那几个按钮里,打开和保存不用说,重点记住撤销按钮——你在界面上做的很多操作是直接改内存里的数据集,撤销能帮你退回去,但它只能退一步,所以养成频繁保存的习惯比什么都强。区域 4 会告诉你这份数据有多少条记录、多少个属性,拿到一份新数据先看这个数字,能立刻发现是不是读错了行。
区域 5 是属性列表,属性名左边标着序号,这个序号后面选过滤器要填。勾选某个属性再点删除,那一列就没了,删错了用撤销找回。在区域 5 里点中某个属性,区域 6 就会显示它的摘要,数值属性和分类属性的摘要长得不一样:数值的会给出最小值、最大值、平均值、标准差,分类的会给出每个取值的数量和占比。区域 7 是直方图,如果最后一列是分类变量,每个柱子还会按类别比例染成不同颜色,一眼就能看出各类是否均衡。区域 8 的状态栏平时不起眼,但它右边的鸟图标在动,说明软件正在算东西,卡住的时候先看这里;右键点击还能做内存回收,数据大的时候偶尔能救急。
4.4 动手:删掉 ID,把两列数值改成区间
现在拿一份客户数据练手。这份表里有客户编号、年龄、性别、地区、收入、婚姻状况、子女数、是否有车、是否有储蓄账户、是否有活期账户、是否有房贷,最后一列记录这位客户在上次推广后有没有购买某个产品,取值是是或否。共有十来列,最后一列正好是我们要预测的目标,位置没问题。
第一步删掉客户编号。这种唯一标识对预测毫无意义,留着只会干扰算法,甚至会带来麻烦。在区域 5 里勾上编号那一列,点删除,然后立刻保存一次。保存完用文本编辑器打开,你会看到属性声明部分已经被软件自动改好了,类型也都选得合理,这一步基本不用手工干预。
第二步处理子女数这一列。它虽然标成数值,但实际只有 0、1、2、3 这么几个取值,本质上是分类。很多算法只能处理全是分类属性的数据,所以这种「看着是数字、其实是类别」的列要提前改过来。做法很土但有效:用文本编辑器打开 ARFF,把对应的那行声明从数值类型改成大括号列出取值,保存,再回界面重新打开,选中这一列看摘要里的类型是不是变成了分类型。
第三步把年龄和收入切成区间。这两个是真·连续数值,取值太多,直接喂给某些算法效果不好。在区域 3 点选择按钮,会展开一棵过滤器树,逐级找到负责离散化的那个(在无监督、属性这两层下面),点中之后,选择框旁边的文本里会显示一串默认参数,形如段数 10、某种区间标记、作用范围全部。点这串文本会弹出参数窗口,我们只改两个:作用范围改成只针对这两个属性的序号,段数从 10 改成 3。其它参数先别动,想看含义就点窗口里的更多说明。
改完点确定回到主界面,再点选择框右边的应用,你会看到属性列表里那两列的类型变了,摘要也从数值统计变成了每个区间的计数。如果对结果不满意,点撤销就能退回去重来。到这一步,一次完整的预处理就走完了,剩下的就是保存成 ARFF。
4.5 存下来并回头检查一遍
保存之后还有一件事要做:回去看一眼文件。离散化生成的区间标签通常是数学区间的写法,形如从负无穷到某个小数,看着晦涩,也不利于后面读结果。你可以用文本编辑器手动把这些标签替换成更好懂的名字,比如把前三段换成 0_34、35_50、51_以上这种,替换的时候注意每一段的标签要和数据区里出现的完全一致,不要漏改也不要改错。
检查清单大概三条:属性数量对不对,有没有多出来或者少掉一列;每列的类型是不是你想要的,该分类的分类、该数值的数值;最后一列是不是你的目标变量。这三条都过了,这份数据就可以拿去跑分类了。别小看这个回头检查的动作,我见过太多人一路点下来,最后发现预测的是 ID 列,白忙一场。
5. 避坑清单:新手最容易翻车的 5 个地方
这一章是我带人时被问得最多的五类问题,每一条都按「看到什么现象 → 为什么会这样 → 怎么解决」的顺序写,遇到对得上的直接照做就行。
5.1 现象:属性名变成一堆数字,第一行数据不见了
打开 CSV 之后,属性列表里的名字全是数值或者奇怪的字符,原本的第一行数据找不到了。原因很单纯:这份 CSV 没有表头,而 WEKA 默认把第一行读成属性名,于是你的第一条记录就这样被当成了列名,后面整张表的列名全错位。
解决方式是补表头。用文本编辑器打开 CSV,在最上面插一行,写上每一列的名字,用英文逗号分隔,个数必须和数据列数严格一致。如果你不想改原文件,也可以在读入的时候让软件不要用第一行当表头,但这条路对新手不友好,容易连着别的参数一起改错,建议还是老老实实补一行。
5.2 现象:文件打不开,提示无法识别为 ARFF
明明文件后缀是 .arff,双击或者打开的时候就是报错,说结构无法识别。九成的情况是分类属性的取值列表和数据区对不上。比如声明里写的是{sunny, overcast, rainy},数据里却出现了Sunny或者cloudy,大小写不一致、多了空格、或者干脆是列表里没有的值,读取就会失败。
解决办法是逐列核对。先用文本编辑器把每一行的 @attribute 看清楚,再把数据区对应那一列的值扫一遍,确认数据里出现的每一个值都在花括号里,且拼写、大小写、前后空格完全一致。这类问题特别考验耐心,但排查手法很朴素:从第一列开始,一列一列对,对上十列基本就找到问题所在了。
5.3 现象:算法选好了,一点运行就报类型不支持
界面里挑好算法,点运行,结果区域弹出一句看不懂的英文,大意是这个算法处理不了某种类型的数据。原因是 WEKA 里不同算法对输入数据的类型有硬性要求,有的只吃分类属性,有的只吃数值属性,有的目标列必须是分类而不能是数值。你拿着一份全是数值的数据去跑只认分类的算法,它当然不干。
解决方向有两个:要么改数据,要么换算法。改数据就是把不合适的类型转过去,数值转分类用离散化过滤器,分类转数值可以用编码类的过滤器,前面练过的那个离散化操作就是干这个的。换算法更省事,在算法列表里换一个对类型要求宽松的,先跑通再说。我的建议是新手先换算法,把流程跑顺了,再回头折腾数据类型,不然很容易在预处理里耗掉全部热情。
5.4 现象:离散化之后标签是 (-inf-34.333333]
数据是处理完了,但每个区间的名字长得像数学试卷,负无穷、小数点后面一长串,读结果的时候完全不知道对应哪一段人。原因在于离散化过滤器默认用区间端点来命名,它只管算得准,不管你读得懂。
解决办法是手工重命名。保存成 ARFF 之后用文本编辑器打开,把每个区间标签替换成你能一眼看懂的名字,比如按年龄换成 0_34、35_50、51_以上。替换的时候要全局替换,属性声明和数据区里出现的都要改,漏掉一处就会读不进去。嫌麻烦的话,也可以在过滤器的参数里调整区间划分方式,让它生成更规整的端点,但手工改名对新手来说更直观,也更不容易出错。
5.5 现象:准确率 99%,但你不信
跑完分类,结果面板上显示准确率高得离谱,你自己都觉得不可能。这时候先别高兴,八成是数据泄漏或者无用属性在捣鬼。最常见的情况是 ID 列没删——如果每一行都有一个唯一编号,某些算法会把它当成极强的特征,靠它就能把每条记录区分开,训练集上自然全对,但换个数据就全崩。
另一个来源是目标信息泄漏,也就是某一列本身是由目标列算出来的,等于把答案提前告诉了模型。解决办法是先做减法:把 ID 这类唯一标识删干净,把明显和目标有因果倒挂的列挑出来,然后再看混淆矩阵,别只看那一个准确率数字。真正靠谱的结果,是各个类别的表现都说得过去,而不是一个漂亮的整数。
提示:每做完一次预处理就保存一个版本,文件名带上你做了什么,比如删了 ID 的、离散化过的。后期发现问题时你会感谢当时的自己,这算是我交过学费换来的习惯。
6. 下一步学什么:从「跑通一次」到「自己挑算法」
到这儿你已经完成了一次完整的数据准备,接下来该往哪儿走,我给一条尽量不绕弯的路线。
6.1 三周路线,每周只加一件事
第一周只做一件事:把 ARFF 格式吃透。找三四份不同来源的数据,自己动手写成 ARFF,故意写错一两个地方再修好,直到你闭着眼也能说出头信息该写什么、数据区该怎么对齐。这一周不要碰任何算法,格式不熟,后面全是无谓的报错。
第二周进分类面板。拿你预处理好的数据,把最后一列设成目标,挑一个决策树类的算法跑一遍,然后换两三个别的算法对比。重点不是谁准确率高,而是看结果面板给出的混淆矩阵长什么样、每个类别错在哪儿。同时开始看日志区,那里会告诉你算法实际用了哪些参数、数据有多少条、有没有警告。
第三周再回头补预处理。这时候你已经知道算法对数据的要求了,再去做缺失值处理、属性筛选、离散化调参,目的性会强很多,不会像第一周那样瞎点。
| 你想做的事 | 进哪个面板 | 大致能得到什么 |
|---|---|---|
| 清理和变换数据 | 预处理 | 一份格式正确、类型合适的数据集 |
| 预测类别 | 分类 | 混淆矩阵、准确率、每个类别的错分情况 |
| 预测数值 | 分类面板里的回归类算法 | 预测值与真实值的偏差指标 |
| 把样本自动分组 | 聚类 | 若干簇,以及每条记录属于哪一簇 |
| 找「买了 A 的人常买 B」 | 关联规则 | 一条条形如「如果 A 那么 B」的规则 |
6.2 一个具体技巧:先看日志,再看混淆矩阵
我给一个特别小但特别有用的习惯:每次跑完算法,先看状态栏和日志,再看结果。日志里会写清楚这次用了多少条数据、多少属性、算法有没有报警告,很多问题在这一屏就能发现,比如数据条数明显少于你预期的,说明读取的时候就丢了行。
然后再看混淆矩阵。准确率是最后才看的数字,因为它会把类别不均衡的问题藏起来:一百条数据里九十条是「否」,模型全猜「否」也有九成准确率,可它一点用都没有。混淆矩阵会老实告诉你,模型把多少「是」错判成了「否」,这个数字往往才是你真正关心的。我第一次做这类任务时,就是被一个漂亮的高准确率骗了半天,后来把矩阵拉出来一看,少数类几乎全军覆没。
从那以后我每次跑完任何模型,都强制走一遍「先看日志、再看矩阵、最后才看准确率」的顺序,再急也不跳。这份 WEKA 操作入门资料把 ARFF 的写法、Explorer 八个区域、预处理的具体参数都一步步记下来了,配合上面这套顺序对着做,比自己在界面里乱点要省不少时间,想要的话按文末方式获取就行。希望帮到你。
本文还有配套的精品资源,点击获取