这是我的数据
@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 doenst给了我J48决策树的选项。
我得到了这个提示,我需要将我的LABEL属性分类为 LABEL大于25& amp; C1的标签不到30,依此类推。
我的问题是,是否有其他方法可以为J48执行此操作,或者是否有任何特定的方法或理由来至少对数据进行分类?
答案 0 :(得分:2)
你必须通过“对数据进行分类”来定义你的意思,因为在实值类标签的上下文中它是模糊的。如果假设的分类器为您的示例行预测Label = 26.7200000000001,那么这应该被认为是正确的吗?如果是这样,那epsilon不再是真的吗?如果没有,你可能会因为计算机如何处理实数而固执。
J48没有(并且不能真正)解决这些问题。它需要有限数量的值才能选择。正如您的提示所说,传统的做法是将变量离散化。因此,不是拥有无限数量的标签,而是有一个标签为“0< = x< 10”,另一个标签为“10< = x< 20”等。如何确切地做到这一点取决于问题 - 多少精度你需要什么,你能观察到的值的范围等等。离散化越精细,得到的分类器就越准确,但代价是时间和所需的训练数据量。
如果您不希望将输出变量离散化,那么另一种方法是将其视为回归问题而不是分类问题。在那里,目标是输出实数,使得一些误差测量(例如,整个训练集上的均方误差)被最小化。 J48不是这种方法的好选择。我不会对Weka做很多事情,但似乎weka.classifiers.functions
命名空间保留了对回归模型的基本Weka支持。或者,如果您想坚持使用基于决策树的内容,您可以查看weka.classifiers.trees.M5P
。
请注意,这不是我的专业领域,但由于您在18小时左右没有收到任何其他答案,我认为这可能会有所帮助。请记住,如果你看到一些与我相矛盾的东西,不要自动假设我得到了正确的细节。