我在csv文件中有以下格式的数据
Name Power Money
Jon Red 30
George blue 20
Tom Red 40
Bob purple 10
我认为像" jon"," red"和" 30作为输入。每个输入作为标签。例如输入[jon,george,tom,bob]有标签" name"。输入[红色,蓝色,紫色]有标签" power"。这基本上就是我训练数据的方式。我有一堆值,每个值都映射到一个标签。
现在我想使用svm根据我的训练数据训练模型,以准确识别给定的新输入什么是正确的标签。例如,如果提供的输入是" 444" ,该模型应该足够聪明,可以将其归类为" Money"标签
我已经安装了py并且还安装了sklearn。我也完成了以下tutorial。我只是不确定如何准备输入数据来训练模型。
如果我说了一些听起来不对劲或奇怪的东西,我也是机器学习的新手,请指出它,因为我很乐意学习正确的。
答案 0 :(得分:1)
根据您当前的问题如何制定,您不会处理典型的机器学习问题。目前,您有列式数据:
Name Power Money
Jon Red 30
George blue 20
Tom Red 40
Bob purple 10
如果用户现在输入" Jon",您知道它将是" Name",通过简单的哈希映射查找,例如:
hashmap["Jon"] -> "Name"
人们说这不是机器学习问题的主要原因是你的分类"或"预测"由列名定义。机器学习问题(通常)将预测一些响应变量。例如,想象一下你已经问过这个:
Name Power Money Bought_item
Jon Red 30 yes
George blue 20 no
Tom Red 40 no
Bob purple 10 yes
我们可以使用SVM使用功能名称,电源和 Money 来构建模型以预测 Bought_item
你的问题看起来更像是:
Feature1 Feature2 Feature3 Category
1.0 foo bar Name
3.1 bar foo Name
23.4 abc def Money
22.22 afb dad Power
223.1 dad vxv Money
然后使用 Feature1 , Feature2 和 Feature3 来预测类别。目前,您的问题没有为任何人提供足够的信息,让他们真正了解您的需求或您需要以这种方式重新制定,或考虑采用无监督的方法。
修改强>:
所以以这种方式框架:
Name Power Money Label
Jon Red 30 Foo
George blue 20 Bar
Tom Red 40 Foo
Bob purple 10 Bar
OneHotEncode名称和电源,因此您现在每个名称都有一个变量,可以是0/1。
标准化Money,使其范围介于大约-1/1之间。
LabelEncode您的标签,使它们为0,1,2,3,4,5,6等。
使用One vs. All分类器http://scikit-learn.org/stable/modules/generated/sklearn.multiclass.OneVsRestClassifier.html。