伙伴们,我正在尝试使用sklearn(或scikit-learn)库进行机器学习,但总是遇到一个错误:
TypeError: cannot perform reduce with flexible type
错误发生在我代码的以下行:
X=[['SALES',2,4],['SALES',3,1],['TECHNICAL',9,1]];Y=['NICE','NOT NICE','AWESOME']classifier.fit(np.array(X),np.array(Y))
如果我将’SALES’和’TECHNICAL’这样的分类值转换为数字,如0和1,那么它就能正常工作。
X=[[0,2,4],[0,3,1],[1,9,1]];Y=['NICE','NOT NICE','AWESOME']classifier.fit(np.array(X),np.array(Y))
我的问题是,我是否必须将特征列表中所有字符串类型的分类值转换为数字?我知道这可能是一个非常愚蠢的问题,但请帮帮我吧….
回答:
输入到scikit-learn
估计模型中的数据必须始终是数值型的numpy数组。
所以,是的,你必须在将分类字符串特征输入到sklearn之前将其转换为数字(可以是序数或虚拟化)。