我能够使用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。