WEKA高级用法

如何在WEKA中跟踪实例?

WEKA不支持实例的内部ID,必须使用ID属性。请参见如何使用ID属性

如何使用id属性

有关如何在WEKA中使用属性ID的更多信息,请参阅实例ID文章。

如何连接到数据库

只需稍加努力,你就可以通过JDBC轻松访问数据库。你需要以下各项:

  • 要在CLASSPATH中配置访问的数据库的JDBC驱动程序。
  • 自定义的DatabaseUtils.props文件。以下示例文件位于weka.jar归档的weka/test目录中:
    • HSQLDB – DatabaseUtils.props.hsql (>= 3.4.1/3.5.0)。
    • MS SQL Server 2000 – DatabaseUtils.props.mssqlserver (>= 3.4.9/3.5.4)。
    • MS SQL Server 2005 Express Edition – DatabaseUtils.props.mssqlserver2005 (> 3.4.10/3.5.5)。
    • MySQL – DatabaseUtils.props.mysql (>= 3.4.9/3.5.4)。
    • ODBC – DatabaseUtils.props.odbc (>= 3.4.9/3.5.4)。
    • Oracle – DatabaseUtils.props.oracle (>= 3.4.9/3.5.4)。
    • PostgreSQL – DatabaseUtils.props.postgresql (>= 3.4.9/3.5.4)。
    • Sqlite 3.x – DatabaseUtils.props.sqlite3 (> 3.4.12, > 3.5.7)。

有关更多详细信息,请参阅以下文章:

以下常见问题也可能是你感兴趣的:

如何从命令行使用WEKA

阅读入门文章将帮助你理解命令行的用法,以及如何从命令行运行WEKA方案

我可以调整分类器的参数吗?

可以,你可以使用以下元分类器之一执行此操作:

  • weka.classifiers.meta.CVParameterSelection
  • weka.classifiers.meta.GridSearch(仅限开发人员版)。
  • weka.classifiers.meta.AutoWEKAClassifier(通过外部包)。
  • weka.classifiers.meta.MultiSearch(通过外部包)。

有关更多信息,请参阅各自分类器的Javadoc或优化参数文章。

如何生成学习曲线

你可以使用实验仪的高级模式生成学习曲线。有关更多详细信息,请参阅文章学习曲线

我在哪里可以找到有关ROC曲线的信息?

只要看看那些贴着ROC标签的文章,它们就涵盖了ROC曲线和AUC的主题。这些文章介绍了GUI处理以及如何从代码创建ROC曲线。

我现在有不平衡的数据

你可以执行成本敏感型分类或对数据进行重采样,以获得更均衡的类分布(请参阅受监督的重采样过滤器)。

我可以在实验器中使用集群器运行实验吗?

可以,请参阅使用集群器运行实验的文章。

如何在WEKA中使用事务数据

事务性数据通常通过将事务ID作为主键的表存储在数据库中。给定事务的各个项目或元素可以拆分到表中的多行中(每行都具有相同的ID)。这种格式的数据需要转换为每个事务一行,然后才能用于学习WEKA中的分类器、关联规则、聚集器等。从WEKA3.7.2开始,有一个称为非正规化的包,其中包含一个可以执行这种“扁平化”过程的过滤器。过滤器要求 1)数据包含唯一标识每个单独事务的ID字段,以及 2)数据已经按照该ID字段的顺序排序。以下是取自WEKA邮件列表的示例场景:

Hi,
   I have data spanning multiple rows for an instance, such as below (User 1 span across multiple rows, User 2 as well).  Is it possible to use WEKA to cluster this dataset?  If not, any suggestion on how I should organize the data so that I can use WEKA to cluster this data? 
 User  ItemID  Sequence TimeSpent
 1     1       1        5
 1     2       2        1
 1     5       3        8
 1     6       4        12
 1     8       5        2

 2     1       1        7
 2     2       2        3
 2     3       3        3
 2     4       4        2
 2     5       5        7

在WEKA3.7.2中,有一个称为非正规化的包,它包含一个用于扁平化事务数据的过滤器。对于上面的示例,你必须做的第一件事是将其转换为ARFF文件:

@relation test
@attribute User numeric
@attribute ItemID numeric
@attribute Sequence numeric
@attribute TimeSpent numeric
@data
1, 1, 1, 5
1, 2, 2, 1
1, 5, 3, 8
1, 6, 4, 12
1, 8, 5, 2
2, 1, 1, 7
2, 2, 2, 3
2, 3, 3, 3
2, 4, 4, 2
2, 5, 5, 7

接下来,你可以运行NumericToNominal 过滤器来转换需要编码为名义的属性(用户属性是一个ID,可以保持数字或名义)。这里,我已将除ID之外的所有属性转换为nominal:

java weka.filters.unsupervised.attribute.NumericToNominal -R 2-last -i test.arff > test2.arff

这将导致:

@relation test-weka.filters.unsupervised.attribute.NumericToNominal-R2-last

