2017-06-02 15 views
0

を私はProgramming.Collective.Intelligenceブックに例を読み、KeyError例外があるなぜ...のpython3:KeyError例外:MovieLensデータセットの読み込みに失敗しました '1'

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' 

答えて

0

エラー処理をしてみてください。 のようなもの:

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 
関連する問題