【问题标题】:I can't get my test accuracy to increase in a sentiment analysis我无法在情绪分析中提高测试准确性
【发布时间】:2020-07-24 23:41:41
【问题描述】:

我不确定这是否是正确的地方,但我的测试准确度始终在 0.40 左右,而我可以将训练集准确度提高到 1.0。我正在尝试对特朗普的推文进行情绪分析,我用正面、负面或中性极性注释了每条推文。我希望能够根据我的模型预测新数据的极性。我尝试了不同的模型,但 SVM 似乎给了我最高的测试精度。我不确定为什么我的数据模型准确度如此之低,但希望得到任何帮助或指导。

trump = pd.read_csv("trump_data.csv", delimiter = ";")

#drop all nan values
trump = trump.dropna()
trump = trump.rename(columns = {"polarity,,,":"polarity"})

#print(trump.columns)
def tokenize(text):
   ps = PorterStemmer()
   return [ps.stem(w.lower()) for w in word_tokenize(text)    


X = trump.text

y = trump.polarity
X_train, X_test, y_train, y_test = train_test_split(X,y, test_size = .2, random_state = 42)


svm = Pipeline([('vectorizer', TfidfVectorizer(stop_words=stopwords.words('english'), 
tokenizer=tokenize)), ('svm', SGDClassifier(loss='hinge', penalty='l2',alpha=1e-3, 
random_state=42,max_iter=5, tol=None))])

svm.fit(X_train, y_train)


model = svm.score(X_test, y_test)
print("The svm Test Classification Accuracy is:", model )
print("The svm training set accuracy is : {}".format(naive.score(X_train,y_train)))
y_pred = svm.predict(X)

这是数据集文本列中字符串之一的示例

“.@repbilljohnson 国会必须站出来推翻特朗普总统的歧视性#eo banning #immigrants & #refugees #oxfam4refugees”

Data set

【问题讨论】:

    标签: python machine-learning nltk svm text-classification


    【解决方案1】:

    您为什么使用naive.score?我认为这是copy-paste 错误。以下是您可以遵循的几个步骤。

    1. 确保您有足够的数据点并对其进行清理。 Cleaning 数据集是数据科学中不可避免的过程。
    2. 使用ngram_range, max_df, min_df, max_features 等参数,同时使用TfidfVectorizerCountVectorizer 对文本进行特征化。您也可以尝试使用 Word2Vec 进行嵌入。
    3. 使用GridSearchRandomizedSearchCValpha, penalty 和其他变量进行超参数调优。确保您当前是CV。有关详细信息,请参阅文档
    4. 如果数据集是imbalanced,则尝试使用其他矩阵,例如log-loss, precision, recall, f1-score, etc。更多信息请参考this
    5. 通过检查训练错误和测试错误,确保您的模型既不是 overfitted 也不是 underfitted

    除了SVM,也可以试试Logistic RegressionNVRF等传统模型。如果数据点比较多,可以试试深度学习模型。

    【讨论】:

      【解决方案2】:

      结果我需要清理极性数据集,因为它具有诸如“正”、“正”和“正”等值,因此没有将它们注册为不同,所以我只是删除了所有“,”从列。

      【讨论】:

        猜你喜欢
        • 2017-12-31
        • 2021-06-30
        • 2021-02-20
        • 2019-10-06
        • 1970-01-01
        • 2020-02-12
        • 2017-10-09
        • 1970-01-01
        • 2016-11-27
        相关资源
        最近更新 更多