使用sklearn通过类对字符串进行分类

时间:2016-06-24 14:42:29

标签: python string scipy scikit-learn gaussian

我在以sklearn接受的形式呈现我的数据时遇到问题 我的原始数据是几百个字符串,它们被分为5个类中的一个,我列出了我想要分类的字符串,以及它们各自类的并行列表。我正在使用GaussianNB()

示例数据:

For such a large, successful business, I really feel like they need to be 
either choosier in their employee selection or teach their employees to 
better serve their customers.|||Class:4

代表给定的“特征”和分类

当然,字符串本身必须在分类器中使用之前转换为向量,我试图使用DictVector来执行此任务

dictionaryTraining = convertListToSentence(data)
vec = DictVectorizer()
print(dictionaryTraining)
vec.fit_transform(dictionaryTraining)

然而为了todo它,我必须将数据的实际分类附加到字典中,否则我得到错误'str' object has no attribute 'items'我明白这是因为.fit_transform需要功能和索引,但我不完全理解indice的目的

fit_transform(X[, y])   Learn a list of feature name -> indices mappings and transform X.

我的问题是,如何获取字符串列表以及表示其分类的数字列表,并将这些字符串提供给gaussianNB()分类器,以便将来可以使用类似字符串表示它它会估计字符串类吗?

1 个答案:

答案 0 :(得分:1)

由于您的输入数据采用原始文本格式,而不是字典格式,如{" word":number_of_occurrences,}我相信您应该使用CountVectorizer将输入文本分割为空白区域并将其转换为您需要的输入向量。

这种转变的一个简单例子是:

from sklearn.feature_extraction.text import CountVectorizer
corpus = ['This is the first document.', 'This is the second second document.', 
          'And the third one.', 'Is this the first document?',]
x = CountVectorizer().fit_transform(corpus)
print x.todense() #x holds your features. Here I am only vizualizing it