애니메이션 데이터 셋
으로 추천 알고리즘 공부
https://www.kaggle.com/datasets/dbdmobile/myanimelist-dataset/data
Anime Dataset 2023
A Comprehensive Collection of Anime Information
www.kaggle.com
장르 추출
genre_tag_dict={}
genre_list=[]
for s in raw_data_anime.Genres.str.split(','):
if type(s)==type(0.1):
continue
for g in s:
genre_tag_dict[g]=0
for key, val in genre_tag_dict.items():
genre_list.append(key)
tag_list=tag_list.tolist()
tag_list+=genre_list
genre_list
해당 장르가 포함될 경우 1/ 아닌 경우 0
for g in genre_list:
raw_data_anime[g]=np.where(raw_data_anime.Genres.str.find(g)!=-1,1,0)
data_ani=raw_data_anime.drop(columns=["Genres"])
data_ani=data_ani.set_index("anime_id")
data_ani
각 행간의 유사도 계산
-자카드 유사도
def jaccard_similarity(row1, row2):
intersection = sum((row1 != 0) & (row2 != 0)) # 교집합의 크기를 계산합니다.
union = sum((row1 != 0) | (row2 != 0)) # 합집합의 크기를 계산합니다.
return intersection / union if union != 0 else 0 # 자카드 유사도를 계산하고 반환합니다.
# 모든 애니메이션 간의 자카드 유사도를 계산합니다.
jaccard_similarity_matrix = data_ani.apply(lambda row1: data_ani.apply(lambda row2: jaccard_similarity(row1, row2), axis=1), axis=1)
def find_similar_anime(anime_id, similarity_matrix, top_n=5):
"""
주어진 애니메이션과 비슷한 유형의 애니메이션을 찾는 함수
:param anime_id: 비교하고자 하는 애니메이션의 ID
:param similarity_matrix: 애니메이션 간의 유사도 행렬
:param top_n: 반환할 유사한 애니메이션의 수 (기본값: 5)
:return: 유사한 애니메이션의 ID 및 유사도
"""
# 주어진 애니메이션과의 유사도 행렬에서 해당 애니메이션의 행을 가져옴
similarity_row = jaccard_similarity_matrix.loc[anime_id]
# 유사도를 기준으로 내림차순으로 정렬하여 상위 top_n개를 선택
similar_anime = similarity_row.sort_values(ascending=False)[1:top_n+1]
return similar_anime
# 예시: 애니메이션 ID가 1인 애니메이션과 유사한 상위 5개 애니메이션 찾기
similar_anime = find_similar_anime(anime_id=1, similarity_matrix=jaccard_similarity_matrix, top_n=5)
print("애니메이션 ID가 1인 애니메이션과 유사한 상위 5개 애니메이션:")
print(similar_anime)
애니메이션 ID가 1인 애니메이션과 유사한 상위 5개 애니메이션:
anime_id
6 0.714286
92 0.571429
95 0.555556
97 0.500000
86 0.500000
Name: 1, dtype: float64
코사인 유사도, svd 알고리즘도 내일 탐색해보기
자카드 유사도 1000개 이상 행 넘어갈때 계산이 너무 오래 걸리는 문제.
AttributeError: 'DataFrame' object has no attribute 'iteritems'
I am using pandas to read csv on my machine then I create a pyspark dataframe from pandas dataframe. df = spark.createDataFrame(pandas_df) I updated my pandas from version 1.3.0 to 2.0 Now, I am
stackoverflow.com
Truncated SVD
Truncated SVD 를 이용한 행렬 분해 Truncated SVD는 Sigma 행렬에 있는 대각원소 ,즉 특이값 중 상위 일부 데이터만 추출해 분해하는 방식이다. 이렇게 분해하면 인위적으로 더 작은 차원의 U,∑, V^T를 분
ariz1623.tistory.com
iteritems ==>판다스 2.0 이전 버전에서만 사용가능
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts. daal4py 2021.5.0 requi...
stackoverflow.com
자카드 유사도
[NLP] 문서 유사도 분석: (3) 자카드 유사도(Jaccard Similarity)
📚 목차 1. 자카드 유사도 개념 2. 자카드 유사고 실습 1. 자카드 유사도 개념 자카드 유사도(Jaccard Similarity)는 \(2\)개의 집합 \(A\), \(B\)가 있을 때 두 집합의 합집합 중 교집합의 비율입니다. 즉,
heytech.tistory.com
모든 행 출력
[Pandas] 5. 데이터프래임(DataFrame) 모든 행, 모든 열 출력하기
안녕하세요. 꽁냥이에요~ 크기가 큰 데이터를 Pandas 데이터프래임(DataFrame)에 넣으면 아래의 빨간색으로 표시한 것처럼 중간 부분은 잘려서 나오게 됩니다. 하지만 상황에 따라서 중간에 잘린 데
zephyrus1111.tistory.com
내일 전처리 부분. job description의 hard skill 추출//
유사도 계산 방식 탐색.
//open api 사용법 공부
240408월_TIL (0) | 2024.04.08 |
---|---|
240405금_TIL (0) | 2024.04.05 |
240402수_TIL (0) | 2024.04.02 |
240401월_TIL (0) | 2024.04.01 |
240329금_TIL (0) | 2024.04.01 |