@attribute User numeric
@attribute ItemID {1,2,3,4,5,6,8}
@attribute Sequence {1,2,3,4,5}
@attribute TimeSpent {1,2,3,5,7,8,12}

@data

1,1,1,5
1,2,2,1
1,5,3,8
1,6,4,12
1,8,5,2
2,1,1,7
2,2,2,3
2,3,3,3
2,4,4,2
2,5,5,7

现在,假设已经安装了非正规化软件包,并且(重要的)数据已经按照ID属性(在本例中为“User”)的顺序进行了排序:

java weka.Run Denormalize -G first -i test2.arff > final.arff

这将导致:

@attribute User numeric
@attribute ItemID_1 {f,t}
@attribute ItemID_2 {f,t}
@attribute ItemID_3 {f,t}
@attribute ItemID_4 {f,t}
@attribute ItemID_5 {f,t}
@attribute ItemID_6 {f,t}
@attribute ItemID_8 {f,t}
@attribute Sequence_1 {f,t}
@attribute Sequence_2 {f,t}
@attribute Sequence_3 {f,t}
@attribute Sequence_4 {f,t}
@attribute Sequence_5 {f,t}
@attribute TimeSpent_1 {f,t}
@attribute TimeSpent_2 {f,t}
@attribute TimeSpent_3 {f,t}
@attribute TimeSpent_5 {f,t}
@attribute TimeSpent_7 {f,t}
@attribute TimeSpent_8 {f,t}
@attribute TimeSpent_12 {f,t}

@data

1,t,t,f,f,t,t,t,t,t,t,t,t,t,t,f,t,f,t,t
2,t,t,t,t,t,f,f,t,t,t,t,t,f,t,t,f,t,f,f

请注意,对于集群/关联规则,你需要首先删除用户ID属性。

我已经使用命令行界面将其作为示例进行了说明。当然,这一切也可以在浏览器中完成。非规格化过滤器还具有聚合任何数字属性(而不是ID)的选项,因此,如果(例如)将TimeSpent属性保留为数字,而不是使用NumericToNominal将其转换为nominal ,则非规格化可以聚合它(sum, average, max, min)。

如何将WEKA与Matlab或Octave配合使用?

Matlab 和Octave 允许你与Java应用程序交互,从而允许你从这些应用程序中使用Weka。

有关如何使用Java集成,请参阅下面的演示文稿Octave(Octave与Matlab相当兼容)一节:

WEKA生态系统

00

WEKA

发表评论

电子邮件地址不会被公开。 必填项已用*标注

什么阻碍了你实现迈入机器学习领域的目标?

什么阻碍了你实现迈入机器学习领域的目标?

2020-04-22 机器学习

如果你在为进入机器学习领域而挣扎,感觉到有什么东西阻止了自己的开始,那么你应该看看这篇文章。 在这篇文章中,我们会讨论阻止进入机器学习领域的自我限制的信念,让你明白面临的问题。 几乎总是一种自我限制的信念阻碍了你们的进步。 也许你会在一个或多个这样的信念中看到自己。如果是这样的话, [......]

了解详情

R语言机器学习迷你课程

R语言机器学习迷你课程

2020-08-12 机器学习

在这个迷你课程中,你将发现如何开始,构建精确的模型,并自信地完成在14天内使用R预测建模机器学习项目。 这是一个重要而重要的文章。你可能想把它书签。 了解如何准备数据,拟合机器学习模型,并用我的新书评估他们在r上的预测,包括14步教程、3个项目和完整源代码。 我们开始吧。 [......]

了解详情

关于机器学习的几点思考

关于机器学习的几点思考

2020-04-26 机器学习

机器学习是一个大的、跨学科的研究领域。 你可以通过机器学习获得令人印象深刻的结果,并找到非常具有挑战性的问题的解决方案。但这只是更广泛的机器学习领域的一小部分,通常被称为预测建模或预测分析。 在这篇文章中,你将发现如何改变你对机器学习的思考方式,以便更好地为你提供机器学习实践者的服务。 [......]

了解详情

找到你的机器学习部落

找到你的机器学习部落

2020-04-26 机器学习

机器学习是一个充满算法和数据的迷人而强大的研究领域。 问题是,有这么多不同类型的人对机器学习感兴趣,每个人都有不同的需求。重要的是要了解你想要从机器学习中得到什么,并根据这些需求调整你的自学。 如果你不这样做,你很容易就会陷入困境,迷失方向,失去兴趣,得不到你想要的东西。 找到 [......]

了解详情

应用机器学习过程

应用机器学习过程

2020-04-26 机器学习

随着时间的推移,在处理应用机器学习问题时,你会开发出一种模式或流程,以快速获得良好的正常结果。 一旦开发完成,你就可以在一个又一个项目上反复使用此过程。你的流程越健壮、越发达,你就能越快地获得可靠的结果。 在这篇文章中,我想与你分享我解决机器学习问题的过程框架。 你可以将其用作下一 [......]

了解详情