Python Scikit SGD分类器,哈希矢量器精度保持在58%

Python Scikit SGD分类器,哈希矢量器精度保持在58%,python,machine-learning,scikit-learn,Python,Machine Learning,Scikit Learn,我正在尝试机器学习,并一直在使用基于python的Scikit库 我希望解决一个“分类”问题,其中一个文本块(比如1k-2k单词)被分类为一个或多个类别。为此,我学习scikit已有一段时间了 由于我的数据范围在200-300万之间,因此我使用了SGDClassifer和HashingVectorizer,目的是使用部分拟合学习技术,编码如下: import pandas as pd from sklearn.linear_model import SGDClassifier from skl

我正在尝试机器学习,并一直在使用基于python的Scikit库

我希望解决一个“分类”问题,其中一个文本块(比如1k-2k单词)被分类为一个或多个类别。为此,我学习scikit已有一段时间了

由于我的数据范围在200-300万之间,因此我使用了SGDClassifer和HashingVectorizer,目的是使用部分拟合学习技术,编码如下:

import pandas as pd
from sklearn.linear_model import  SGDClassifier
from sklearn.feature_extraction.text import HashingVectorizer
import numpy as np
from sklearn.externals import joblib
import copy

data = pd.read_csv(
    open('train_shuffled.csv'), error_bad_lines=False)
data_all = copy.deepcopy(data)
target = data['category']
del data['category']

cls = np.unique(target)
model = SGDClassifier(loss='log', verbose=1)
vect = HashingVectorizer(stop_words='english', strip_accents='unicode', analyzer='word')
loop = len(target) / 100
for passes in range(0, 5):
    count, r = 0, 0
    print("Pass " + str(passes + 1))
    for q in range(0, loop):
        d = nltk.word_tokenize(data['content'][r:r + 100])
        d = vect.fit_transform(d)
        t = np.array(target[r:r + 100])
        model.partial_fit(d, t, cls)
        r = r + 100
    data = copy.deepcopy(data_all)
    data = data.iloc[np.random.permutation(len(data))]
    data = data.reset_index(drop=True)
    target = data['category']
    del data['category']

print(model)
joblib.dump(model, 'Model.pkl')
joblib.dump(vect, 'Vectorizer.pkl')
在学习过程中,我在stack上读到了一个答案,手动将每次迭代的训练数据随机化,生成更好的模型

使用带有默认参数的分类器和向量器,我得到了约58.4%的准确度分数。从那以后,我尝试为矢量器和分类器设置不同的参数,但精度没有提高

有没有人能告诉我,如果我一直在做什么,或者应该做什么来提高模型分数

我们将非常感谢您的帮助

谢谢 3) 试试不同的型号。并非所有模型都能解决所有问题。尝试使用一组更简单的模型和某种决策函数来获取这些模型的输出并进行预测。有些在eSemble模块中,但您可以使用投票分类器制作自己的分类器

但到目前为止,最好也是最重要的事情是看数据。查找分类器性能不佳的示例。为什么表现不好?你能从阅读中对其进行分类吗(即,期望一个算法对该文本进行分类是否合理?)。如果可以分类,模型会遗漏什么


所有这些都将有助于指导下一步的工作。

GridSearchCV没有实现部分拟合方法,我之所以使用该方法,是因为我的训练数据集太大。对于特征选择,我已经对训练数据进行了预处理,删除了所有不重要的术语,并对每个单词进行词干分析。你能特别指出,是什么原因导致我的模型的准确率停留在~58%左右?谢谢不,我不能,因为这可能是一千个原因之一。你怎么知道58%不是最适合你的问题?我最后一段的结果是什么?我不能帮你解决这个问题,你得自己解决。