Я строю систему рекомендаций, используя пакет surprise
и Python 3.6
.У меня есть класс с именем MovieLens, который загружает набор данных, а также выполняет некоторую предварительную обработку данных.Функция os.chdir()
работает правильно при выполнении скрипта, но выдает ошибку при выполнении в консоли ipython.Вот мой класс MovieLens:
import csv
import sys
import re
from surprise import Dataset
from surprise import Reader
from collections import defaultdict
import numpy as np
#__file__ = 'MovieLens.py'
class MovieLens:
movieID_to_name = {}
name_to_movieID = {}
ratingsPath = '../ml-latest-small/ratings-mine.csv'
moviesPath = '../ml-latest-small/movies-mine.csv'
def loadMovieLensLatestSmall(self):
os.chdir(os.path.dirname(sys.argv[0]))
print(os.getcwd())
ratingsDataset = 0
self.movieID_to_name = {}
self.name_to_movieID = {}
reader = Reader(line_format='user item rating timestamp', sep=',', skip_lines=1)
ratingsDataset = Dataset.load_from_file(self.ratingsPath, reader=reader)
with open(self.moviesPath, newline='', encoding='ISO-8859-1') as csvfile:
movieReader = csv.reader(csvfile)
next(movieReader) #Skip header line
for row in movieReader:
movieID = int(row[0])
movieName = row[1]
self.movieID_to_name[movieID] = movieName
self.name_to_movieID[movieName] = movieID
return ratingsDataset
Мой рабочий каталог: F:\RecSys-Materials\Framework
, а наборы данных находятся в каталоге: F:\RecSys-Materials\ml-latest-small
И моя анаконда установлена в каталоге: C:\Users\Samarth\Anaconda3
Я посмотрел на аргумент sys.argv
, и он возвращает пустой список.я также пытался использовать os.path.dirname(__file__)
, но spyder не распознает переменную __file__
.
Я понимаю, что os.path.dirname()
должен быть пройден путь.Так почему же это работает, когда я выполняю сценарий?Что мне здесь не хватает?