使用 SVM 预测带标签的文本

Using SVM to predict text with label

我在 csv 文件中有以下格式的数据

Name     Power   Money
Jon      Red     30
George   blue    20
Tom      Red     40
Bob      purple  10

我认为像 "jon"、"red" 和 "30 这样的值作为输入。每个输入作为标签。例如输入 [jon,george,tom,bob] 有标签 "name"。输入 [red,blue,purple] 有标签 "power"。这基本上就是我拥有训练数据的方式。我有一堆值,每个值都映射到一个标签。

现在我想使用 svm 根据我的训练数据训练模型,以准确识别给定的新输入,它的正确标签是什么。因此,例如,如果提供的输入是“444”,模型应该足够聪明,可以将其归类为 "Money" 标签。

我安装了py,也安装了sklearn. I have completed the following tutorial。我只是不确定如何准备输入数据来训练模型。

此外,我是机器学习的新手,如果我说的话听起来有误或奇怪,请指出,因为我很乐意学习正确的内容。

根据您当前问题的表述方式,您处理的不是典型的机器学习问题。目前,您有按列数据:

Name     Power   Money
Jon      Red     30
George   blue    20
Tom      Red     40
Bob      purple  10

如果用户现在输入 "Jon",通过简单的哈希映射查找,您知道它将是 "Name" 类型,例如:

hashmap["Jon"] -> "Name"

人们说这不是机器学习问题的主要原因是您的 "categorisation" 或 "prediction" 是由您的列名定义的。相反,机器学习问题(通常)将预测一些响应变量。例如,假设您问的是:

Name     Power   Money  Bought_item
Jon      Red     30     yes
George   blue    20     no
Tom      Red     40     no
Bob      purple  10     yes

我们可以建立一个模型来预测 Bought_item 使用特征 Name, Power,和 Money 使用 SVM。

您的问题应该更像是:

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

然后使用 Feature1Feature2Feature3 来预测 类别。目前你的问题没有提供足够的信息让任何人真正理解你需要什么或者你必须以这种方式重新表述它,或者考虑一种无监督的方法。

编辑:

所以这样构图:

Name     Power   Money   Label
Jon      Red     30      Foo
George   blue    20      Bar
Tom      Red     40      Foo
Bob      purple  10      Bar

OneHotEncode 名称和功率,因此现在每个名称都有一个变量,可以是 0/1。

标准化货币,使其范围大约在 -1/1 之间。

LabelEncode 您的标签,使它们成为 0、1、2、3、4、5、6 等等。

使用一对多分类器,http://scikit-learn.org/stable/modules/generated/sklearn.multiclass.OneVsRestClassifier.html