TIL

👀Today I Learn

데이터 준비

  • 책의 제목과 설명을 포함하는 간단한 데이터셋을 가정

      import pandas as pd
    
      # 샘플 책 데이터
      books = pd.DataFrame({
          'title': [
              '해리 포터와 마법사의 돌',
              '반지의 제왕: 두 개의 탑',
              '어린 왕자',
              '셜록 홈즈의 모험',
              '1984'
          ],
          'description': [
              '마법과 모험이 가득한 해리 포터의 이야기',
              '사우론의 반지를 파괴하기 위한 여행',
              '어린 왕자가 들려주는 철학적인 이야기',
              '셜록 홈즈가 해결하는 미스터리 사건',
              '독재 사회에서 살아남는 인간의 이야기'
          ]
      })
    


TF-IDF 벡터화 및 코사인 유사도 계산

  • TF-IDF 벡터화를 수행한 후, 코사인 유사도를 이용하여 가장 유사한 책을 추천

      from sklearn.feature_extraction.text import TfidfVectorizer
      from sklearn.metrics.pairwise import cosine_similarity
    
      # TF-IDF 벡터화
      vectorizer = TfidfVectorizer()
      tfidf_matrix = vectorizer.fit_transform(books['description'])
    
      # 코사인 유사도 계산
      cosine_sim = cosine_similarity(tfidf_matrix, tfidf_matrix)
    


추천 함수 구현

  • 사용자가 특정 책을 선택했을 때, 가장 유사한 책을 추천하는 함수를 작성

      def recommend_book(title, books, cosine_sim):
          idx = books[books['title'] == title].index[0]  # 선택한 책의 인덱스
          sim_scores = list(enumerate(cosine_sim[idx]))  # 유사도 리스트
          sim_scores = sorted(sim_scores, key=lambda x: x[1], reverse=True)  # 유사도가 높은 순으로 정렬
          sim_scores = sim_scores[1:3]  # 자기 자신을 제외한 상위 2개 추천
          book_indices = [i[0] for i in sim_scores]
          return books['title'].iloc[book_indices]
    
      # 예제 실행
      recommendations = recommend_book('해리 포터와 마법사의 돌', books, cosine_sim)
      print(recommendations)
    

실행 결과

  • 해리 포터와 모험 및 판타지 요소가 유사한 책을 추천

      1    반지의 제왕: 두 개의 탑
      2    어린 왕자
      Name: title, dtype: object
    



💡Today I Thought

오늘의 체크리스트

  • 알고리즘 코드카타 1문제
  • SQL 코드카타 1문제
  • ML 공부
  • TIL 작성

회고

 집안일 좀 하다가 허리를 삐끗했다. 내일부터 다시 12시간 앉아있어야 하는데 괜찮을지 모르겠다…🥲 오늘 React도 한번 쓰윽 배웠는데, 생각보다 어려워서.. 괜찮을지는 잘 모르겠다. 일단 내일은 ML부터 구현하고 React로 프론트를 구현하던지 해봐야할 것 같다.

댓글남기기