有时候,可能会遇到带有两个甚至更多风格的实例的类,并包含表示实例风格的标签(tag)域。
Demo:
- // Tagged class - vastly inferior to a class hierarchy!
- class Figure {
- enum Shape { RECTANGLE, CIRCLE };
- // Tag field - the shape of this figure
- final Shape shape;
- // These fields are used only if shape is RECTANGLE
- double length;
- double width;
- // This field is used only if shape is CIRCLE
- double radius;
- // Constructor for circle
- Figure(double radius) {
- shape = Shape.CIRCLE;
- this.radius = radius;
- }
- // Constructor for rectangle
- Figure(double length, double width) {
- shape = Shape.RECTANGLE;
- this.length = length;
- this.width = width;
- }
- double area() {
- switch(shape) {
- case RECTANGLE:
- return length * width;
- case CIRCLE:
- return Math.PI * (radius * radius);
- default:
- throw new AssertionError();
- }
- }
- }
这些标签类(tagged class)有着许多优点,但是破坏了可读性。
标签类过于冗长、容易出错,并且效率低下。
表示多种风格对象的数据类型:子类型化(subtyping)。标签类正是类层次的一种简单的仿效。
Demo:
- // Class hierarchy replacement for a tagged class
- abstract class Figure {
- abstract double area();
- }
- class Circle extends Figure {
- final double radius;
- Circle(double radius) { this.radius = radius; }
- double area() { return Math.PI * (radius * radius); }
- }
- class Rectangle extends Figure {
- final double length;
- final double width;
- Rectangle(double length, double width) {
- this.length = length;
- this.width = width;
- }
- double area() { return length * width; }
- }
- class Square extends Rectangle {
- Square(double side) {
- super(side, side);
- }
- }
标签类很少有适用的时候。当你想要编写一个包含显示标签域类时,应该考虑一下,这个标签是否可以被取消,这个类是否可以用类层次来代替。当你遇到一个包含标签与的现有类时,就要考虑将它重构到一个层次结构中去。
相关推荐
实验结果显示,提出的以LP-RF为基础模型的middle-out层次多标签模型在F1值、汉明损失和平均精度上均优于传统的自顶向下(top-down)和自底向上(bottom-up)模型。这表明在层次较深、叶子节点较多、标签稀疏的情况下,...
邮件分类是指在给定的分类...充分利用邮件各字段信息,取得的总体分类效果最好,但对合法邮件,利用邮件头及邮件标题却取得了最好结果,并在层次分类中验证了这点,层次分类效果要优于平面分类。最后进行了总结和展望。
之前的深度学习方法在解决HTC时,可以分为两类:一类侧重于局部信息,另一类则试图全面理解层次结构。然而,单一模型难以同时优化这两个方面。HiDEC的出现,旨在克服这一局限,提供一种更为有效的解决方案。
通过与其他流行的聚类算法进行比较,例如层次聚类和DBSCAN等,实验结果表明所提算法在提高聚类性能方面优于其他算法,并且算法的可行性和有效性也得到了验证。 文章中还提到了其他一些关键词,比如标签云和标签的...
文本分类的应用场景非常广泛,涵盖自动标签、情感分析、垃圾邮件过滤、垃圾评论过滤等任何需要自动归档文本的场合。近年来,深度学习利用词向量的分布式表示构建模型的输入,主流的深度学习模型,如卷积神经网络和...
标签的结构化特性使得它们可以有效地存储、组织、管理和搜索,这正是标签优于传统分类的原因之一。 其次,标签的搜索和定位能力是其另一大优势。因为标签是结构化的,它们可以在数据库中轻松地被索引和查找,从而...
通过CNN,模型可以从输入图像中提取多层次的特征,从而实现对标签缺陷的有效识别。 总的来说,该研究为标签缺陷检测提供了一种基于Caffe深度学习框架的新方法,这种方法通过Dropout优化了特征提取,提升了检测精度...
深度学习是一种模仿人脑层次结构的机器学习方法,它能够逐步从低层特征到高层抽象特征进行学习,通过逐层提取和优化特征,实现对复杂数据的高效处理。近年来,深度学习在图像识别、语音识别等领域取得了显著成果。 ...
标题和描述的知识点: 标题“中证科技类指数超越市场整体表现 助力科技...指数型产品为投资者提供了一种投资科技股的便捷方式,并且中证指数公司发布的科技类指数为资本市场提供了一个全面、多层次的科技股投资视角。
《基于规则的层次排名:一种无监督的中文半结构化文本可见标签提取方法》 随着互联网和信息技术的飞速发展,半结构化的中文文本数据大量涌现,为文本挖掘和知识发现带来了新的挑战与机遇。其中,如何从文档中自动...
1. 提出一种结合标签信息、内容信息和用户评分的矩阵分解算法,利用神经网络模型获取物品的深层次特征,降低预测误差。 2. 将内容和标签的异构信息融合,以更全面的特征向量表示物品,克服数据稀疏性和冷启动问题对...
Chameleon则是一种动态建模的层次聚类算法,其性能被认为优于BIRCH,但计算复杂度较高。 2. 凝聚型层次聚类流程: - 它从每个对象作为一个单独的簇开始,通过合并距离最近的类逐渐构建层级结构,直至所有对象都在...
而单张纸印刷加工则更为灵活,适合小批量生产,印刷效果较好,尤其是丝印和平版胶印,能展现出丰富的层次和实地效果。 胶印作为模内标签的一种常见印刷工艺,其特点是精细网点印刷质量出色,但色彩饱和度和线条印刷...
在对公共PPIdatasets(包含MIPS功能目录和基因本体论标签)进行的预测中,PILL被证实优于其他相关技术,并且能够有效地补充缺失的标签以及预测完全未标记蛋白质的功能。 该研究强调了在蛋白质功能预测中考虑不完整...
然而,大型类型库给传统的多标签分类方法带来了挑战。这种方法通常无法充分利用不同类型之间的关联信息,特别是在类型数量急剧增加时。为了解决这一问题,本文研究了如何在超空间中利用嵌入技术捕捉实体提及与其目标...
最后,“度量学习”是指学习一个距离函数或相似性函数,让具有相同标签的样本彼此间的距离更小,标签不同的样本间的距离更大。度量学习在很多应用中都有重要作用,比如人脸识别、零样本学习和度量学习等。 文章中还...
在yeast数据集上,BR算法(使用J48和NaiveBayes作为基分类器)的性能比较中,可以看到不同的基分类器对多标签预测的影响,比如J48在某些评估指标上优于NaiveBayes。这些实验结果有助于评估和选择适合特定任务的多...
两个层次的聚类过程可以相互提供多次标签修正环节中的指导信息。 为了验证提出的双层协同聚类方法的性能,作者在12个真实世界的众包数据集上进行了实验。实验结果表明,该方法的准确性优于现有的先进方法。此外,这...
【标签】:互联网,深度学习,图像分类,卷积神经网络,AlexNet **正文** 人工神经网络(ANN)是受生物神经元结构启发的计算模型,用于模拟人脑的学习过程。近年来,随着深度学习的兴起,ANN在各个领域,尤其是...