【问题标题】:Using SVM to predict text with label使用 SVM 预测带有标签的文本
【发布时间】:2018-05-10 04:16:57
【问题描述】:

我在 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。我也完成了以下tutorial。我只是不确定如何准备输入数据来训练模型。

另外,我是机器学习的新手,如果我说了一些听起来错误或奇怪的话,请指出,因为我很乐意学习正确的。

【问题讨论】:

  • 正如您所解释的,最好只搜索数据中的类别,而不是对其进行机器学习。此外,当相同的字符串出现在两个或多个类别中时会发生什么?就像紫罗兰一样,它可能是一种颜色或名称。
  • 您应该更新您的问题。现在看起来你有 6 个类,它是一个简单的 hashmap 查找而不是 ML 问题。尤其是没有MWE,很难给你有用的建议。
  • @VivekKumar 是的,我明白你的意思。我已经编辑了这个问题,请告诉我这是否更有意义。
  • @jonnybazookatone 感谢您对我更新问题的宝贵反馈,如果这更有意义或需要更多详细信息,请告诉我。
  • 仍然不相信这需要机器学习。无论如何,请在进一步评论之前添加所有可能列的示例。

标签: machine-learning scikit-learn svm supervised-learning


【解决方案1】:

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

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

如果用户现在输入“Jon”,通过简单的 hash-map 查找,您知道它将输入“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 使用 NamePowerMoney 特征构建一个模型来预测 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

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

编辑

所以这样构图:

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 等等。

使用 One vs. All 分类器,http://scikit-learn.org/stable/modules/generated/sklearn.multiclass.OneVsRestClassifier.html

【讨论】:

  • 感谢您的反馈,我刚刚根据您的反馈编辑了我的问题。我相信这是一个有监督的学习问题,因为我将拥有一些带有标签的数据,并且我想训练一个模型来根据以前的学习来预测新的数据点。如果您需要我进一步澄清这一点,请告诉我。
  • 您提供的信息太少,无法解决广泛的问题。您有一个输入功能,有 3 个可能的标签。您不需要 ML 方法来知道“444”是一个整数,因此它就是金钱。与 Power 一样,你有一个总是意味着权力的颜色列表吗?如果是这样,您可以对所有可能的颜色做一个简单的哈希图,将其分类为一种颜色。
  • 在解决问题时,我肯定会有超过 3 个标签。为了简单起见,我只是决定坚持使用 3。提供的类别已简化,因此我可以专注于为 svm 模型准备数据的步骤。如果这是我真正的问题,那么我同意 hashmap 是要走的路。
  • 感谢您的编辑,现在看起来更清楚了。所以后续问题是当你说 onehotencode 名称和权力时,这是否意味着我可以传递原始文本或者我必须在使用 onehotencode 生成变量之前转换文本
  • 你可以使用这样的东西; pandas.pydata.org/pandas-docs/stable/generated/…
猜你喜欢
  • 2018-03-18
  • 1970-01-01
  • 1970-01-01
  • 2016-02-18
  • 2018-09-05
  • 2016-01-30
  • 2018-08-12
  • 2013-03-04
  • 2017-12-07
相关资源
最近更新 更多