使用Python进行多种特征类型的机器学习

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

Word/phrase Length  '2-letter substring'    'First letter'  'With space?'       Labeltake action 10  ['ta', 'ak', 'ke', 'ac', 'ct', 'ti', 'io', 'on']    t   Yes     Asure    4   ['su', 'ur', 're']  s   No      AThat wasn't     10  ['th', 'ha', 'at', 'wa', 'as', 'sn', 'nt']  t   Yes     Bsimply  6   ['si', 'im', 'mp', 'pl', 'ly']  s   No      Ca lot of    6   ['lo', 'ot', 'of']  a   Yes     Dsaid    4   ['sa', 'ai', 'id']  s   No      B

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


回答:

大多数机器学习算法使用数字进行处理,因此你需要将分类值和字符串转换为数字。

流行的Python机器学习库scikit-learn有一整章专门用于数据预处理。对于“是/否”,处理起来很简单 – 只需用0/1代替即可。

其中还解释了使用他们的分类数据预处理过程,利用他们的OneHotEncoder

当你处理文本时,你也需要以合适的方式转换数据。文本的常见特征提取策略之一是tf-idf得分,我在这里写了一个教程

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注