ELKI 输入文件的结构,而 运行 LOF
the structure of the input file to ELKI while running LOF
我想 运行 带有 ELKI GUI 的 LOF 算法,但我不知道它需要什么样的输入文件。我查看了 here,当我尝试给它一个输入 csv 文件时,每个实例的属性值为 space-separated(包括 class 的分类属性,其余属性是数字).该文件与此类似(没有 header):
5 1 1 1 2 1 3 1 1 benign
5 4 4 5 7 10 3 2 1 benign
3 1 1 1 2 2 3 1 1 benign
6 8 8 1 3 4 3 7 1 benign
4 1 1 3 2 1 3 1 1 benign
8 10 10 8 7 10 9 7 1 malignant
1 1 1 1 2 10 3 1 1 benign
2 1 2 1 2 1 3 1 1 benign
2 1 1 1 2 1 1 1 5 benign
4 2 1 1 2 1 2 1 1 benign
1 1 1 1 1 1 3 1 1 benign
2 1 1 1 2 1 2 1 1 benign
5 3 3 3 2 3 4 4 1 malignant
我选择 dbc.in 作为 .csv 文件,dbc.parser 作为 NumberVectorLabelParser,ClassLabelFilter 的索引为 9(因为这是带有 class 标签的列的索引)和 k = 11
但是,它给了我这个错误:
Task failed
de.lmu.ifi.dbs.elki.utilities.exceptions.AbortException: Cannot initialize class labels: 9
at de.lmu.ifi.dbs.elki.datasource.filter.typeconversions.ClassLabelFilter.filter(ClassLabelFilter.java:106)
at de.lmu.ifi.dbs.elki.datasource.AbstractDatabaseConnection.invokeStreamFilters(AbstractDatabaseConnection.java:114)
at de.lmu.ifi.dbs.elki.datasource.InputStreamDatabaseConnection.loadData(InputStreamDatabaseConnection.java:91)
at de.lmu.ifi.dbs.elki.database.StaticArrayDatabase.initialize(StaticArrayDatabase.java:119)
at de.lmu.ifi.dbs.elki.workflow.InputStep.getDatabase(InputStep.java:62)
at de.lmu.ifi.dbs.elki.KDDTask.run(KDDTask.java:108)
at de.lmu.ifi.dbs.elki.application.KDDCLIApplication.run(KDDCLIApplication.java:60)
at [...]
Caused by: java.lang.ArrayIndexOutOfBoundsException: 9
at de.lmu.ifi.dbs.elki.data.LabelList.get(LabelList.java:109)
at de.lmu.ifi.dbs.elki.datasource.filter.typeconversions.ClassLabelFilter.filter(ClassLabelFilter.java:102)
at de.lmu.ifi.dbs.elki.datasource.AbstractDatabaseConnection.invokeStreamFilters(AbstractDatabaseConnection.java:114)
at de.lmu.ifi.dbs.elki.datasource.InputStreamDatabaseConnection.loadData(InputStreamDatabaseConnection.java:91)
at de.lmu.ifi.dbs.elki.database.StaticArrayDatabase.initialize(StaticArrayDatabase.java:119)
at de.lmu.ifi.dbs.elki.workflow.InputStep.getDatabase(InputStep.java:62)
at de.lmu.ifi.dbs.elki.KDDTask.run(KDDTask.java:108)
at de.lmu.ifi.dbs.elki.application.KDDCLIApplication.run(KDDCLIApplication.java:60)
at [...]
如果我不使用 ClassLabel 过滤器,则会出现一个弹出对话框,其中包含以下消息:
SVG Error:
null:-1
The attribute "d" of the element <path> is invalid
谁能帮我 运行 算法?非常感谢您的帮助,谢谢!
更新: 输入数据中的缺失值破坏了直方图可视化工具。这已得到修复,并将在下一个版本中工作(尽管缺失值将被简单地忽略 - 不会有单独的直方图条来指示缺失值的数量。欢迎贡献!)
class 标签索引是相对于 标签,而不是 CSV 文件:过滤器只看到标签,没有别的。所以你想使用第 0 列作为 class 标签。
但您根本不需要使用此过滤器。
SVG 可视化错误 可能是由于某处产生了 ∞(无穷大,编码为 UTF-8,也可能是 NaN)。这可能是由于输入数据中的 NaN 值,或者是由于数据中的重复项。
在这个数据集中,有27条记录
1,1,1,1,2,1,1,1,1
LOF 的定义方式,如果您有 k 个或更多重复项,则 LOF 分数 可以 变得无限大。在这一点上,一些可视化模块失败并将一些半径或一些比例设置为无穷大,然后这不再是有效的 SVG(我会为此打开一个错误票)!欢迎来到杂乱数据的真实世界。 ;-)
解决方法 1:选择 k = 30 或更大。
解决方法2:不使用可视化,而是将数据写入文件;或 仅启用您需要的可视化工具,例如-vis.enable scatter|unproj
解决方法 3:先删除重复项。
解决方法 3:删除具有缺失值的行。
None 的这些变化使得数据集成为离群值检测的一个很好的选择,但是:这个数据集中的 "outliers" 集群 .
我想 运行 带有 ELKI GUI 的 LOF 算法,但我不知道它需要什么样的输入文件。我查看了 here,当我尝试给它一个输入 csv 文件时,每个实例的属性值为 space-separated(包括 class 的分类属性,其余属性是数字).该文件与此类似(没有 header):
5 1 1 1 2 1 3 1 1 benign
5 4 4 5 7 10 3 2 1 benign
3 1 1 1 2 2 3 1 1 benign
6 8 8 1 3 4 3 7 1 benign
4 1 1 3 2 1 3 1 1 benign
8 10 10 8 7 10 9 7 1 malignant
1 1 1 1 2 10 3 1 1 benign
2 1 2 1 2 1 3 1 1 benign
2 1 1 1 2 1 1 1 5 benign
4 2 1 1 2 1 2 1 1 benign
1 1 1 1 1 1 3 1 1 benign
2 1 1 1 2 1 2 1 1 benign
5 3 3 3 2 3 4 4 1 malignant
我选择 dbc.in 作为 .csv 文件,dbc.parser 作为 NumberVectorLabelParser,ClassLabelFilter 的索引为 9(因为这是带有 class 标签的列的索引)和 k = 11
但是,它给了我这个错误:
Task failed
de.lmu.ifi.dbs.elki.utilities.exceptions.AbortException: Cannot initialize class labels: 9
at de.lmu.ifi.dbs.elki.datasource.filter.typeconversions.ClassLabelFilter.filter(ClassLabelFilter.java:106)
at de.lmu.ifi.dbs.elki.datasource.AbstractDatabaseConnection.invokeStreamFilters(AbstractDatabaseConnection.java:114)
at de.lmu.ifi.dbs.elki.datasource.InputStreamDatabaseConnection.loadData(InputStreamDatabaseConnection.java:91)
at de.lmu.ifi.dbs.elki.database.StaticArrayDatabase.initialize(StaticArrayDatabase.java:119)
at de.lmu.ifi.dbs.elki.workflow.InputStep.getDatabase(InputStep.java:62)
at de.lmu.ifi.dbs.elki.KDDTask.run(KDDTask.java:108)
at de.lmu.ifi.dbs.elki.application.KDDCLIApplication.run(KDDCLIApplication.java:60)
at [...]
Caused by: java.lang.ArrayIndexOutOfBoundsException: 9
at de.lmu.ifi.dbs.elki.data.LabelList.get(LabelList.java:109)
at de.lmu.ifi.dbs.elki.datasource.filter.typeconversions.ClassLabelFilter.filter(ClassLabelFilter.java:102)
at de.lmu.ifi.dbs.elki.datasource.AbstractDatabaseConnection.invokeStreamFilters(AbstractDatabaseConnection.java:114)
at de.lmu.ifi.dbs.elki.datasource.InputStreamDatabaseConnection.loadData(InputStreamDatabaseConnection.java:91)
at de.lmu.ifi.dbs.elki.database.StaticArrayDatabase.initialize(StaticArrayDatabase.java:119)
at de.lmu.ifi.dbs.elki.workflow.InputStep.getDatabase(InputStep.java:62)
at de.lmu.ifi.dbs.elki.KDDTask.run(KDDTask.java:108)
at de.lmu.ifi.dbs.elki.application.KDDCLIApplication.run(KDDCLIApplication.java:60)
at [...]
如果我不使用 ClassLabel 过滤器,则会出现一个弹出对话框,其中包含以下消息:
SVG Error:
null:-1
The attribute "d" of the element <path> is invalid
谁能帮我 运行 算法?非常感谢您的帮助,谢谢!
更新: 输入数据中的缺失值破坏了直方图可视化工具。这已得到修复,并将在下一个版本中工作(尽管缺失值将被简单地忽略 - 不会有单独的直方图条来指示缺失值的数量。欢迎贡献!)
class 标签索引是相对于 标签,而不是 CSV 文件:过滤器只看到标签,没有别的。所以你想使用第 0 列作为 class 标签。
但您根本不需要使用此过滤器。
SVG 可视化错误 可能是由于某处产生了 ∞(无穷大,编码为 UTF-8,也可能是 NaN)。这可能是由于输入数据中的 NaN 值,或者是由于数据中的重复项。
在这个数据集中,有27条记录
1,1,1,1,2,1,1,1,1
LOF 的定义方式,如果您有 k 个或更多重复项,则 LOF 分数 可以 变得无限大。在这一点上,一些可视化模块失败并将一些半径或一些比例设置为无穷大,然后这不再是有效的 SVG(我会为此打开一个错误票)!欢迎来到杂乱数据的真实世界。 ;-)
解决方法 1:选择 k = 30 或更大。
解决方法2:不使用可视化,而是将数据写入文件;或 仅启用您需要的可视化工具,例如-vis.enable scatter|unproj
解决方法 3:先删除重复项。
解决方法 3:删除具有缺失值的行。
None 的这些变化使得数据集成为离群值检测的一个很好的选择,但是:这个数据集中的 "outliers" 集群 .