파이썬・ML

파이썬・ML

Selenium, BeautifulSoup으로 무한스크롤 데이터 가져오기

무한스크롤은 스크롤이 뷰포트 하단에 도달할 때 서버에서 새 데이터를 불러오는 식으로 구현됩니다. 예를 들어보겠습니다. 현재 화면에는 5개의 컨텐츠가 보이는 상태입니다. 하지만 스크롤을 아래로 내리는 순간 로딩 스피너가 등장하고 컨텐츠 5개가 추가되었습니다. 무한스크롤 방식으로 새로운 데이터를 계속 불러오는 것입니다. 하지만 Selenium을 사용해 이런 식으로 추가되는 데이터를 가져오려면 어떻게 해야할까요? 초기 데이터 이후에 추가적인 데이터를 가져오려면 화면을 아래로 스크롤해 추가 데이터들이 화면에 렌더링 되도록 Selenium API를 사용해야 합니다. 여러 방법들이 존재하지만 대표적으로 while문을 사용해서 로직을 구현할 수 있습니다. 컨텐츠가 추가될 때마다 body 태그의 높이 또한 증가한다는 ..

파이썬・ML

CountVectorizer, TfidfVectorizer의 min_df와 max_df 매개변수 이해하기

문장이든 이미지든 혹은 음성 데이터든 벡터로 표현만 할 수 있다면 데이터간 유사도를 구할 수 있습니다. 이때 sklearn의 CountVectorizer과 TfidfVectorizer를 사용합니다. 그 중 눈에 가는 두 매개변수가 있었는데요, 바로 min_df와 max_df입니다. 이번 포스팅에서는 이 2가지 인자에 대해 알아보도록 하겠습니다. 우선 max_df부터 살펴보겠습니다. max_df는 특정 기준 이상 등장하는 단어를 제거하기 위해 사용합니다. 불용어 처리 기준을 설정하는 것과 같은 맥락입니다. max_df=0.5는 문서의 50%를 초과하는 단어를 무시한다는 의미입니다. max_df=30은 문서에서 30번을 초과해 등장한 단어를 무시한다는 의미입니다. 이처럼 float, int형으로 값을 넘길 ..

파이썬・ML

[ML]mlxtend 모듈로 결정 경계 확인하기

이번 포스팅에서는 mlxtend 모듈에서 제공하는 결정 경계 기능에 대해 알아보도록 하겠습니다. 사이킷런 iris 데이터셋을 사용했습니다. 모듈 설치 pip install mlxtend 모듈 사용 plot_decision_regions 메서드를 사용해서 결정 경계를 시각화할 수 있습니다. 보다 더 자세한 내용은 docs를 참고하겠습니다. from mlxtend.plotting import plot_decision_regions plt.figure(figsize=(14, 8)) plot_decision_regions( X=iris['data'][:, 2:], y=iris['target'], clf=iris_tree_clf, legend=2 ); 결과 모델이 데이터셋을 어떻게 분류했는지 확인할 수 있습니다.

파이썬・ML/pandas

판다스 카테고리 타입 데이터 커스텀 정렬하기

sort_index 메서드를 사용해서 데이터프레임의 인덱스를 정렬하던 중 원하는 순서대로 정렬할 수 없는 문제가 발생했습니다. 알파벳 순서로 아무리 오름차순/내림차순 정렬을 시도해도 원하는 순서대로 나열할 수 없었습니다. 고민하던 중 해당 데이터 타입을 카테고리형으로 변환해야겠다는 생각이 들었습니다. 해당 데이터는 Medal 관련 값들로 'Gold', 'Silver', 'Bronze'로 분류가 가능했습니다. from pandas.api.types import CategoricalDtype cat_medal = CategoricalDtype( ['Bronze', 'Silver', 'Gold'], ordered=True ) type(cat_medal) # pandas.core.dtypes.dtypes.Cat..

파이썬・ML/pandas

판다스 데이터프레임 정리(2) 결측값/중복값/필터링/정렬 등

