我能够使用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
把它们保存在工作记忆中吗?然后在训练ML算法时将这些特征视为一个X向量?
大多数机器学习算法与数字一起工作,所以你可以将你的分类值和字符串转换成数字。
流行的python机器学习库scikit-learn有一整章专门用于数据预处理。有了"是/否",一切都很简单——只要用0/1代替它。
在许多重要的事情中,它解释了使用他们的OneHotEncoder分类数据预处理的过程。
在处理文本时,还必须以合适的方式转换数据。文本的常见特征提取策略之一是tf-idf分数,我在这里写了一个教程。