TIL(24.06.17.)

codataffee·2024년 6월 17일

TIL

목록 보기
70/135
post-thumbnail

#INTRO

해가 길어진 6월 중순 : )

이번 주도 화이팅!.


#심화 프로젝트 발제 (09:00 ~ 10:00)

심화 프로젝트

  • 부트캠프 시작 10주차 !
    지식의 홍수에 빠져 머신러닝 기법들을 학습한 결과물을 만들어 낼 시간이 되었다.

  • What to do: 통계와 머신러닝 기법을 활용한 분석 프로젝트

#심화 프로젝트 주제 선정 (10:00 ~ 14:00)

나의 의견

프로젝트 중점 > 어떤 역량을 가진 데이터 분석가인가

  • 주제 선정 관련

    • 머신러닝 알고리즘 선호도(경험하고 싶은) : 군집 - 분류 - 회귀 순

    • 하고 싶은 주제

    1. 마케팅데이터 - 고객 클러스터링 :
      현업에서 사용할 법한 고객 분류에 대한 내용이고,
      클러스터링을 통해 고객을 특정 기준에 따라 군집화하고,
      군집별 인사이트를 도출하는 프로세스에 대한 경험을 해보고 싶어서.

    2. 트위터 사용자 성별 분류 프로젝트 :
      사용자의 정형, 비정형 데이터 특성들을 분석하여
      성별과 같은 특성을 분류 & 예측하는 프로세스에 대한 경험을 해보고 싶어서.

팀원들과 회의 결과,
주제별 선호도에 대한 투표 + 각자의 데이터 분석 역량을 고려하여
스포티파이 데이터를 활용한 음원 클러스터링 주제를 선택하게 되었다.


  • 프로젝트 개요
프로젝트 주제 선정

1. 주제 선정 이유 :
   
   플랫폼에서 활용되는 추천 시스템을 이해하고, 
   군집 분석과 대규모 데이터 처리의 기술적 도전을 통해 
   음원 클러스터링을 통한 추천 시스템 구축 경험


2. 프로젝트명 :
   
   추천 시스템 성능 향상을 위한 음원 군집분석


3. 프로젝트 목표 :
   
   Spotify 음원 데이터를 클러스터링(군집) 기법을 사용해 유사성에 따라 분류하고, 
   그 과정 및 기준을 분석하여 추천 시스템 구축

4. 프로젝트 핵심 내용 :
   
   1) 추천 시스템 이해 :
      플랫폼에서 사용되는 추천 시스템의 운영 방식 학습
      
   2) 음원 간 유사성 파악에 주요한 특징 선정 :
      음원 간 유사성을 파악하기 위해 주요한 특징 선정
      
   3) 군집 분석 적용 :
      대규모 데이터를 클러스터링 기법을 사용해 처리하고 유사성 분석,
      단순 군집 분석과 주요 특징 기반의 군집 분석 결과 비교

#프로젝트 진행 (14:00 ~ 20:00)

1일차 스크럼 정리

프로젝트 주제 선정 : 스포티파이 데이터를 활용한 음원 클러스터링

활용 데이터 선정 :

데이터 선정 이유 :

  • 비지도학습을 위해 양이 많은 데이터 선정

내일 오전 스크럼까지 해야할 내용 :

  • 데이터 특성 파악

#코드카타 (20:00 ~ 21:00)

  • KATA #65

  • PYTHON

    • DEQUE
      Python의 collections 모듈에서 제공하는 deque는 큐와 스택을 구현할 때 유용함.
      리스트와 달리 양쪽 끝에서의 삽입과 삭제가 O(1) 시간 복잡도를 가지며,
      중간에서의 삽입과 삭제는 지원하지 않는다.
    • 주요 특징
      • 양쪽 끝에서의 빠른 연산 :
        deque 는 양쪽 끝에서 요소를 빠르게 추가하거나 제거할 수 있다.
      • 효율적인 삽입과 삭제 :
        양쪽 끝에서 O(1) 시간 복잡도로 삽입과 삭제가 가능하여,
        큐와 덱(deque) 구조를 구현할 때 매우 효율적
      • 다양한 메소드 :
        양쪽 끝에서의 삽입, 삭제뿐만 아니라 회전 등의 다양한 기능 사용 가능
# collections 모듈에서 deque 임포트
from collections import deque

def solution(priorities, location):
	# 우선순위를 인덱스와 값으로 받는 deque 생성
    queue = deque([(i, p) for i, p in enumerate(priorities)])
    # 프로세스의 실행 순서를 세기 위한 변수 생성
    execution_order = 0
    
    # 큐가 빈 배열이 될 때까지 반복
    while queue:
    	# 큐의 첫 번째 요소를 current에 저장,
        # popleft() 로 큐의 왼쪽 끝 요소를 제거하고 반환
        current = queue.popleft()
        
        # 큐에 남아있는 프로세스 중 
        # current 프로세스보다 높은 우선순위를 가진 프로세스가 있는지 확인
        # any() 함수는 조건을 만족하는 요소가 하나라도 있으면 True 반환
        if any(current[1] < item[1] for item in queue):
        	# current 프로세스보다 높은 우선순위를 가진 프로세스가 있다면,
            # current 프로세스를 큐의 오른쪽 끝에 다시 저장
            queue.append(current)
        else:
        	# 없다면, 실행 순서 1 증가
            execution_order += 1
            # current 프로세스의 인덱스와 location이 동일한지 확인
            if current[0] == location:
            	# 맞다면, 실행 순서를 반환하고 함수 종료
                return execution_order

#OUTRO

오늘의 한 줄.

하나하나씩 차분하게 해보기

profile
커피 좋아하는 데이터 꿈나무

0개의 댓글