【问题标题】:Machine learning with multiple feature types in pythonpython中具有多种特征类型的机器学习
【发布时间】:2015-12-17 13:49:37
【问题描述】:

我能够在 Python 中使用 scikit-learn 和 NLTK 模块进行一些简单的机器学习。但是在使用具有不同值类型(数字、字符串列表、是/否等)的多个特征进行训练时,我遇到了问题。在以下数据中,我有一个单词/短语列,我在其中提取信息并创建相关列(例如,长度列是“单词/短语”的字符长度)。标签列就是标签。

Word/phrase Length  '2-letter substring'    'First letter'  'With space?'       Label
take action 10  ['ta', 'ak', 'ke', 'ac', 'ct', 'ti', 'io', 'on']    t   Yes     A
sure    4   ['su', 'ur', 're']  s   No      A
That wasn't     10  ['th', 'ha', 'at', 'wa', 'as', 'sn', 'nt']  t   Yes     B
simply  6   ['si', 'im', 'mp', 'pl', 'ly']  s   No      C
a lot of    6   ['lo', 'ot', 'of']  a   Yes     D
said    4   ['sa', 'ai', 'id']  s   No      B

我应该把它们编成一本字典,然后使用 sklearn 的DictVectorizer 将它们保存在工作记忆中吗?然后在训练机器学习算法时把这些特征当作一个X向量?

【问题讨论】:

  • 这个问题你解决了吗?我有一个非常相似的,但仍在尝试找到解决方案。我也想把我的特征转换成字典

标签: python machine-learning scikit-learn nltk feature-extraction


【解决方案1】:

大多数机器学习算法都使用数字,因此您可以将分类值和字符串转换为数字。

流行的 Python 机器学习库 scikit-learn 具有 whole chapter dedicated to preprocessing of the data。使用“是/否”,一切都很简单 - 只需输入 0/1 即可。

在许多其他重要的事情中,它解释了categorical data preprocessing 使用他们的OneHotEncoder 的过程。

在处理文本时,您还必须以合适的方式转换数据。文本的常见特征提取策略之一是tf-idf 得分,我写了一个tutorial here

【讨论】:

  • 我实际上已经阅读了 scikit-learn 教程,但仍然对如何处理我的数据感到有些困惑。我用 OneHotEncoder 完成的教程示例是每一行包含一个列的文本类别的单个值,但是对于我的子字符串列,每行包含多个文本实体,我仍然可以使用 OneHotEncoder 来转换这些子字符串吗?跨度>
  • 而且由于我所经历的大多数教程示例只涉及一两个特征,我想知道在我对所有特征进行转换和标准化之后,我是否将所有特征分组到字典中并在插入训练算法之前将其视为单个 X 向量?创建这个大字典效率高还是降低了计算速度?
  • @KubiK888 是的,你可以使用 OneHotEncoder。但真正的答案在很大程度上取决于您之后想对数据做什么。例如,有时您可以在没有任何转变的情况下相处。看看使用nltk.NaiveBayesClassifierthis example。我建议你从这个问题退后一步。决定你想对你的数据做什么,试着用 scikit learn 来做,如果你有问题,写一个新的问题来解释你想做什么,你做了什么,你不喜欢什么。
猜你喜欢
  • 1970-01-01
  • 2012-03-28
  • 2020-07-23
  • 2019-11-07
  • 2018-03-08
  • 1970-01-01
  • 2021-01-14
  • 1970-01-01
  • 2019-07-14
相关资源
最近更新 更多