묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결LLM 데이터 분석 - 웹 크롤링부터 추천 시스템까지
YouTubeSearchTool 에러
YouTubeSearchTool 사용시requests.exceptions.HTTPError: 403 Client Error:Forbidden for url: https://api.ydc-index.io/search?query= 에러가 납니다.
-
미해결LLM 데이터 분석 - 웹 크롤링부터 추천 시스템까지
selenium chrome driver click시 화면이 공백으로 나옵니다.
from selenium.webdriver.common.by import Byeconomy = driver.find_element(By.CSS_SELECTOR,'#gnbContent > div > ul > li:nth-child(4) > a > span')economyeconomy.click()driver.implicitly_wait(5)시 화면이 공백으로 나오네요
-
미해결Python을 이용한 개인화 추천시스템 | 추천알고리즘 | 추천인공지능
코드 공유 관련 부탁드립니다.
안녕하세요. 좋은 강의 감사합니다.직접 타이핑 해보라는 의미에서 코드 공유가 어렵다고 하셨는데요. 아래 글들을 보니 많은 분들이 코드 공유를 요청하셨습니다. 시간 부족으로 눈으로만 학습하게 되는데,직접 코랩에서 해볼 수 있도록 다시 한번 코드 공유 고려해 주시면 감사하겠습니다. 부탁드려요!
-
미해결LLM 데이터 분석 - 웹 크롤링부터 추천 시스템까지
강의동영상이 잘못 업로드 된거 같아요
안녕하세요. 강의 듣던 중에 제목과 다른 영상이 있어서 문의 드려요.섹션 5 - 프로젝트 2"Youtube 동영상 댓글분석 - LLM 모델로 감성 분류 및 평점 예측" 동영상이"Youtube 상품 리뷰 영상에서 상품정보를 추출, 요약" 과 동일한 영상입니다.잘못 업로드 된거 같아요확인 부탁드립니다.
-
미해결LLM 데이터 분석 - 웹 크롤링부터 추천 시스템까지
LLM 기능 사용시에 라이브러리 에러 문제
안녕하세요, 선생님 강의 잘 듣고 있습니다.공유 해 주신 코드를 실행 할 때 LLM 기능 사용할 때 에러가 발생되서 실행이 되지 않습니다. 에러코드 첨부 드립니다. ---------------------------------------------------------------------------RateLimitError Traceback (most recent call last)Cell In[14], line 29 26 # Chain 27 llm_chain = prompt | llm | output_parser---> 29 response = llm_chain.invoke({"text": text}) 31 responseFile ~\miniconda3\envs\study\Lib\site-packages\langchain_core\runnables\base.py:2499, in RunnableSequence.invoke(self, input, config) 2497 try: 2498 for i, step in enumerate(self.steps):-> 2499 input = step.invoke( 2500 input, 2501 # mark each step as a child run 2502 patch_config( 2503 config, callbacks=run_manager.get_child(f"seq:step:{i+1}") 2504 ), 2505 ) 2506 # finish the root run 2507 except BaseException as e: 생략 ~ 해결 방법이 있을까요?
-
미해결LLM 데이터 분석 - 웹 크롤링부터 추천 시스템까지
강의에서 소스코드는 어디서 볼 수 있을까요?
찾아봤는데 못찾겠어서 질문 드립니다,,,,
-
해결됨Python을 이용한 개인화 추천시스템 | 추천알고리즘 | 추천인공지능
section 4 네번째 강의에서 pd.merge(x_train, users) 에러 발생
merged_ratings = pd.merge(x_train, users) 문장을 실행하면 아래와 같은 Error가 출력됩니다. "No common columns to perform merge on. "pandas.errors.MergeError: No common columns to perform merge on. Merge options: left_on=None, right_on=None, left_index=False, right_index=False 인덱스에 해당하는 부분을 컬럼으로 만들어 주어도 merge가 안되네요
-
해결됨Python을 이용한 개인화 추천시스템 | 추천알고리즘 | 추천인공지능
section 2 네번째 강의 score(cf_gender) 실행하면 Error 발생합니다.
File "<input>", line 1, in <module> File "C:/Users/jungsuk.hahn/PycharmProjects/recommendation_system/01_lecture.py", line 158, in score y_pred = np.array([model(user, movie) for (user, movie) in id_pairs]) File "C:/Users/jungsuk.hahn/PycharmProjects/recommendation_system/01_lecture.py", line 158, in <listcomp> y_pred = np.array([model(user, movie) for (user, movie) in id_pairs]) File "<string>", line 3, in cf_genderAttributeError: 'int' object has no attribute 'loc' 위와 같은 error 발생합니다.
-
미해결LLM 데이터 분석 - 웹 크롤링부터 추천 시스템까지
실습 라이브러리 설치하기 (requirements.txt) 폴더?
안녕하세요. 강사님, 실습 라이브러리 설치하기 (requirements.txt) 위해서어느 폴더에 자료를 저장해야하나요? 가상환경 study로 들어가서 서브로 디렉토리를 따로 만들어야하나요? 아니면 C: drive 개인폴더에 자료저장 공간을 임의로 만들어서 진행해도 되는지요?
-
미해결[개념부터 실습까지] 추천 시스템 입문편
강의자료 requirements.txt 파일 위치?
구글 코랩이 아니라 개인 환경에서 진행하려고 합니다.필요한 패키지정보가 있는 requirements.txt 파일이 혹시 어디에 있을까요?
-
해결됨Python을 이용한 개인화 추천시스템 | 추천알고리즘 | 추천인공지능
MF알고리즘에서 질문이있습니다.
안녕하세요! 강의를 듣다 응용해보는 과정에서 질문이있습니다. 한번 학습시킨 모델에서 사용자의 데이터를 더 추가해서 동적으로 모델을 업데이트 시키고 싶습니다. 그래서 온라인학습을 진행하려고 하는데, sgd메서드에 데이터를 전달하여 업데이트를 진행하는 방식은 어떻게 생각하시는지 여쭤봐도되겠습니까? 감사합니다!
-
해결됨Python을 이용한 개인화 추천시스템 | 추천알고리즘 | 추천인공지능
ean_rating = np.dot(sim_scores,movie_ratings) / sim_scores.sum() 부분에서 질문이있습니다.
ean_rating = np.dot(sim_scores,movie_ratings) / sim_scores.sum()이부분에서 sim_scores.sum()값은 항상 0이 아닌게 보장이 되는건가요? 직접 데이터를 생성해서 테스트 해보면 음수이거나 0일때도 있더라구요!... 데이터가 잘못된건지 아니면 0일수도 있는건지 궁금합니다.
-
해결됨Python을 이용한 개인화 추천시스템 | 추천알고리즘 | 추천인공지능
score를 실행하면 항상 nan이 출력됩니다
안녕하세요! score를 실행할때마다 nan이 출력이되서 잘못쓴 부분이 있나 여러번 체크해봤는데 도저히 모르겠어서 질문남겨봅니다..import pandas as pdimport osimport numpy as npfrom sklearn.model_selection import train_test_split# 사용자 u.user파일을 DataFrame으로 열기base_src = './drive/MyDrive/RecoSys/Data'os.listdir('./drive/MyDrive/RecoSys/Data')###### 데이터불러오기 ###### os.path.join -> 경로 합치기u_user_src = os.path.join(base_src,'u.user')u_cols = ['user_id','age', 'sex', 'occupation','zip_code']users = pd.read_csv(u_user_src,sep='|',names = u_cols,encoding='latin-1')users = users.set_index('user_id')users.head()u_item_src = os.path.join(base_src,'u.item')i_cols = ['movie_id','title','release date','video release date','IMDB URL','unknown','Action','Adventure','Animation','Children\'s','Comedy','Crime','Documentary','Drama','Fantasy','FilmNoir','Horror','Musical','Mystery','Romance','Sci-Fi','Thriller','War','Western']movies = pd.read_csv(u_item_src,sep='|',names = i_cols,encoding='latin-1')movies = movies.set_index('movie_id')movies.head()u_data_src = os.path.join(base_src,'u.data')r_cols = ['user_id', 'movie_id', 'rating', 'timestamp']ratings = pd.read_csv(u_data_src,sep ='\t',names = r_cols,encoding='latin-1')# ratings = ratings.set_index('user_id')ratings.head()# 실제값과 예측값을 넣기def RMSE(y_true, y_pred):return np.sqrt(np.mean((np.array(y_true) - np.array(y_pred)) **2 ))# # 모델별 RMSE를 계산 하는 함수def score(model, neighbor_size=0):id_pairs = zip(x_test['user_id'], x_test['movie_id'])y_pred = np.array([model(user,movie,neighbor_size) for (user,movie) in id_pairs])y_true=np.array(x_test['rating'])return RMSE(y_true,y_pred)# 데이터셋 만들기x = ratings.copy()y = ratings['user_id']x_train, x_test, y_train, y_test = train_test_split(x,y, test_size=0.25,stratify=y)ratings_matrix = x_train.pivot(index = 'user_id', columns = 'movie_id', values = 'rating')# 코사인 유사도 계산from sklearn.metrics.pairwise import cosine_similarity## 코사인 유사도를 구하기 위해 rating값을 복제하고, 계산 시 Nan값 에러 대비를 위해 결측치를 0으로 대처matrix_dummy = ratings_matrix.copy().fillna(0)## 모든 사용자 간 코사인유사도를 구함user_similarity = cosine_similarity(matrix_dummy,matrix_dummy)## 필요한 값 조회를 위해 인덱스 및 칼럼명 지정user_similarity = pd.DataFrame(user_similarity,index=ratings_matrix.index, columns=ratings_matrix.index)# Neighbor size를 정해서 예측치를 계산하는 함수def CF_knn(user_id, movie_id, neighbor_size=0):if movie_id in ratings_matrix.columns:sim_scores = user_similarity[user_id].copy()movie_ratings= ratings_matrix[movie_id].copy()none_movie_ratings = movie_ratings[movie_ratings.isnull()].index# print(none_movie_ratings)moive_ratings = movie_ratings.dropna()sim_scores = sim_scores.drop(none_movie_ratings)# print(sim_scores)# 여기까지는 동일(0일 경우는 일반적인 cf)if neighbor_size == 0:mean_rating = np.dot(sim_scores,movie_ratings) / sim_scores.sum()else:# 나와 유사한 사람이 없는경우if len(sim_scores)>1:# 5명을 10개로 나눌수 없으니까 최소값으로 해줘야한다neighbor_size = min(neighbor_size,len(sim_scores))sim_scores = np.array(sim_scores)movie_ratings = np.array(movie_ratings)# simscore가 작은 순서대로 작은 유저아이디를 넣는다user_idx = np.argsort(sim_scores)sim_scores = sim_scores[user_idx][-neighbor_size:]## sim_scores 즉, 유사도를 뽑아냈으면 무비평가값을 뽑아내movie_ratings = movie_ratings[user_idx][-neighbor_size:]mean_rating = np.dot(sim_scores, movie_ratings) / sim_scores.sum()else:mean_rating = 3.0# movie_id가 rating train pivot table에 포함되지 않을 경우else:mean_rating = 3.0return mean_rating# 정확도 계산score(CF_knn,neighbor_size=30)#### 실제 주어진 사용자에 대해 추천을 받는 기능 구현(테스트 데이터와 훈련데이터를 만들필요가없다) ####ratings_matrix = ratings.pivot_table(values='rating', index = 'user_id', columns='movie_id')matrix_dummy = ratings_matrix.copy().fillna(0)user_similarity = cosine_similarity(matrix_dummy,matrix_dummy)user_similarity = pd.DataFrame(user_similarity,index = ratings_matrix.index, columns=ratings_matrix.index)def recom_movie(user_id, n_items, neighbor_size):# 해당 유저가 평가한 영화가 나온다user_movie= ratings_matrix.loc[user_id].copy()for movie in ratings_matrix.columns:# 현재 영화평점이 null이 아닌 경우 -> 영화를 본경우는 추천 리스트에서 제외하기 위해if pd.notnull(user_movie.loc[movie]):user_movie.loc[movie] = 0else:user_movie.loc[movie] =CF_knn(user_id,movie,neighbor_size)movie_sort = user_movie.sort_values(ascending=False)[:n_items]recom_movie = movies.loc[movie_sort.index]recommendation = recom_movie['title']return recommendationrecom_movie(user_id = 729, n_items=5, neighbor_size=30)score(CF_knn,neighbor_size=30) + gpt한테 물어보니 none_rating_idx = movie_ratings[movie_ratings.isnull()].index moive_ratings = movie_ratings.dropna() sim_scores = sim_scores.drop(none_rating_idx)이 부분을 movie_ratings = movie_ratings.dropna() sim_scores = sim_scores.loc[movie_ratings.index]이렇게 변경해라해서 수정했더니 nan이 아닌 실수값이 나오기는 하는데 올바른 방법인지를 모르겠습니다. 그래도 같은 방법인거같긴 한데 어디서 차이가 발생하는건지 잘 모르겠습니다!
-
해결됨Python을 이용한 개인화 추천시스템 | 추천알고리즘 | 추천인공지능
user_id가 인덱스범위를 벗어난 값으로 들어옵니다
# Gender 기준 추천 def cf_gender(user_id,movie_id): if movie_id in rating_matrix.columns: # print(user_id) gender = users.loc[user_id]['sex'] if gender in g_mean[movie_id].index: gender_rating = g_mean[movie_id][gender] else: gender_rating = 3.0 # 훈련셋에 movie_id가 없을수도있다. 25%만 할당했기때문에 else: gender_rating = 3.0 return gender_rating score(cf_gender)안녕하십니까! Gender기준 추천쪽에서 오류가 발생해서 질문드립니다.이 부분에서 users는 942까지만 인덱스가 있는데, user_id는 943이 들어와서 ValueError: 943 is not in range라는 오류가 발생하더라구요..!예외처리를 따로 해줘야하는건가요?
-
해결됨Python을 이용한 개인화 추천시스템 | 추천알고리즘 | 추천인공지능
인덱스 칼럼은 어떻게 접근해야하나요
# 데이터 train, test set 분리 from sklearn.model_selection import train_test_split x = ratings.copy() y = ratings['user_id']저는 ratings의 user_id를 인덱스로 설정하고 저렇게 접근을 하니 keyError가 발생합니다.인덱스를 설정한 칼럼은 어떻게 접근해야하나요?
-
해결됨Python을 이용한 개인화 추천시스템 | 추천알고리즘 | 추천인공지능
제공해주신 데이터링크에 들어가면 404가 뜨는데요?
제공해주신 데이터링크에 들어가면 404가 뜹니다. 확인부탁드립니다
-
해결됨Python을 이용한 개인화 추천시스템 | 추천알고리즘 | 추천인공지능
코드 자동완성 속도가 상당히 느린데 개선할 방법이 있을까요?
가령 item_similarity라는 변수를 칠 때 item까지만 치면 item으로 시작하는 변수들의 추천목록을 보여주는데 이 목록이 띄워지는 속도가 약 4초 정도 걸립니다. 강의영상에서 보면 타이핑을 하자마자 바로바로 뜨는 것을 확인할 수 있었는데 혹시 개선할만한 방안이 있을까요?
-
해결됨Python을 이용한 개인화 추천시스템 | 추천알고리즘 | 추천인공지능
ValueError: setting an array element with a sequence
아래 부분에서 불균일한 데이터임을 나타내는 에러가 발생하는데 이유를 못찾겠습니다.전체 코드입니다.from inspect import Signature import os import pandas as pd import numpy as np from sklearn.model_selection import train_test_split ### 데이터 불러오기 및 필요한 함수 정의 ### # user 데이터 base_src = 'drive/MyDrive/RecoSys/Data' u_user_src = os.path.join(base_src, 'u.user') u_cols = ['user_id', 'age', 'sex', 'occupation', 'zip_code'] users = pd.read_csv(u_user_src, sep='|', names=u_cols, encoding='latin-1') users = users.set_index('user_id') u_item_src = os.path.join(base_src, 'u.item') i_cols = ['movie_id','title','release date','video release date', 'IMDB URL','unknown','Action','Adventure','Animation', 'Children\'s','Comedy','Crime','Documentary','Drama','Fantasy', 'Film-Noir','Horror','Musical','Mystery','Romance','Sci-Fi','Thriller','War','Western'] movies = pd.read_csv(u_item_src, sep='|', names=i_cols, encoding='latin-1') movies = movies.set_index('movie_id') u_data_src = os.path.join(base_src, 'u.data') r_cols = ['user_id', 'movie_id', 'rating', 'timestamp'] ratings = pd.read_csv(u_data_src, sep='\t', names=r_cols, encoding='latin-1') # 정확도(RMSE)를 계산하는 함수 def RMSE(y_true, y_pred): return np.sqrt(np.mean((np.array(y_true) - np.array(y_pred))**2)) # 유사집단의 크기를 미리 정하기 위해서 기존 score 함수에 neighbor_size 인자값 추가 def score(model, neighbor_size=0): id_pairs = zip(x_test['user_id'],x_test['movie_id']) # user_id와 movie_id 쌍을 만든다 y_pred = np.array([model(user, movie, neighbor_size) for (user, movie) in id_pairs]) y_true = np.array(x_test['rating']) return RMSE(y_true,y_pred) # 데이터셋 만들기 x = ratings.copy() y = ratings['user_id'] x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.25, stratify=y) rating_matrix = x_train.pivot(index='user_id', columns='movie_id', values='rating') # 코사인 유사도 계산 # train set의 모든 가능한 사용자 pair의 cosine similarity 계산 from sklearn.metrics.pairwise import cosine_similarity matrix_dummy = rating_matrix.copy().fillna(0) user_similarity = cosine_similarity(matrix_dummy, matrix_dummy) user_similarity = pd.DataFrame(user_similarity, index=rating_matrix.index, columns=rating_matrix.index) ### 사용자 평가 경향을 고려한 함수 ### rating_mean = rating_matrix.mean(axis=1) rating_bias = (rating_matrix.T - rating_mean).T # 평점 평균에 대한 편차 ##################################### rating_binary_1 = np.array(rating_matrix > 0).astype(float) # 0 초과의 값이 있는 셀은 true, 나머지는 false로 rating_binary_2 = rating_binary_1.T counts = np.dot(rating_binary_1, rating_binary_2) counts = pd.DataFrame(counts, index=rating_matrix.index, columns=rating_matrix.index).fillna(0) def CF_knn_bias_sig(user_id, movie_id, neighbor_size=0): if movie_id in rating_bias: sim_scores = user_similarity[user_id].copy() movie_ratings = rating_bias[movie_id].copy() no_rating = movie_ratings.isnull() # 평가가 없는 common_counts = counts[user_id] # 주어진 user_id를 기준으로 다른 user들과 공통으로 평가한 영화의 개수들을 담은 배열 low_significance = common_counts < SIG_LEVEL # 공통 평가한 영화 개수가 미리 정해진 level보다 낮은 사용자에 대해 false 처리 none_rating_idx = movie_ratings[no_rating | low_significance].index # 추천 알고리즘에서 제외할 인덱스 추출 movie_ratings = movie_ratings.drop(none_rating_idx) sim_scores = sim_scores.drop(none_rating_idx) if neighbor_size == 0: prediction = np.dot(sim_scores, movie_ratings) / sim_scores.sum() prediction = prediction + rating_mean[user_id] else: if len(sim_scores) > MIN_RATINGS: neighbor_size = min(neighbor_size, len(sim_scores)) sim_scores = np.array(sim_scores) # 행렬 연산을 위해 배열 형태로 변환 movie_ratings = np.array(movie_ratings) user_idx = np.argsort(sim_scores) sim_scores = sim_scores[user_idx][-neighbor_size:] movie_ratings = movie_ratings[user_idx][-neighbor_size:] prediction = np.dot(sim_scores, movie_ratings) / sim_scores.sum() prediction = prediction + rating_mean else: prediction = rating_mean[user_id] else: prediction = rating_mean[user_id] # RMSE 개선을 위한 조정 # if prediction <= 1: # prediction = 1 # elif prediction >= 5: # prediction = 5 return prediction SIG_LEVEL = 3 MIN_RATINGS = 3 score(CF_knn_bias_sig, 30)
-
해결됨Python을 이용한 개인화 추천시스템 | 추천알고리즘 | 추천인공지능
users에 대한 인덱스 설정 기준
아래 코드와 같이 users에 대해 user_id 칼럼을 인덱스를 설정할 때와 하지 않을 때 각각 다른 부분에서 에러가 납니다. 떄에 따라 인덱스로 잡아야할 때도 있고 잡지 않아야 할때도 있는 거라면 그 기준이 무엇일지 궁금합니다.users = users.set_index('user_id')인덱스로 잡았을 때의 에러)인덱스로 잡지 않았을 때의 에러)
-
해결됨Python을 이용한 개인화 추천시스템 | 추천알고리즘 | 추천인공지능
ppt 자료
ppt 자료가 아래와 같은 화면이 뜨면서 열리지가 않는데 뭐가 문제인 걸까요..?