Weka案例

wen java案例 3

本文目录导读:

Weka案例

  1. 案例一:使用 J48 决策树进行鸢尾花(Iris)分类
  2. 案例二:使用 K-Means 算法进行超市客户分群(聚类)
  3. 案例三:使用 Apriori 算法进行购物篮分析(关联规则)
  4. 💡 Weka 使用的核心技巧总结:

这是一个非常经典且实用的请求,Weka(Waikato Environment for Knowledge Analysis)是新西兰怀卡托大学开发的开源数据挖掘软件,它最大的优点是不需要编写复杂的代码,图形界面非常友好,非常适合数据分析入门、学术研究以及快速验证机器学习模型。

为了让你能够上手操作并复现结果,我为你设计了3个由浅入深的完整案例,涵盖分类聚类关联规则三大核心功能。


使用 J48 决策树进行鸢尾花(Iris)分类

场景:预测鸢尾花的种类(Setosa、Versicolor、Virginica)。 数据集:Weka 自带的 iris.arff 文件。

操作步骤:

  1. 打开 Weka:启动 Weka GUI 选择器,点击 Explorer 按钮。
  2. 加载数据
    • 点击 Open file... 按钮。
    • 在 Weka 安装目录的 data 文件夹下选择 iris.arff
    • 观察右下方 Attributes(属性),可以看到 4 个特征属性(sepallength, sepalwidth, petallength, petalwidth)和 1 个类别属性(class)。
  3. 选择分类器
    • 点击顶部的 Classify 标签页。
    • Classifier 区域,点击 Choose 按钮。
    • 导航路径:trees -> J48(这是 C4.5 算法的 Java 实现)。
  4. 设置测试选项
    • Test options 中选择 Cross-validation(交叉验证),并设置 Folds 为 10(表示10折交叉验证,这是最常用的标准)。
  5. 运行与解读
    • 点击 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(包含年龄、收入、是否有房、是否有储蓄等)。

操作步骤:

  1. 加载数据:打开 bank-data.arff
  2. 数据预处理(关键步骤)
    • K-Means 是基于距离的聚类算法,不能处理缺失值非数值型属性
    • 点击 Choose 按钮,在 filters -> unsupervised -> attribute 中选择 Remove(用于删除 ID 列)。
    • 点击 Apply 应用过滤。
    • 再次选择 filters -> unsupervised -> attribute -> NumericToNominal,将所有数值属性转换为标称(或直接保留数值,但 ageincome 需要标准化)。
    • 重要:将 income 属性(如果有的话)转换为数值型,并应用 Standardize(标准化)过滤器,否则收入(数值大)会主导距离计算,导致年龄、子女数等属性失效。
  3. 选择聚类器
    • 点击 Cluster 标签页。
    • Choose,选择 SimpleKMeans(在 clusterers 目录下)。
    • 点击 SimpleKMeans 文本,进入参数设置,设置 numClusters 为 3,seed 保持默认。
  4. 运行与解读
    • 点击 Start
    • 解读输出
      • 查看 Final cluster centroids(最终聚类中心):这是最重要的部分,观察各群体的平均值。
      • 例:Cluster 0 可能 income 极高,age 偏大,属于“高净值客户”;Cluster 1 可能 children 较多,需要教育基金产品。
    • 右键点击结果,选择 Visualize cluster assignments(可视化聚类分配),可以直观看到分布。

使用 Apriori 算法进行购物篮分析(关联规则)

场景:“啤酒与尿布”的经典案例,分析用户购物车中商品的关联关系。 数据集:需要特定交易稀疏矩阵格式,Weka 自带的 supermarket.arff 是最佳选择。

操作步骤:

  1. 加载数据:打开 supermarket.arff(这是一个包含 4627 条交易记录、217 个属性的稀疏矩阵,1 表示购买,0 表示不买)。
  2. 减少噪音(可选)
    • 数据量巨大且规则很多,我们先过滤掉那些购买次数极少的商品。
    • 点击 Choose -> filters -> unsupervised -> attribute -> Remove 选择要删除的列(这里为了快速实验,可以全选删除所有列,然后保留前 10 列作为示例演示,或者直接使用)。
  3. 选择关联规则算法
    • 点击 Associate 标签页。
    • 点击 Choose,选择 Apriori
  4. 调整参数(最关键)
    • 点击 Apriori 文本进入属性编辑。
    • lowerBoundMinSupport(最小支持度下限):设为 05(表示商品组合需出现在 5% 的交易中才算频繁项集)。
    • minMetric(最小置信度):设为 9(表示规则成立的概率需要达到 90%)。
  5. 运行与解读
    • 点击 Start
    • 观察输出:会生成 Apriori 的规则列表,形如 vegetables=1 fruit=1 ==> frozen foods=1
    • 解读Confidence 为 0.91,意味着购买了蔬菜和水果的顾客,有 91% 的概率会购买冷冻食品。
    • Lift(提升度)如果大于 1,说明正相关;若是小于 1 则是负相关。

💡 Weka 使用的核心技巧总结:

  1. X-Val 和 Percentage Split 的区别:多分类问题首选 10-fold Cross-validation(10折交叉验证),它比单纯按百分比划分数据(Percentage Split)更稳定、更不容易过拟合。
  2. 数据决定了上限:无论是分类还是聚类,预处理(去缺失值、标准化、离散化)比调算法参数重要得多,建议在 Filter 中先使用 StandardizeNormalize
  3. 结果保存
    • Result list 中右键点击结果,选 Save result buffer 保存文本结果。
    • 右键点击结果,选 Visualize classifier errors 查看错误分类的散点图,拖动鼠标可以查看具体是哪个点分错了。

你可以先拿 案例一 跑通整个流程,如果你在操作过程中遇到任何具体的报错信息(File format not recognised” 或者结果中全是 NaN),随时发给我,我来帮你具体排查。

抱歉,评论功能暂时关闭!