본문 바로가기

전체 글

(131)
[240321] 파이썬: 코드카타 45 & SQL: 코드카타 158~160 [파이썬 코드카타] 시저 암호 https://school.programmers.co.kr/learn/courses/30/lessons/12926 1) 어떤 문제가 있었나 - 어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 함 - 문자열이 있고 특정 숫자만큼 거리를 밀어서 완성되는 문자열을 반환 2) 내가 시도해본 건 무엇인가 - 문자열을 숫자로, 숫자를 문자열로 바꿀 수 있는 함수를 찾아봄 - ord('문자'): 아스키 코드(숫자)를 반환 - chr('숫자'): 아스키 코드에 해당하는 문자열을 반환 3) 어떻게 해결했나 - a~z, A~Z 구간을 ord 함수로 숫치화 하여 if 절로 조건 추가 - 알파벳 구간을 순회할 수 있도록 마지막에 26 빼기 처리..
[240321] 클러스터링 분석 - ② 차원 축소: 주성분 분석(PCA)과 t-SNE [파이썬으로 하는 클러스터링 분석 by 강민구 튜터] 1. 주성분 분석(PCA) 1) 정의 - 고차원 데이터의 차원을 축소하는 대표적인 방법 중 하나로 Principal Component Analysis의 약어 - 데이터의 특성(분포)을 최대한 보존하면서 차원을 축소하는 ‘주성분’을 찾아내는 방법 └ 분산(Variance)을 보존하면서 서로 직교하는 새 축을 찾아 고차원 공간 표본을 선형 연관성 없는 저차원 공간으로 변환하는 기법 └ 하기 그래프에서는 C1선이 가장 데이터를 잘 담아내는 새로운 차원이 됨 - PCA에서 핵심은 어디서 바라봐야 나무 블록을 가장 잘 볼 수 있을지, 새로운 관점(새로운 차원 aka 주성분)을 찾아내는 것 - 주성분 분석은 기존 변수를 선형 결합해 새로운 변수를 생성하는 변수 ..
[240320] 파이썬으로 하는 클러스터링 분석 - ① 기본 개념과 거리 계산 [파이썬으로 하는 클러스터링 분석 by 강민구 튜터] 1. 클러스터 개념과 거리 1) 클러스터링 정의 - 사전적으로 클러스터링(Clustering)은 서로 가까이 있는 비슷한 것들의 그룹(군집)을 이루는 작업 - 데이터 분석 기법에서 클러스터링은 분석 대상이 되는 데이터의 그룹을 만드는 방법론 - 그룹은 마구잡이로 만드는 것이 아니라, 특정 기준인 '데이터 사이의 거리'를 바탕으로 생성 └ intra-cluster(군집 내 거리): 군집 내 데이터 간 거리가 가까울수록 좋음 └ inter-cluster(군집 간 거리): 각각의 군집 사이의 거리는 멀수록 좋음 - 데이터 특성이나 분석가 주관에 따라 같은 데이터라도 둘 사이 거리를 다르게 판단할 수 있음 2) 클러스터링 활용 예시 ① Summarizatio..
[240319] 스파크(spark): 배경 및 기본 구조, 기능 [spark를 이용한 빅데이터 분석 by 안창배 튜터] [1] 스파크(spark): 컴퓨터와 데이터, 메모리, 클라우드 [2] 스파크(spark): 병렬/분산처리, 샘플링, 분할, Dask, 자동화 1. Spark란? 1) 스파크 등장 배경 - 과거엔 대규모 연산 및 데이터 처리를 프로세서 성능 향상에 맡겼으나, 물리적 방열 등 단일 CPU 기능 개선에는 한계가 있었음 - 하여, 모든 코어가 같은 속도로 동작하는 병렬 CPU 코어를 더 많이 추가하는 방향으로 발전 선회 - 데이터 수집 비용이 저렴해져 데이터 클러스터에서 처리해야 할 만큼 거대해짐 2) 스파크의 역사 - 요약: 스파크는 많은 변화를 겪어 왔으며, 최소 2022년 이후 자료를 살펴보는 것을 추천 - UC 버클리 대학교에서 2009년 스파크 ..
[240319] 파이썬: 코드카타 44 & SQL: 코드카타 156~157 [파이썬 코드카타] 최소직사각형 https://school.programmers.co.kr/learn/courses/30/lessons/86491 1) 어떤 문제가 있었나 다양한 크기인 모든 명함을 수납할 수 있는 가장 작은 지갑 크기를 반환하는 문제 2) 내가 시도해본 건 무엇인가 ① 가로(w)와 세로(h) 중 길이가 긴 것을 기준으로 값을 리스트에 넣고, ② 길이가 짧은 것을 기준으로 또 다른 리스트에 값을 넣은 뒤, ③ 각 리스트에서 최대값을 뽑아서 곱해줌 3) 어떻게 해결했나 def solution(sizes): w_list = [] h_list = [] for w, h in sizes: if w >= h: w_list.append(w) h_list.append(h) else: w_list.app..
[240318] 스파크(spark): 병렬/분산처리, 샘플링, 분할, Dask, 자동화 [spark를 이용한 빅데이터 분석 by 안창배 튜터] [1] 스파크(spark): 컴퓨터와 데이터, 메모리, 클라우드 1. 병렬 처리 1) 병렬 처리란? - 여러 개의 코어에서 동시 다발적으로 일을 나누어서 수행하는 것이 병렬처리 - 주로 단일 컴퓨터(머신) 내의 여러 코어나 프로세서를 사용하여 작업을 동시에 수행 - 파이썬은 기본적으로 1개의 코어를 사용하나 특정 명령어 사용 시 여러 개 코어 사용 가능 └ 파이썬에서는 Multiprocessing이나 joblib이 흔히 사용 └ sklearn의 njobs가 코어 개수를 제어하는 기능 2) 분산 처리 - 네트워크를 통해 연결된 여러 대의 컴퓨터(노드)가 각각의 작업을 수행하는 것 - Spark를 포함해 Ray, Dask 등의 라이브러리 사용 가능 🖥️..
[240318] 파이썬: 코드카타 43 & SQL: 코드카타 149~155 [파이썬 코드카타] 크기가 작은 부분 문자열 https://school.programmers.co.kr/learn/courses/30/lessons/147355 1) 어떤 문제가 있었나 숫자로 이루어진 문자열 t와 p가 주어질 때, t에서 p와 길이가 같은 부분문자열 중에서, 부분문자열이 p보다 작거나 같은 수가 나오는 횟수를 반환 t = "3141592" # 314, 141, 415, 159, 592 p = "271" result = 2 #141, 159 2) 내가 시도해본 건 무엇인가 for 문으로 t 값을 p 길이만큼 순서대로 꺼낼 수 있도록 range +len을 결합한 함수를 사용 for 문 뒤에 print 값을 넣어서 제대로 작동하는지 체크한 뒤 if 문 적용하요 최종 함수 적용 3) 어떻게 해..
[240311주차] 본캠프 W13 WIL : Weekly I Learned 지난 일주일을 돌아봄으로써 나의 현재 상태를 파악하고 더 나은 다음 주를 만들기 위해 어떤 부분을 어떻게 채워나갈지 고민하는 것 내가 한 일(Facts) - 실전 프로젝트 발표 자료 작성 & 발표 - SQL 코드카타 146~148, 파이썬 코드카타 40~42 문제풀이 - [spark를 이용한 빅데이터 분석] 강의 1주차 수강 - 태블로 개인과제 풀이 복습 (feat. t-test) - TIL 작성 느낀점(Feelings) - 금주 실전 프로젝트가 끝났다. 프로젝트 덕분에 태블로를 다루는 것은 조금 익숙해졌다. 데이터를 살펴보며 고민한 내용도 결과물에 잘 정리되었다고 생각한다. 주제 자체가 비즈니스 흐름에 집중해야 하는 것이긴 했지만, 타팀 발표를 듣다 보니 내게 ..