ID3 Java 枚举树

2023-12-10

我正在尝试制作一个非二元学习树,它是 ID3 算法的简化版本。为此,我尝试使用枚举,因为有几个参考文献教授枚举层次结构,但我在将枚举转移到创建树所需的函数时遇到了麻烦。我已经尽我所能地设置了树所需的一切,但我在树的初始构建方面遇到了麻烦。

首先,我创建了六个枚举,每个枚举都有自己的文件,因此我不需要到处写“main.enumname”。前五个枚举代表汽车诊断。

public enum fuelstats {notempty, empty}
public enum lightstatus {Dim, Normal}
public enum scents {normal, gas}
public enum soundstatus {Normal, Howl, Screech, Click}
public enum turn {no, yes}

接下来,我又做了两个枚举。一种用于不同的诊断结果,另一种用于汽车诊断的不同“主题”。

public enum problems {battery, starter, solenoid, outofgas, flooding}
public enum features {lightstatus, soundstatus, fuelstats, scents, turn, problems}

然后,我制作了五个不同汽车诊断的数据示例,并在树中排序。

Example example1 = new Example(lightstatus.Dim, soundstatus.Howl, turn.yes, fuelstats.notempty, scents.normal, problems.battery);
Example example2 = new Example(lightstatus.Normal, soundstatus.Screech, turn.no, fuelstats.notempty, scents.normal, problems.starter);
Example example3 = new Example(lightstatus.Normal, soundstatus.Click, turn.no, fuelstats.notempty, scents.normal, problems.solenoid);
Example example4 = new Example(lightstatus.Normal, soundstatus.Normal, turn.yes, fuelstats.empty, scents.normal, problems.outofgas);
Example example5 = new Example(lightstatus.Normal, soundstatus.Normal, turn.yes, fuelstats.notempty, scents.gas, problems.flooding);

//make an array list of Examples.
ArrayList<Example> Examples = new ArrayList<Example>();
Examples.add(example1);

Examples.add(example2);
Examples.add(example3);
Examples.add(example4);
Examples.add(example5);

我将各种汽车诊断(称为“功能”)放入 ArrayList 中以进行洗牌,因为它们将被随机用于构建树。

//This ArrayList holds the Enums for shuffling purposes.
ArrayList<features> Features = new ArrayList<features>();

Features.add(features.soundstatus);
Features.add(features.lightstatus);
Features.add(features.turn);
Features.add(features.scents);
Features.add(features.fuelstats);

// Shuffle the elements in the list
Collections.shuffle(Features);

//The Features Array List is now a shuffled tree.
//We will do a single loop that will serve as our stack.

//First we take the top of the list and assign it to the root.
Tree id3 = new Tree(Features.get(0),Examples);

但是我如何编写一棵树: 接受一个特征枚举,使根的主题与枚举匹配,以及枚举子项的所有不同状态?例如,如果 soundstatus 是根,则它应该生成四个子项:正常、嚎叫、尖叫和喀哒声。这样我就可以将示例声音与儿童声音相匹配。这是我到目前为止的节点。

public class Node 
{

    ArrayList<Node> children;


    /* Constructor*/
    public Node(ArrayList<Node> ExampleList) 
    { 
        this.ExampleList = ExampleList;
        this.parent = parent;
        this.children = children; 
    }

    public ArrayList<Node> getChildren() 
    { 
        return children; 
    }

    public void addChild(Node n) 
    { 
        children.add(n);
    }

    private ArrayList<Node> children;

    Enum phrase;

    private boolean isUsed;

    Node parent;

    public void setUsed(boolean isUsed) 
    {
        this.isUsed = isUsed;
    }

    public boolean isUsed() 
    {
        return isUsed;
    }
    //This method states if the node is a leaf 
    public boolean isLeaf()
    {
        if (this.getChildren() == null)
        return true;

        else
        return false;
    }

}

您可以向功能添加子类:

