首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python3:未能加载MovieLens数据集: KeyError:'1‘

python3:未能加载MovieLens数据集: KeyError:'1‘
EN

Stack Overflow用户
提问于 2017-06-02 15:18:35
回答 1查看 225关注 0票数 0

我读过Programming.Collective.Intelligence一书中的例子,不知道为什么会有keyError .

u.item

代码语言:javascript
复制
movie_id | title | ...

1|Toy Story (1995)|...
2|GoldenEye (1995)|...
...

u.data

代码语言:javascript
复制
user movieid rating timestamp
196 242 3   881250949
186 302 3   891717742
...

代码

代码语言:javascript
复制
def loadMovieLens(path='E:/project/datamining/collective/chapter2/ml-100k'):
  # Get movie titles
  movies = {}
  for line in open(path+'/u.item', encoding='utf-8'):
      (id, title) = line.split('|')[0:2]
      movies[id] = title
  # load data

  prefs = {}
  for line in open(path+'/u.data',encoding='utf-8'):
      (user,movieid,rating,ts)=line.split('\t')
      prefs.setdefault(user,{})
      prefs[user][movies[movieid]] = float(rating)
  return prefs
prefs = loadMovieLens()
代码语言:javascript
复制
Traceback (most recent call last):
File "E:\project\datamining\collective\chapter2\recommendations.py", line 181, in <module>
  prefs = loadMovieLens()
File "E:\project\datamining\collective\chapter2\recommendations.py", line 179, in loadMovieLens
  prefs[user][movies[movieid]] = rating
KeyError: '1'
EN

回答 1

Stack Overflow用户

发布于 2017-06-25 03:09:51

尝试错误处理。类似于:

代码语言:javascript
复制
errors = 0
    for line in open(path + '/ratings.txt'):
        try:
            (user, movieid, rating, ts) = line.split('\t')
            prefs.setdefault(user, {})
            prefs[user][movies[movieid]] = float(rating)
        except KeyError:
            errors+=1

    return prefs
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44332305

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档