【问题标题】:python - KeyError: 'C85' when mapping a string list to numeric listpython - KeyError:将字符串列表映射到数字列表时出现'C85'
【发布时间】:2021-12-29 16:21:01
【问题描述】:

我是 python 新手,正在尝试使用 Kaggle Titanic 数据编写 RNN 程序。 https://www.kaggle.com/c/titanic/data

在尝试执行循环时,我不断收到无意义的错误 keyError: 'C85' -

for each in feature_sets:
    print(each)
    feature_sets_ints.append([vocab_to_int[word] for word in each.split()])

(对数据集中的词进行编码)

打印输出是(有错误)

3 Braund, Mr. Owen Harris male 22.0 A/5 21171 7.25 nan S
3 Braund, Mr. Owen Harris male 22.0 A/5 21171 7.25 nan S
1 Cumings, Mrs. John Bradley (Florence Briggs Thayer) female 38.0 PC 17599 71.2833 C85 C
Traceback (most recent call last):
  File "C:\Users\kfire\Desktop\NLP & Deep Leaning\CNN\RNN.py", line 53, in <module>
    feature_sets_ints.append([vocab_to_int[word] for word in each.split()])
  File "C:\Users\kfire\Desktop\NLP & Deep Leaning\CNN\RNN.py", line 53, in <listcomp>
    feature_sets_ints.append([vocab_to_int[word] for word in each.split()])
KeyError: 'C85'

Process finished with exit code 1

编辑:这是我的数据集的示例:

如您所见,数据集中有 nan 值,但我认为这不是导致问题的原因。

关于如何解决它的任何想法? 或者至少有人可以解释一下这个错误吗?

下面我只添加了有效的代码(我带来的最后一行代码是引发错误的代码)和错误消息的屏幕截图。 和错误信息

import numpy as np
import tensorflow as tf
import pandas as pd
from collections import Counter


feature_sets_train = pd.read_csv('train.csv')
# TODO: Use both datasets to make the embeddings (vocab_to_int map)
feature_sets_test = pd.read_csv('test.csv')
feature_sets_train_tests = pd.concat([feature_sets_train, feature_sets_test])
feature_sets = feature_sets_train

passengers = [' '.join(map(str,passenger[[2,3,4,5,8,9,10,11]])) for passenger in feature_sets.values]
passengers_test = [' '.join(map(str,passenger[[1,2,3,4,7,8,9,10]])) for passenger in feature_sets_test.values]

survived = [passenger[1] for passenger in feature_sets.values]
feature_sets = passengers
feature_sets_test = passengers_test
labels =  survived

passengers = [' '.join(map(str,passenger[[0,1,2,3,4,5,7,8,9,11]])) for passenger in feature_sets_train_tests.values]

all_text = ' '.join(passengers)
words = all_text.split()

counts = Counter(words)
vocab = sorted(counts, key=counts.get, reverse=True)
vocab_to_int = {word: ii for ii, word in enumerate(vocab, 1)}

feature_sets_ints = []
feature_sets_ints_test = []
print(feature_sets[0])
for each in feature_sets:
    feature_sets_ints.append([vocab_to_int[word] for word in each.split()])

【问题讨论】:

  • 请发布您的数据样本
  • 感谢您的意见。请查看已编辑的帖子。

标签: python pandas csv recurrent-neural-network


【解决方案1】:

添加打印以进行调试:

for each in feature_sets:
    print (each)
    feature_sets_ints.append([vocab_to_int[word] for word in each.split()]

这将向您显示卡住的功能集。

【讨论】:

  • 我按照您的建议添加打印并编辑我的帖子。
  • 知道为什么会一直这样吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-06
  • 1970-01-01
  • 1970-01-01
  • 2012-01-17
  • 2019-08-29
  • 2021-08-15
相关资源
最近更新 更多