인프런 커뮤니티 질문&답변

Jongsoo Park님의 프로필 이미지
Jongsoo Park

작성한 질문수

Python을 이용한 개인화 추천시스템 | 추천알고리즘 | 추천인공지능

이웃을 고려한 CF

실습 중 에러사항이 발생했습니다

해결된 질문

작성

·

1.1K

1

강사님 안녕하세요
 
제가 가지고 있는 데이트로 실습을 하는 중 다음과 같은 에러가 발생했습니다.
 
우선 인기추천 방식부터 적용을 하는데
데이터는 본 강의에서 실습하는 형태와 동일하게 구성하여 실습을 진행하고 있으며
코드와 에러는 아래와 같습니다.
 
에러사항이 조치가 되지 않는데..도움 한번 부탁 드립니다..
 
<코드>
# 인기 제품 방식 추천 Function
def recom_courses(n_courses):
  course_mean=ratings.groupby(['course_id'])['rating'].mean()
  course_sort=course_mean.sort_values(ascending=False)[:n_courses]
  recom_courses=courses.loc[course_sort.index]
  recommendations=recom_courses['title']
  return recommendations

recom_courses(5)
 
<에러>
KeyError                                  Traceback (most recent call last)
<ipython-input-48-80ad3b41fd0f> in <module>()
      7   return recommendations
      8 
----> 9 recom_courses(5)


5 frames
/usr/local/lib/python3.7/dist-packages/pandas/core/indexing.py in _validate_read_indexer(self, key, indexer, axis, raise_missing)
   1296             if missing == len(indexer):
   1297                 axis_name = self.obj._get_axis_name(axis)
-> 1298                 raise KeyError(f"None of [{key}] are in the [{axis_name}]")
   1299 
   1300             # We (temporarily) allow for some missing keys with .loc, except in

KeyError: "None of [Index(['CEL45972', 'CEL51557', 'CPL30203', 'CEL51398', 'CPL57907'], dtype='object', name='course_id')] are in the [index]"
 

답변 2

0

Jongsoo Park님의 프로필 이미지
Jongsoo Park
질문자

아래와 같이 전처리 하였습니다~!
 
import os
import pandas as pd
import numpy as np
users = pd.read_csv('drive/MyDrive/capstone/users.csv', encoding='UTF-8')
ratings = pd.read_csv('drive/MyDrive/capstone/ratings.csv', encoding='UTF-8')
courses = pd.read_csv('drive/MyDrive/capstone/courses.csv', encoding='UTF-8')
 
import os
import pandas as pd
import numpy as np
 
 
 
# 인기 제품 방식 추천 Function
def recom_courses(n_courses):
  courses = courses.set_index('course_id')
  course_mean=ratings.groupby(['course_id'])['rating'].mean()
  course_sort=course_mean.sort_values(ascending=False)[:n_courses]

  recom_courses=courses.loc[course_sort.index]
  recommendations=recom_courses['title']
  return recommendations

recom_courses(5)
 
 
 
거친코딩님의 프로필 이미지
거친코딩
지식공유자

제가 생각하기에는 csv파일을 그대로 읽고 적용하셔서 인덱스 처리가 안된듯 싶습니다 :) 

그래서 전에 말씀드린 것 처럼 course 데이터의 인덱스 지정 한번 해봐주시면 감사하겠습니다.

-거친코딩 드림-

Jongsoo Park님의 프로필 이미지
Jongsoo Park
질문자

오 해결되었습니다!

감사합니다!!

거친코딩님의 프로필 이미지
거친코딩
지식공유자

다행입니다.!!

학습자님의 성공적인 학습을 기원합니다.

감사합니다.

-거친코딩 드림-

0

거친코딩님의 프로필 이미지
거친코딩
지식공유자

안녕하세요.!
강의 보시면서 열심히 학습해주셔서 감사합니다.

작업해주신 결과에 에러를 보면 학습자님이 가지고 계시는 데이터의 인덱스가 없다고 나와있네요!

앞에 데이터 처리에 관해서는 올려주시지 않아서 확인이 어렵지만,

제가 생각하기에는 

courses = courses.set_index('course_id')를 해주시면 될 것 같습니다 :) !!

혹시 위 방법으로도 해결 되지 않으신다면

앞 전처리 과정(데이터 로드 ~ 처리)까지 코드 올려주시면 리뷰 해보겠습니다!

감사합니다.

-거친코딩 드림- 

Jongsoo Park님의 프로필 이미지
Jongsoo Park

작성한 질문수

질문하기