用于kaggle文本数据集上的训练模型的python traceback keyerror代码

问题描述

我是nlp的新手,我将这个项目放在kaagle上作为我的第一个项目。 链接:https://www.kaggle.com/Cornell-University/arxiv

正如我所说的那样,这是我的新手,也是我第一次使用某些工具和im tryin在下面运行代码,但是我遇到了一个问题。 这是代码:

read data
data = data[['id','title','abstract','categories']]
categories = list(set([i for l in [x.split(' ') for x in data['categories']] for i in l]))

train,test = train_test_split(data,random_state=42,test_size=0.33,shuffle=True)
X_train = train.abstract
X_test = test.abstract

SVC_pipeline = Pipeline([
                ('tfidf',TfidfVectorizer(stop_words=stop_words)),('clf',OneVsRestClassifier(LinearSVC(),n_jobs=1)),])


for category in categories:
    print('... Processing {}'.format(category))
    # train the model using X_dtm & y
    SVC_pipeline.fit(X_train,train[category])
    # compute the testing accuracy
    prediction = SVC_pipeline.predict(X_test)
    print('Test accuracy is {}'.format(accuracy_score(test[category],prediction)))

但是每次它保持在:

SVC_pipeline.fit(X_train,train[category])

并说有一个keyError:'astro-ph.HE',它是类别中的第一个类别。 我可能一直是一个简单的错误,但是我在这里呆了几个小时。 tnx

解决方法

如果您只想进行多类分类,那么下面的代码就足够了。

# no loop with categories
SVC_pipeline.fit(X_train,train.category)

只能按列名(id,标题,摘要,类别)对pandas数据框进行下标。 但是您使用类别列的值。因此发生了关键错误。

如果要按值过滤数据框,请使用以下代码。

train[train[‘category’] == category]

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...