如何对WEKA中的真实连续数据进行分类

这是我的数据

@attribute Service_type {Fund,Loan,CD,Bank_Account,Mortgage}@attribute Customer {Student,Business,Other,Doctor,Professional}@attribute Monthly_fee real@attribute Advertisement_budget real@attribute Size {Small,Large,Medium}@attribute Promotion {Web&Email,Full,Web,None}@attribute Interest_rate real@attribute Period real@attribute Label real

这是一行对应的示例数据。

Fund,Student,0.64,0.95,Small,Full,0,10,26.72

问题在于我想预测LABEL属性,它是一个实数,但WEKA在J48决策树中没有提供这个选项。

我得到一个建议,说我需要将LABEL属性分类成不同的范围,比如LABEL大于25且小于30的定义为C1,依此类推。

我的问题是,对于J48是否有其他方法可以做到这一点,或者是否有特定的方法或理由来对数据进行分类?


回答:

你需要明确“对数据进行分类”是什么意思,因为在实值类标签的背景下,这个术语是模糊的。如果一个假设的分类器对你的示例行预测出Label=26.7200000000001,这应该被认为是正确的吗?如果是,那么在什么样的误差范围内不再是正确的?如果不是,那么由于计算机处理实数的固有性质,你可能就无能为力了。

J48无法(也确实不能)解决这些问题。它需要从有限数量的值中进行选择。传统的方法是,如你的建议所说,对变量进行离散化处理。因此,不是拥有无限数量的标签,而是为“0<=x<10”设定一个标签,为“10<=x<20”设定另一个标签,依此类推。具体如何做取决于问题本身——你需要多少精度,你能观察到的值范围是多少,等等。离散化越精细,结果分类器的准确性就可能越高,但这会以时间和所需训练数据量的增加为代价。

如果你不想像这样对输出变量进行离散化处理,另一种方法是将其视为回归问题而不是分类问题。在这种情况下,目标是输出一个实数,使得某种误差度量(例如,整个训练集上的均方误差)最小化。J48不适合这种方法。我对WEKA的使用不多,但似乎weka.classifiers.functions命名空间包含了WEKA对回归模型的基本支持。或者,如果你想坚持使用基于决策树的东西,你可以看看weka.classifiers.trees.M5P

请注意,这并不是我的专业领域,但由于你在18小时左右没有收到其他回答,我想这可能会有所帮助。请记住,如果你看到与我的说法相矛盾的内容,不要自动假设我对细节的描述是正确的。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注