使用随机森林进行分类审查,但帽子关键错误?

Posted

技术标签:

【中文标题】使用随机森林进行分类审查,但帽子关键错误?【英文标题】:use random forest to classifier review, but hat key error? 【发布时间】:2015-03-14 04:00:35 【问题描述】:

我在 python 中有以下代码:

from sklearn.ensemble import RandomForestClassifier
forest = RandomForestClassifier(n_estimators = 100)
forest = forest.fit( train_data_features, train["sentiment"] )

但是“sentiment”有key错误,不知道为什么,

train = pd.read_csv("labeledTrainData.tsv", header=0, delimiter="\t", quoting=3)

-Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site--packages/pandas/core/frame.py", line 1780, in __getitem__
    return self._getitem_column(key)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pandas/core/frame.py", line 1787, in _getitem_column
    return self._get_item_cache(key)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pandas/core/generic.py", line 1068, in _get_item_cache
    values = self._data.get(item)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pandas/core/internals.py", line 2849, in get
    loc = self.items.get_loc(item)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pandas/core/index.py", line 1402, in get_loc
    return self._engine.get_loc(_values_from_object(key))
  File "pandas/index.pyx", line 134, in pandas.index.IndexEngine.get_loc (pandas/index.c:3807)
  File "pandas/index.pyx", line 154, in pandas.index.IndexEngine.get_loc (pandas/index.c:3687)
  File "pandas/hashtable.pyx", line 696, in pandas.hashtable.PyObjectHashTable.get_item (pandas/hashtable.c:12310)
  File "pandas/hashtable.pyx", line 704, in pandas.hashtable.PyObjectHashTable.get_item (pandas/hashtable.c:12261)
KeyError: 'sentiment'

【问题讨论】:

【参考方案1】:

你在参加 Kaggle 比赛吗? https://www.kaggle.com/c/word2vec-nlp-tutorial/data

你确定你已经下载并解压了文件好吗?文件的第一部分内容如下:

id      sentiment       review
"5814_8"        1       "With all this stuff go

这对我有用:

>>> train = pd.read_csv("labeledTrainData.tsv", delimiter="\t")
>>> train.columns
Index([u'id', u'sentiment', u'review'], dtype='object')
>>> train.head(3)
       id  sentiment                                             review
0  5814_8          1  With all this stuff going down at the moment w...
1  2381_9          1  \The Classic War of the Worlds\" by Timothy Hi...
2  7759_3          0  The film starts with a manager (Nicholas Bell)...

您应该检查train 变量中的列设置是否正确。您应该有一个 sentiment 列。您的数据框中似乎缺少该列。

【讨论】:

是的,你完成比赛了吗?我使用原始代码阅读并很好地清理了评论,我认为最好再试一次。非常感谢。 在使用这些代码时,如果name == 'main',我们如何填写(file): train = pd.read_csv(os.path.join(os.path.dirname(file), 'data', 'labeledTrainData.tsv'), header=0, \ delimiter="\t" , quoting=3) test = pd.read_csv(os.path.join(os.path.dirname(file), 'data', 'testData.tsv'), header=0, delimiter= "\t", \quoting=3) 我不参加比赛。您的代码格式不正确,因此我很难阅读。 read_csv 的第一个参数是带有完整路径的文件名。如果你只是克隆 github github.com/wendykan/DeepLearningMovies 那么数据需要在一个名为“data”的子目录中。 感谢您的帮助,非常有帮助。我在mac os系统中通过python在终端中逐步编写代码,它运行gut,我得到了Bag_of_word model.csv,你知道我怎样才能在本地将代码完全输出为.py文件吗?当我稍后再次使用它来训练另一个数据时,我不必再次编写它。有可能吗?? 我推荐看看 IPython Notebook

以上是关于使用随机森林进行分类审查,但帽子关键错误?的主要内容,如果未能解决你的问题,请参考以下文章

渐进式随机森林?

使用 Python 的随机森林的高 OOB 错误

随机森林

随机森林中的错误:“需要至少两个类来进行分类”

在拥有分类数据时,使用 Sklearn 随机森林进行特征选择并没有给我预期的结果

何时使用随机森林