전체 글
-
[Puppeteer] 퍼페티어 사용법 및 크롤링하는 방법 알아보기Node.js/크롤링 2024. 3. 28. 10:52
Puppeteer 사용법 및 Chrome for Developers 웹사이트 크롤링하는 방법 알아보기 크롤링(Crawling)을 할 수 있는 도구라고 하면 대개 셀레니움(Selenium)을 떠올릴테지만, Node.js 기반의 퍼페티어(Puppeteer)라는 라이브러리를 사용할 수도 있습니다. 전자의 경우에는 C#, Rupy, JAVA, Python, JavaScript 언어를 지원하지만, 후자의 경우에는 자바스크립트만을 지원하는 라이브러리라는 차이점이 있지요. 그 외에도 소소한 차이점이 있지만, 대개 자바스크립트 개발자, 그중에서 크롬(Chrome) 웹브라우저를 주로 사용하는 사람이면 셀레니움보다는 퍼페티어를 사용하는 것을 선호하는 모양입니다. 이번에는 자바스크립트를 이용해서 퍼페티어를 설치하고, Chr..
-
[VSCode] 비주얼 스튜디오 코드로 파이썬 개발환경 구성하기Python/개발환경 2024. 3. 27. 09:12
비주얼 스튜디오 코드(VSCode)로 파이썬 개발환경 구성하기 요즘 프로그래머들 사이에서 인기 있는 통합 개발 환경(IDE)이라고 하면 비주얼 스튜디오 코드(Visual Studio Code)를 빼놓을 수 없습니다. 엄밀히 말해서 VSCode는 개발환경보다 단순 에디터 쪽으로 분류해야 하지만, 강력한 확장기능을 이용하면 메이저한 IDE보다 더욱 편한 개발환경 구성이 가능하지요. 이번에는 VSCode를 이용해서 파이썬(Python) 개발환경을 구현하는 방법에 대해 살펴보도록 하겠습니다. VSCode 설치 [그림 1] VSCode 공식 웹사이트 VSCode는 공식 홈페이지에서 손쉽게 다운로드할 수 있습니다. 다운로드 버튼만 누르면 설치 파일을 받을 수 있는건 물론이고, 많은 패키지 관리자에서 명령어만 입력하..
-
[scikit-learn] 의사결정나무(Decision Tree) 모델로 데이터 분류하기Python/scikit-learn 2024. 3. 18. 09:00
의사결정나무(Decision Tree) 모델로 데이터 분류하기 대표적인 기계학습 모델인 사이킷런(scikit-learn)에서는 데이터 분류를 위한 트리 모델을 지원하고 있습니다. 트리 모델이란, 의사결정나무에 기반한 비모수적 지도 학습 방법으로 다양한 if-else 조건문이 마치 나무처럼 배치되어 실제 데이터의 분류 기준을 정의할 수 있도록 구성하는 방식입니다. 의사결정나무 이번에는 트리 모델 중에서 의사결정나무 모델을 이용해 보려 합니다. 의사결정나무는 트리 모델의 가장 단순한 구현으로, 해당 모델의 장단점은 아래와 같습니다. 간단히 정리하자면, 직관적이라는 장점과 과적합에 취약하다는 단점이 있지요. [장점] 사람이 이해하기 간단하며, 모델을 시각화할 수 있습니다. 덕분에 화이트 박스 모델을 적용할 수..
-
[imbalanced-learn] 기계학습에서 불균형 데이터를 처리하는 샘플링 알아보기Python/scikit-learn 2024. 3. 15. 13:28
기계학습에서 불균형 데이터를 처리하는 imbalanced-learn 기계학습(Machine Learning) 작업을 진행하다 보면, 불균형 데이터(Imbalanced Data) 문제에 맞닥뜨리는 일이 종종 생깁니다. 예를 들어, 강아지와 고양이를 구분하는 모델을 구현한다고 하면 항상 강아지와 고양이 사진이 1:1 비율로 확보되지는 않습니다. 이 때 기계학습 모델이 한쪽의 클래스 정보에 편향된 학습을 하는 문제가 발생하는데, 문제는 이런 모델이 분류나 예측 등의 결과마저도 편향되는 상황이 일어납니다. [그림 1] 의사결정나무 모델의 불균형 데이터 학습 결과 차이 (출처) 그래서, 이런 문제를 해결하기 위해 데이터 샘플링(Data Sampling) 과정을 거칩니다. 데이터 샘플링은 특정 편향 문제를 해결할 ..
-
[scikit-learn] 머신러닝 최적화를 위한 GridSearch, RandomSearch CV 알아보기Python/scikit-learn 2024. 3. 14. 14:17
기계학습 모델 최적화를 위한 GridSearch, RandomSearch Cross Validation 알아보기 파이썬(Python)으로 기계학습을 구현할 때 고려해야 할 사항은 아주 많습니다. 이번에는 GridSearch, RandomSearch Cross Validation를 이용해서 기계학습 모델을 최적화하는 작업을 GridSearch, RandomSearch Cross Validation을 이용해서 알아보도록 하겠습니다. 두 교차검증 역시 사이킷런에서 sklearn.model_selection 모듈에서 지원하고 있습니다. 최적화(Optimization) 기계학습 모델을 만들 때는, 모델 종류 및 입력 데이터만 선정하는게 아니라 초매개변수(하이퍼파라미터, Hyper-parameter)를 설정하는 작..
-
[scikit-learn] 기계학습 모델 평가용 k-Fold Cross Validation 알아보기Python/scikit-learn 2024. 3. 14. 10:24
기계학습 모델 평가를 위한 k-Fold Cross Validation 알아보기 기계학습 모델을 만든 뒤, 학습만 끝냈다고 해서 모든 문제가 해결되는게 아닙니다. 얼마나 잘 돌아가는 모델을 만들었는지 평가(Validation)하는 과정이 필요한데요, 이번에는 파이썬(Python)의 기계학습 패키지인 사이킷런(scikit-learn)에서 제공하는 교차 검증(Cross Validation) 기능을 알아보도록 하겠습니다. 교차 검증 교차 검증이란, 데이터의 다양한 부분집합을 사용해서 모델을 테스트하는 검증 기술입니다. 기계학습(지도학습에 한해 설명합니다)은 항상 학습 데이터(training set)의 특징에 지나치게 의존도하게 되는 과적합(overfitting) 문제가 발생할 위험이 있는데, 이를 방지하기 위해..
-
[scikit-learn] 사이킷런 레이블인코더, 원-핫 인코더로 기계학습 데이터 전처리하기Python/scikit-learn 2024. 3. 13. 10:21
사이킷런 레이블인코더, 원-핫 인코더를 이용해서 기계학습 데이터 전처리하기 기계학습에 사용되는 데이터는 기본적으로 숫자 기반의 입력값을 가져야 합니다. 그런데, 이 세상의 모든 데이터가 숫자로만 이루어져 있지는 않지요. 그래서 레이블 인코딩(Label Encoding) 및 원-핫 인코딩(One-Hot Encoding)이라는 개념이 생겨나게 되었습니다. 각각의 인코딩은 아래와 같이 정의할 수 있습니다. 레이블 인코딩이란, n개의 항목이 있다면, 각 항목을 0, 1, 2, ..., (n-1) 까지의 숫자로 항목의 이름을 대체하는 방법입니다. 이렇게 하면, 문자열이었던 이름을 차원 확장 없이 숫자로 처리할 수 있다는 장점이 있습니다. 원-핫 인코딩은 n개의 항목이 있다면, 각각의 항목이 있는지 없는지를 0과 ..
-
[BeautifunSoup] 파이썬으로 구글 뉴스 크롤링해보기Python/크롤링 2024. 3. 8. 09:29
파이썬으로 구글 뉴스 크롤링해보기 단순히 뉴스레터 구독을 위한 시스템을 만들고 싶어도, 뉴스 데이터를 이용해서 분석을 하고 싶을때도 뉴스기사 크롤링은 중요한 테크닉입니다. 그런데, 특정 언론사의 정보만 수집하는게 아니라 다양한 언론사의 정보를 모두 모으고 싶다면 크롤링 난이도가 높아지기 때문에 쉽게 도전하기는 어려운 주제지요. 이번에는 파이썬(Python)에서 이용할 수 있는 셀레니움(Selenium), 뷰티풀수프(BeautifulSoup), 뉴스페이퍼(newspaper3k) 패키지를 이용해 구글 뉴스 정보를 크롤링하도록 하겠습니다. URL 특징 알아보기 웹사이트 크롤링을 할 때는 URL의 특징을 알아보면 신경쓸 일이 적어집니다. 구글 뉴스 검색 결과의 URL은 검색어와 페이지, 검색 기간이 나타나는 구..