用于文本分类的svm分类器

时间:2015-05-04 11:08:18

标签: machine-learning classification svm

我正在尝试使用SVC分类器对文本进行分类。

        #self.vectorizer = HashingVectorizer(non_negative=True)
        #self.vectorizer = TfidfVectorizer(sublinear_tf=True, max_df=0.5, stop_words='english')
        self.hasher = FeatureHasher(input_type='string',non_negative=True)
        from sklearn.svm import SVC
        self.clf =  SVC(probability=True)
        for text in self.data_train.data:
            text = self.modifyQuery(text.decode('utf-8','ignore'))
            training_data.append(text)

        raw_X = (self.token_ques(text) for text in training_data)
        #X_train = self.vectorizer.transform(training_data)
        X_train = self.hasher.transform(raw_X)
        y_train = self.data_train.target
        self.clf.fit(X_train, y_train)

测试分类器:

        raw_X = (self.token_ques(text) for text in test_data)
        X_test = self.hasher.transform(raw_X)
        #X_test = self.vectorizer.transform(test_data)
        pred = self.clf.predict(X_test)
        print("pred=>", pred)
        self.categories = self.data_train.target_names
        for doc, category in zip(test_data, pred):
            print('%r => %s' % (doc, self.categories[category]))
        index = 1
        predict_prob = self.clf.predict_proba(X_test)
        for doc, category_list in zip(test_data, predict_prob):
            #print values

我尝试使用散列,功能,tfidf矢量化器,但它仍然为所有查询提供了错误的答案(具有最高datasize的类作为答案)。使用朴素贝叶时,它会根据类和输入查询提供正确的结果。

我在代码中做错了吗?

更新

我总共有8个班级,每个班级有100-200行句子。一班480线。这个课目前总是作为答案

0 个答案:

没有答案