import java.util.*;
interface hasEnumChildren {
    Class clazz();
}
enum fuelstats {
    notempty,empty
}
enum lightstatus {
    Dim,Normal
}
enum scents {
    normal,gas
}
enum soundstatus {
    Normal,Howl,Screech,Click
}
enum turn {
    no,yes
}
enum problems {
    battery,starter,solenoid,outofgas,flooding
}
enum features implements hasEnumChildren {
    lightstatus(lightstatus.class),soundstatus(soundstatus.class),fuelstats(fuelstats.class),scents(scents.class),turn(turn.class),problems(problems.class);
    features(Class clazz) {
        this.clazz=clazz;
    }
    final Class clazz;
    @Override public Class clazz() {
        return clazz;
    }
}
public class So10233099 {
    public static void main(String[] args) {
        System.out.println(Arrays.asList(features.lightstatus.clazz().getEnumConstants()));
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ID3 Java 枚举树 的相关文章

  • JAVA - 带有特殊字符的 LDAP 密码不起作用

    我试图在我的系统上创建一个登录屏幕 在 Active Directory 中进行查询 但是当用户的密码包含一些特殊字符 如 和 时 它不会验证 我需要加密密码才能工作吗 我该怎么做 我使用 getPassword 通过 JPasswordF
  • 使用 jdbc 程序连接到 Open Office odb 文件

    我编写了以下代码来连接到 OpenOffice db String db C Documents and Settings hkonakanchi Desktop Test odb Class forName org hsqldb jdbc
  • 如何将计算值转换为文字以进行枚举初始化

    我遇到了枚举的问题 因为我想将 case 初始化为双精度值PI 180 有没有办法通过常量或一些时髦的魔法获取这个计算值并将其转换为文字 以便我可以初始化枚举 我宁愿不必做3 14 我宁愿使用该值的实际编译器和硬件计算表示 所以我的第一次尝
  • JUnit Eclipse 显示 System.out.print() 的

    我正在使用 JUnit 3 和 Eclipse 3 4 当我运行 JUnit 测试用例时 一切正常并且测试完美完成 唯一的事情是我想查看我正在运行的类的输出 所有类都具有一些输出值的基本 System out print 因此 当我运行测试
  • Java:检查给定日期是否在当前月份内

    我需要检查给定的日期是否在当前月份 我编写了以下代码 但 IDE 提醒我getMonth https docs oracle com javase 7 docs api java util Date html getMonth and ge
  • 无法从后台服务通过 WiFi 访问互联网

    我将直接介绍我发现的一些事实 数据 如果您遇到 解决了类似的问题 请帮助我 我每 5 分钟向服务器发送一次数据 除非用户在服务器的帮助下手动将其关闭 wakeful broadcast receiver通过一个intent service
  • 业务代表与服务定位器

    Business Delegate 和 Service Locator 之间有什么区别 两者都负责封装查找和创建机制 如果 Business Delegate 使用 Service Locator 来隐藏查找和创建机制 那么 Busines
  • Java 的 QP 求解器 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • getClassLoader().getResource() 返回 null

    我有这个测试应用程序 import java applet import java awt import java net URL public class Test extends Applet public void init URL
  • 会话 bean 中的 EntityManager 异常处理

    我有一个托管无状态会话 bean 其中注入了 EntityManager em 我想做的是拥有一个具有唯一列的数据库表 然后我运行一些尝试插入实体的算法 但是 如果实体存在 它将更新它或跳过它 我想要这样的东西 try em persist
  • Vertx HttpClient getNow 不工作

    我的 vertx HttpClient 有问题 下面的代码显示使用 vertx 和纯 java 测试 GET Vertx vertx Vertx vertx HttpClientOptions options new HttpClientO
  • 您能让 Tomcat 6 stdout.log 文件表现得像 log4j DailyRollingFileAppender 吗?

    我们使用的是 Tomcat 6 的 Windows 安装 默认情况下 我们应用程序的 log4j 输出将转到 catalina base logs stdout log 文件 该日志文件仅在我们重新启动 Tomcat 时滚动 并且文件名始终
  • 如何使用 Java 原生接口从 Java 调用 Go 函数?

    可以通过以下方式调用 C 方法JNA https en wikipedia org wiki Java Native AccessJava 中的接口 如何使用 Go 实现相同的功能 package main import fmt impor
  • 在 Mac 上使用 JRE 打开 jar 文件

    我有一个 jar 文件 旨在通过命令行运行 我不打算在运行应用程序的机器上进行任何java开发 我的思考过程是 因此我应该只需要JRE而不是JDK 此外 JDK 大约是 JRE 的 4 倍 我不想下载它 在 Mac 上安装 JRE 时 它不
  • 嵌入式 tomcat 7 servlet 3.0 注释不起作用

    我有一个精简的测试项目 其中包含 Servlet 版本 3 0 用注释声明 如下所示 WebServlet test public class TestServlet extends HttpServlet private static f
  • 是什么原因导致“对象不是声明类的实例”? [复制]

    这个问题在这里已经有答案了 可能的重复 使用反射调用方法时 为什么会出现 对象不是声明类的实例 https stackoverflow com questions 7202988 why do i get object is not an
  • Scala repl 抛出错误

    当我打字时scala在终端上启动 repl 它会抛出此错误 scala gt init error error while loading AnnotatedElement class file usr lib jvm java 8 ora
  • Java的hashCode可以为不同的字符串产生相同的值吗?

    使用java的哈希码函数是否可以为不同的字符串提供相同的哈希码 或者如果可能的话 其可能性的 是多少 Java 哈希码是 32 位 它散列的可能字符串的数量是无限的 所以是的 会发生冲突 百分比是没有意义的 项目 字符串 的数量是无限的 而
  • 日期时间解析异常

    解析日期时 我的代码中不断出现异常错误 日期看起来像这样 Wed May 21 00 00 00 EDT 2008 这是尝试读取它的代码 DateTimeFormatter formatter DateTimeFormatter ofPat
  • Java 9 中紧凑字符串和压缩字符串的区别

    有什么优点紧凑的字符串 http openjdk java net jeps 254JDK9 中的压缩字符串 压缩字符串 Java 6 和紧凑字符串 Java 9 都有相同的动机 字符串通常实际上是 Latin 1 因此浪费了一半的空间 和

随机推荐

  • 将小 PS 脚本转换为 .BATch 文件中的长行

    我有从答案中得到的 PowerShell 代码这个问题 它显示 PS 代码运行的 cmd exe 窗口的位置 尺寸 WindowFunction RectangleStruct Add Type MemberDefinition DllIm
  • Android:使用 RandomAccessFile 从内部存储访问文件

    我正在创建一个需要从文件读取数据的应用程序 我最初是使用 a 来从资产文件夹中读取它的BufferedReader and an InputStreamReader但我遇到了内存问题 请参阅Android 文件读取 内存不足问题 一项建议是
  • 使用 Boost PTree 解析 XML(不带标签)

    我想知道 Boost Ptree 是否允许在不知道属性标签的情况下解析 xml 文件 我有一个 XML 文件 它将定期更新新标签 新数据 甚至删除某些标签 这些定期更改促使我考虑在不硬编码属性名称的情况下解析文件 有什么方法可以读取 XML
  • 将 nvarchar 值“Internet Explorer 3 原始”转换为数据类型 int 时转换失败

    在 SQL Server 2008 TSQL 中 我创建了一个如下的存储过程 CREATE PROCEDURE SP 1 10 2 AS declare mostValuableBook nvarchar 255 SELECT mostVa
  • 无法使用 Selenium WebDriver 和 Java 打开 IE11 驱动程序实例

    System setProperty webdriver ie driver C Users IEDriverServer Win32 2 45 0 IEDriverServer exe WebDriver driver new Inter
  • 如何创建和访问共享应用程序组文档目录?

    我正在使用自定义键盘扩展 然后从服务器下载键盘主题并保存到应用程序文档目录 但应用程序文档目录无法在自定义键盘扩展中访问 因此需要共享应用程序组目录 我该怎么办请帮助我 现在我正在尝试这个 但它不起作用 let fileManager Fi
  • 在 Worker 的帮助下从 Spark 读取巨大的 MongoDB 集合

    我想从 Spark 读取一个巨大的 MongoDB 集合 创建一个持久的 RDD 并对其进行进一步的数据分析 有什么办法可以更快地从 MongoDB 读取数据 尝试过MongoDB Java Casbah的方法 我可以使用worker sl
  • CakePHP 条件查询,控制器为“hasAndBelongsToMany”

    我为这个可怕的标题道歉 我不知道如何解释我的问题 在我的数据库中 我有以下表格 articles tags and articles tags 一篇文章可以有多个标签 目前 我可以获取所有带有所有标签的文章 但我希望能够根据其标签查找文章
  • SVN 到 Git 迁移后如何列出和获取远程分支? [复制]

    这个问题在这里已经有答案了 我将 SVN 存储库迁移到 Git 并将其推送到中央存储库 我们有相当数量的标签和分支 但不知何故 我们无法从 Git 客户端列出和获取它们 这很奇怪 因为标签和分支似乎在服务器上可用 在一个人的帮助下乔恩 马多
  • 如何在 sails 控制器中获取当前套接字对象或 id?

    我想访问当前连接的套接字 IDsails js v0 12 控制器功能 sails sockets getId req socket 显示未定义 因为这不是套接字请求 我的目标是在用户成功登录后在数据库中设置用户的在线状态 login fu
  • 已弃用的“EAGLContext”的解决方案是什么?

    我想为我的应用程序使用本机过滤器 该功能可以工作 但我想避免从文档中删除的方法 我搜索整个互联网并没有解决方案 我搜索整个互联网 但没有找到任何解决我的问题的方法 public func applyFilterTo image UIImag
  • 根据需求添加带有可变参数的.Net Core策略

    我正在尝试实施一项非常细粒度的政策 这个想法就像图中一样 每个实体始终具有一对多与右侧实体的关系 一机构可以有很多Courses each Course可以有很多Subjects each Subject可以有很多Syllabus etc
  • 如何将获取请求参数传递到我的 Velocity 模板以发送邮件

    我有一个 JSP 在该 JSP 中我有一个看起来像这样的链接 现在 当用户单击该链接时 它会转到我的velocityview servlet 现在我的问题是如何提取velocityview servlet 中的这些参数并将其放入上下文中 以
  • 字符文字错误中字符过多

    我正在创建一个时尚的文本应用程序 但在某些地方我收到错误 字符文字中的字符太多 我只写了一个字母 但当我粘贴时 它会转换成许多字母 如下所示 uD83C uDD89 原始字母是 请告诉我如何以正确的方式写这个 for int charOne
  • 第一句话正则表达式

    我正在使用正则表达式 与 php perl 兼容 来从某些文本中获取第一句话 我意识到 如果涵盖所有案例 这可能会变得巨大 但只是在目前 足够好 的事情之后 有人为此准备了现成的东西吗 最终 您需要的是自然语言解析 这是极其困难的 并且单独
  • fillStyle 不是函数

    我收到一个不寻常的错误 ctx wrap fillStyle 不是函数 在这一行 ctx wrap fillStyle b8b8b8 in here this paint function self path ctx wrap if isO
  • ?打印心形符号时

    抱歉问了一个愚蠢的问题 我们正在尝试将心形符号从数据库打印到 Java XML 文件 但同样的内容被打印为 不知道我在哪里失踪了 已经尝试过 char unicode 作为实践 我尝试在 main 方法中使用它 请找到示例 java 类 p
  • ListView QML 的 roleName 中的 QSqlQueryModel 引用错误

    我想从我的 SQlite 数据库中获取模型 当我在 QSqlQueryModel 中设置查询时 我可以获得行数 列数等 但是每列内的数据我有一个 ReferenceError 试图获取柱子 cpp代码 data base users QSq
  • AVPlayer 在 iPhone 上不会在结束中断时恢复播放,但在 iPad 上会恢复播放

    我正在为 iPhone 和 iPad 编写一个广播应用程序 在处理中断的暂停和播放音频时遇到一些奇怪的行为 我正在使用 AVAudioSession 委托方法beginInterruption and endInterruption分别到p
  • ID3 Java 枚举树

    我正在尝试制作一个非二元学习树 它是 ID3 算法的简化版本 为此 我尝试使用枚举 因为有几个参考文献教授枚举层次结构 但我在将枚举转移到创建树所需的函数时遇到了麻烦 我已经尽我所能地设置了树所需的一切 但我在树的初始构建方面遇到了麻烦 首