지난 포스팅에 이어 이번 포스팅에서도 데이터프레임을 다루는 여러 메서드에 대해 알아보도록 하겠습니다. 지금부터 정리할 함수들은 데이터를 전처리하는 과정에서 많이 사용하기 때문에 공식문서와 병행해 반복 학습하는 것을 추천합니다. 1. 데이터프레임 행과 열 삭제 drop 메서드를 사용하면 데이터프레임의 행과 열을 삭제할 수 있습니다. 아래 oil 예제 데이터프레임의 행과 열을 제거하는 예제를 살펴보겠습니다. oil_0_off = oil.drop(0, axis=0) oil_0_off.head() axis=0 옵션으로 데이터프레임 행을 삭제할 수 있습니다. 제거할 행을 지정하기 위해 행 인덱스를 사용합니다. 위 코드를 실행하면 인덱스가 0인 행 데이터가 사라진 것을 알 수 있습니다. oil_0_off.reset..

파이썬・ML/pandas

판다스 데이터프레임 정리(1) 주요속성/메서드/조회

이전 포스팅까지 Series에 대해 자세하게 살펴봤습니다. 이번 포스팅부터는 DataFrame에 대해 알아보도록 하겠습니다. import pandas as pd import numpy as np 1. 주요 속성과 메서드 데이터프레임을 구성하는 하나의 컬럼은 Series입니다. 여러 Series들이 모여 동일한 행 인덱스를 공유하며 하나의 데이터프레임을 이루는 것입니다. 이러한 데이터프레임 객체의 주요 속성과 메서드에 대해 알아보겠습니다. 1-1. 속성 ✅ shape nba.shape # (450, 5) type(nba.shape) # 데이터프레임의 형태를 튜플로 리턴합니다. 위 코드에서 nba 데이터프레임의 형태가 (450, 5)라는 사실을 알 수 있습니다. ✅ index type(nba.index) ..

파이썬・ML/numpy

넘파이 브로드캐스팅(broadcasting) 이해하기

직전 포스팅에서 넘파이 배열의 원소별 연산(Element-wise operation)에 대해 알아봤습니다. 이번에는 그 연속선 상에서 브로드캐스팅에 개념에 대해 알아보도록 하겠습니다. import numpy as np 브로드캐스팅? 브로드캐스팅 덕분에 서로 다른 형태(shape)의 배열을 연산할 수 있습니다. 연산이 가능한 이유는 서로 다른 shape을 동일한 형태로 일치시키기 때문입니다. 이처럼 브로드캐스팅은 배열 연산의 편리성을 높여주지만 의도하지 않은 버그를 유발할 수 있습니다. 따라서 브로드캐스팅의 발생 조건에 대해 확실하게 알고 있어야 합니다. 브로드캐스팅이 발생하는 조건은 총 2가지가 존재합니다. 배열의 차원(ndim)이 같거나 다른 경우인데 우선 전자부터 살펴보겠습니다. - 차원이 같은 경우..

파이썬・ML/numpy

넘파이 배열의 원소별 연산 이해하기(Element-wise operation)

이번 포스팅에서는 넘파이 배열의 연산 방식에 대해 알아보도록 하겠습니다. Element-wise 연산? arr1 = np.random.randint(-5, 5, (5, )) print(arr1) # [ 1 -1 -3 3 2] arr2 = np.random.randint(-5, 5, (5, )) print(arr2) # [ 3 4 -5 4 -3] print(arr1 + arr2) # [ 4 3 -8 7 -1] 기본적으로 넘파이 배열은 모두 원소별 연산을 수행합니다. 원소별로 연산한다는 것의 의미는 각 배열의 동일한 인덱스에 위치한 값들끼리 계산한다는 말입니다. 단, 연산하는 배열들의 shape은 동일해야 합니다. M = np.random.randint(1, 5, (2, 3)) print(M) # [[2 4..

truezero
'파이썬・ML' 카테고리의 글 목록