本文目录导读:

- 案例一:使用 J48 决策树进行鸢尾花(Iris)分类
- 案例二:使用 K-Means 算法进行超市客户分群(聚类)
- 案例三:使用 Apriori 算法进行购物篮分析(关联规则)
- 💡 Weka 使用的核心技巧总结:
这是一个非常经典且实用的请求,Weka(Waikato Environment for Knowledge Analysis)是新西兰怀卡托大学开发的开源数据挖掘软件,它最大的优点是不需要编写复杂的代码,图形界面非常友好,非常适合数据分析入门、学术研究以及快速验证机器学习模型。
为了让你能够上手操作并复现结果,我为你设计了3个由浅入深的完整案例,涵盖分类、聚类和关联规则三大核心功能。
使用 J48 决策树进行鸢尾花(Iris)分类
场景:预测鸢尾花的种类(Setosa、Versicolor、Virginica)。
数据集:Weka 自带的 iris.arff 文件。
操作步骤:
- 打开 Weka:启动 Weka GUI 选择器,点击
Explorer按钮。 - 加载数据:
- 点击
Open file...按钮。 - 在 Weka 安装目录的
data文件夹下选择iris.arff。 - 观察右下方
Attributes(属性),可以看到 4 个特征属性(sepallength, sepalwidth, petallength, petalwidth)和 1 个类别属性(class)。
- 点击
- 选择分类器:
- 点击顶部的
Classify标签页。 - 在
Classifier区域,点击Choose按钮。 - 导航路径:
trees->J48(这是 C4.5 算法的 Java 实现)。
- 点击顶部的
- 设置测试选项:
- 在
Test options中选择 Cross-validation(交叉验证),并设置Folds为 10(表示10折交叉验证,这是最常用的标准)。
- 在
- 运行与解读:
- 点击
Start按钮。 - 在
Classifier output(分类器输出)右击选择Result list中的结果,可以查看详细输出。
- 点击
核心结果解读(重点看这几个数值):
- Correctly Classified Instances:正确分类的实例数,通常结果会是 147/150(96%) 左右。
- Kappa statistic:一致性系数,越接近 1 越好。
- Confusion Matrix(混淆矩阵):这是一个 3x3 的矩阵。
- 输出结果中通常
a b c <-- classified as表示预测值,行表示真实值。 - 你会发现 Setosa 类(通常在矩阵中是最初的一行)全部分类正确,错分的主要是 Versicolor 和 Virginica 之间。
- 输出结果中通常
- 可视化:右键点击
Result list中的结果,选择Visualize tree(可视化树),你可以看到树形图,根节点是 Petal length(花瓣长度),这符合生物学常识。
使用 K-Means 算法进行超市客户分群(聚类)
场景:针对顾客的消费数据(这里使用 Weka 自带的 bank-data.arff 或生成模拟数据),将客户分为不同群体,以便实施差异化营销。
数据集:bank-data.arff(包含年龄、收入、是否有房、是否有储蓄等)。
操作步骤:
- 加载数据:打开
bank-data.arff。 - 数据预处理(关键步骤):
- K-Means 是基于距离的聚类算法,不能处理缺失值和非数值型属性。
- 点击
Choose按钮,在filters->unsupervised->attribute中选择Remove(用于删除 ID 列)。 - 点击
Apply应用过滤。 - 再次选择
filters->unsupervised->attribute->NumericToNominal,将所有数值属性转换为标称(或直接保留数值,但age和income需要标准化)。 - 重要:将
income属性(如果有的话)转换为数值型,并应用Standardize(标准化)过滤器,否则收入(数值大)会主导距离计算,导致年龄、子女数等属性失效。
- 选择聚类器:
- 点击
Cluster标签页。 - 点
Choose,选择SimpleKMeans(在clusterers目录下)。 - 点击
SimpleKMeans文本,进入参数设置,设置numClusters为 3,seed保持默认。
- 点击
- 运行与解读:
- 点击
Start。 - 解读输出:
- 查看
Final cluster centroids(最终聚类中心):这是最重要的部分,观察各群体的平均值。 - 例:Cluster 0 可能
income极高,age偏大,属于“高净值客户”;Cluster 1 可能children较多,需要教育基金产品。
- 查看
- 右键点击结果,选择
Visualize cluster assignments(可视化聚类分配),可以直观看到分布。
- 点击
使用 Apriori 算法进行购物篮分析(关联规则)
场景:“啤酒与尿布”的经典案例,分析用户购物车中商品的关联关系。
数据集:需要特定交易稀疏矩阵格式,Weka 自带的 supermarket.arff 是最佳选择。
操作步骤:
- 加载数据:打开
supermarket.arff(这是一个包含 4627 条交易记录、217 个属性的稀疏矩阵,1 表示购买,0 表示不买)。 - 减少噪音(可选):
- 数据量巨大且规则很多,我们先过滤掉那些购买次数极少的商品。
- 点击
Choose->filters->unsupervised->attribute->Remove选择要删除的列(这里为了快速实验,可以全选删除所有列,然后保留前 10 列作为示例演示,或者直接使用)。
- 选择关联规则算法:
- 点击
Associate标签页。 - 点击
Choose,选择Apriori。
- 点击
- 调整参数(最关键):
- 点击
Apriori文本进入属性编辑。 lowerBoundMinSupport(最小支持度下限):设为 05(表示商品组合需出现在 5% 的交易中才算频繁项集)。minMetric(最小置信度):设为 9(表示规则成立的概率需要达到 90%)。
- 点击
- 运行与解读:
- 点击
Start。 - 观察输出:会生成
Apriori的规则列表,形如vegetables=1 fruit=1 ==> frozen foods=1。 - 解读:
Confidence为 0.91,意味着购买了蔬菜和水果的顾客,有 91% 的概率会购买冷冻食品。 Lift(提升度)如果大于 1,说明正相关;若是小于 1 则是负相关。
- 点击
💡 Weka 使用的核心技巧总结:
- X-Val 和 Percentage Split 的区别:多分类问题首选 10-fold Cross-validation(10折交叉验证),它比单纯按百分比划分数据(Percentage Split)更稳定、更不容易过拟合。
- 数据决定了上限:无论是分类还是聚类,预处理(去缺失值、标准化、离散化)比调算法参数重要得多,建议在
Filter中先使用Standardize或Normalize。 - 结果保存:
- 在
Result list中右键点击结果,选Save result buffer保存文本结果。 - 右键点击结果,选
Visualize classifier errors查看错误分类的散点图,拖动鼠标可以查看具体是哪个点分错了。
- 在
你可以先拿 案例一 跑通整个流程,如果你在操作过程中遇到任何具体的报错信息(File format not recognised” 或者结果中全是 NaN),随时发给我,我来帮你具体排查。