我需要编写一个程序,给定具有某些属性的对象,它知道如何对其进行分类。它应该知道如何通过使用已知属性的已知对象列表进行训练来对新对象进行分类。
例如,我的对象A
具有以下属性:a=10
和b=1
。我还训练了该程序,以便它知道5..15
的{{1}}和a
的{{1}}之间的值将给定对象归类为0..2
。
随着程序的发展,我需要使用已知数据进一步训练它,以便属性间隔更准确(因此分类)。
现在,我没有任何机器学习经验或任何此类经验,我想知道如何从这开始。我见过很多教程,但仅限于文本分类。仅适用于双向分类(即正面或负面,是或否......只有两个值可供选择)。我会有5-6个标签开始,他们的号码很快就会增加。此外,对象属性是整数。
任何提示都非常感谢!
答案 0 :(得分:2)
机器学习是一个非常广泛的领域,所以第一步就是确切地知道你在寻找什么,并熟悉你想要解决的子问题。
根据您的说明,您尝试使用classification problem方法解决supervised learning。
我会从here中解释一下:
分类问题在于确定观察属于哪个类。
监督学习是一种“教学”机器的方式。基本上,通过示例训练算法(即:该特定对象属于类X)。经过培训,机器应该能够将获得的知识应用于新数据。
k-NN algorithm是解决此类问题的最简单算法之一。我建议你熟悉它。
你在scipy中实现了k-NN。 Here's a link to a tutorial on using it
现在,回答您的具体问题:
仅适用于双向分类(即正面或负面,是或 不...只有两个值可供选择)
k-NN可以处理任何(有限)数量的类,所以你很清楚
此外,对象属性是整数
K-NN通常使用连续的空间 - 因此您必须将它们转换为浮点数。
将属性值映射到算法空间中的点不是一个小问题(参见Data pre-processing,尤其是关于规范化,特征提取和选择的文章)