这可能是关于可能的分类算法的新手问题,所以请耐心等待。我有一个包含名义和数字属性的数据集,可能看下面的例子(不是实际的数据集)。什么样的算法最好是预测类并获得准确性(最好用Python / Java)?
Classes: classA, classB, classC
attribute1: Recurrence <Yes, No>
attribute2: Subject <Math, Science, Geography>
attribute3: ProbabilityA <0.0 - 1.0>
atrribute4: ProbabilityB <0.0 - 1.0>
attribute5: ProbabilityC <0.0 - 1.0>
标称数据可以包含[1,-1]的数值,其中1表示存在,-1表示不存在,或者它可以是一组字符串值,例如['YES','NO']或[' Type1','Type2','Type3']。数值用于表示属性的可能性。例如[0-1],值越接近1,它就越有可能评估为真。
答案 0 :(得分:0)
KNN(K最近邻居)。你可以看到工具Weka(但它在java中)。实际上算法非常简单,结果很好。唯一的问题是Knn是一个懒惰的分类器;因此,训练阶段很快(几乎是空的),分类阶段更慢。现在,只有当你的训练集非常大时才重要,因为算法是O(N * M),其中N是训练实例的数量,M是属性的数量。在最坏的情况下,您可以对数据执行一些过滤。 Weka有一些方法可以做到这一点。
PS。在Weka中,算法具有不同的名称,IBK
答案 1 :(得分:0)
嗯,这绝不是一个“新手问题”,实际上相当复杂。虽然Inti的建议肯定是一个好的开始,但它确实取决于很多因素,没有简单的“正确答案”。
需要考虑的一些事项:
在知道这样的更多信息之前,很难给出非常精确的细节。 (一般来说,在这个论坛上,你在问题上付出的努力越多,其他人在他们的答案中付出的努力就越多。)
话虽如此,这里有一些热门话题要开始抬头,以了解可能性:
机器学习算法中潜在选择的世界非常巨大,没有什么能够完美运行,并且在所有情况下都没有任何效果。 This维基页面不是很好,但是找到算法是一个不错的开始。
一旦你确定了你认为适用于你的案例的任何算法,那么用Python或Java或者你有什么来查找库/实现。使用SciPy和NumPy,您可以假设Python具有相当大的可能性库。我怀疑Java也有一个庞大的库,但我个人更了解Python。