【问题标题】:Sklearn (NLP text classifier newbie) - issue with shape and vectorizer, X and Y not matching upSklearn(NLP 文本分类器新手) - 形状和矢量化器的问题,X 和 Y 不匹配
【发布时间】:2020-02-27 01:04:45
【问题描述】:

我想创建一个文本分类器,根据我拥有的标记数据集查看研究摘要并确定它们是否专注于获得护理。数据源是一个 Excel 电子表格,包含三个字段(project_number、abstract 和 accessclass)和 326 行摘要。 accessclass 为 1 表示访问相关,0 表示不相关(不确定这是否相关)。无论如何,我尝试按照教程进行操作,希望通过添加我自己的数据使其相关,但我的 X 和 Y 数组存在一些问题。任何帮助表示赞赏。

import pandas as pd
import nltk
from nltk.corpus import stopwords
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.model_selection import train_test_split
from sklearn import naive_bayes
from sklearn.metrics import roc_auc_score

df = pd.read_excel("accessclasses.xlsx")
df.head()

#TFIDF vectorizer
stopset = set(stopwords.words('english'))
vectorizer = TfidfVectorizer(use_idf=True, lowercase=True, 
strip_accents='ascii', stop_words=stopset)

y = df.accessclass
x = vectorizer.fit_transform(df)

print(x.shape)
print(y.shape)
#above and below seem to be where the issue is.   
x_train, x_test, y_train, y_test = train_test_split(x, y) 

【问题讨论】:

    标签: python scikit-learn nlp text-classification sklearn-pandas


    【解决方案1】:

    您正在使用整个数据框来编码您的预测器。请记住在转换中只使用摘要(您也可以先拟合语料库字典,然后再进行转换)。

    这里有一个解决方案:

    y = df.accessclass
    x = vectorizer.fit_transform(df.abstract)
    

    其余的看起来还可以。

    【讨论】:

    • 谢谢,非常感谢。效果很好。
    猜你喜欢
    • 1970-01-01
    • 2019-07-21
    • 2021-07-14
    • 1970-01-01
    • 2014-09-15
    • 2023-03-17
    • 1970-01-01
    • 2021-08-26
    • 2019-07-06
    相关资源
    最近更新 更多