【问题标题】:python3: failed to load MovieLens dataset: KeyError: '1'python3:无法加载 MovieLens 数据集:KeyError:'1'
【发布时间】:2017-11-04 01:32:43
【问题描述】:

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

u.item

movie_id | title | ...

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

u.data

user movieid rating timestamp
196 242 3   881250949
186 302 3   891717742
...

代码

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()

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'

【问题讨论】:

    标签: dataset data-mining recommendation-engine


    【解决方案1】:

    尝试错误处理。 类似:

    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
    

    【讨论】:

      猜你喜欢
      • 2014-02-10
      • 2019-01-23
      • 2015-06-08
      • 2020-12-23
      • 1970-01-01
      • 2017-04-12
      • 1970-01-01
      • 2021-06-20
      • 1970-01-01
      相关资源
      最近更新 更多