본문 바로가기

Theory/MachineLearning

(22)
전처리와 학습 과정을 하나의 과정으로 실행하는 sklearn의 pipeline 아마 Python으로 머신러닝을 공부하시는 분들은 scikit-learn을 많이들 사용하실텐데요. 보통 결정나무를 제외하면 대부분 전처리를 꼭 하게 됩니다. 하다못해 Scaler라도 적용을 하겠죠. 이 때 이런 과정 - Scaler와 모델의 fit 과정이라도 한 번에 진행하면 편할 수도 있습니다. 여러 방법이 있겠지만, 그 중 하나는 pipeline입니다.일단, 이번에는 wine 데이터를 사용해 보도록 하겠습니다. 이 데이터는 그렇게 중요하지 않구요. 그냥, pipeline 예제만 보일려고 하는 것입니다. 간단하게 red / white 와인을 분류해보려는 시도이지요^^간단하게 특성 X과 라벨 y을 잡았구요~pipeline을 StandardScaler를 통과하고 DecisionTreeClassifier를 ..
머신러닝을 이용한 Human Activity Recognition 실습 사람의 몸에 스마트폰(에 있는 자이로, 가속도센서 데이터)을 붙여서 데이터를 얻어서 그로부터 사람의 행동을 센서데이터 확인하려는 연구가 있습니다. 이 연구는 대부분 (딥러닝을 포함한) 머신러닝 분야에서 활발한듯 합니다. 그런 데이터를 이번에 하나 가지고 살짝 실습해 보려고 합니다.UCI에서 방금이야기한 Human Activity Recognition (HAR) 데이터를 배포하고 있습니다. 읽어보면 2012년 데이터이고 이때 사용한 기기는 삼성 갤럭시2라고 되어 있습니다. 이 데이터가 zip으로 되어 있어서 이를 제 github 계정에 압축을 풀어서 다시 올려놓았습니다.왜냐면 오늘 글은 구글 Colab으로 읽을거여서 그냥 편하게 데이터를 url로 읽기 위해서 입니다.이 데이터는 위의 특징을 가집니다^^데이..
Scikit Learn을 이용한 라벨인코딩 - LabelEncode 라벨인코딩은 데이터사이언스, 머신러닝 과정에서 많이 사용하는 기능입니다. Scikit Learn에서는 간단한 라벨인코딩 기능을 제공하는데요. 오늘은 그 간단한 기능을 살짝 설명하려고 합니다.오늘은 아이리스 데이터를 대상으로 하겠습니다.아이리스 데이터를 불러와서 데이터는 value 위치에, feature_names는 컬럼이름으로 잡고, 아이리스의 품종을 의미하는 target 데이터도 컬럼으로 포함시켰습니다.target_names의 경우는 setosa, versicolor, virginica로 세 가지입니다. 라벨인코딩이라는 것은 이름으로 되어있는 것을 숫자로 혹은 그 반대로 변환하는 것입니다.그렇게 해주는 기능을 손쉽게 sklearn이 제공하는 것이지요.라벨인코딩 기능을 사용하기 위해서 sklearn의 p..
Scikit Learn (sklearn) SGDRegressor 사용할 떄 Loss 그래프 확인하는 방법 요즘 저는 한양대에서 본교와 에리카를 합쳐서 수업하는 머신러닝 수업을 교양으로 공동 수업 중이고, 한양대 에리카에서 로봇공학과 학생들을 대상으로 기계학습론이라는 과목도 공동 진행 중인데요. 그래서 수업용으로 자료를 만들다가, 한 가지 발견한 것이 있네요. 바로 scikit learn의 linear_model에 SGDRegressor에서 케라스나 텐서플로우 처럼 iteration마다 loss를 history로 저장해서 그래프로 확인하는 기능을 찾을 수 가 없더라구요ㅠㅠ. 그래서 역시 구글을 뒤졌죠^^ 이제 없던 옵션을 만들러 갑니다.^^ (아 근데 혹시 이것보다 더 간단한 방법이 있을 수 있죠.ㅠㅠ. 제가 들 찾아봤을 수 있으니까요ㅠㅠ) import numpy as np import matplotlib.p..
결정트리를 이용한 타이타닉 생존자 예측 타이타닉 생존자 예측이라는 주재를 가지고 신경망으로 분류를 했던 적이 있습니다. 당시엔 Keras를 사용했는데요. 이번에는 결정트리 Decision Tree 기법을 이용하려고 합니다. 그리고 사이킷런 Scikit Learn을 이용할 거구요^^ 먼저 데이터는 이전에 했던 [Keras] 타이타닉 생존자 예측에서 사용한 엑셀로된 데이터 입니다. import pandas as pd import numpy as np import matplotlib.pyplot as plt %matplotlib inline raw_data = pd.read_excel('titanic.xls') raw_data.info() 필요한 모듈과 데이터를 읽었습니다.데이터가 1300개 정도로 보이지만, 중요 데이터인 age가 null이 있어..
어찌어찌 설치하고 구동해본 영상 인식 - CUDA, OpenCV, darknet - YOLO, 그리고 고마운 분들~ 딥러닝 쪽은 너무나 많은 흥미와 재미를 재공합니다. 전 뭐 사실... 좋은 장비(GPU 몇 개 이상~^^)도 없고 해서 그저 Toy Project 수준으로 놀고 있는데요^^. 알고보니 저에게도 GPU라는 아이가 하나 있었습니다.^^응? 여긴 제 자리 왼쪽 파티션 위 선반인데요. 누가보면 하드웨어 엔지니어라고 생각할 수 있지만, 저게 다~ 제 장난감입니다.^^그리고 제가, 자료 조사 용으로 사용하는 맥 미니가 있네요..^^.그리고 저의 주 작업 PC인 맥북이 또 저렇게^^ 최근 티스토리에서 기념으로 받은 스티커들과 언제나 공부해야지 하면서 못하고 있는 터틀봇 스티커도 함께^^또 저의 이동형 윈도우 노트북, 요즘은 블록 코딩 관련 책을 집필하기 위해 깨끗하게 다시 세팅해서 사용하고 있는 Dell XPS입니다..
[Keras] 붓꽃 Iris 데이터 분류해보기 Iris classification using Keras 최근 저는 케라스를 이용해서 선형 회귀도 살짝 공부할 겸, 다변수 입력에 대한 선형회귀 문제로 혈중 지방함량이라는 데이터를 어디서 구해서 케라스를 이용한 다변수 함수에 대한 선형회귀를 학습하고, 그리고 머신러닝을 학습하는 과정에서 필수라고 하는 MNIST 데이터 셋을 케라스를 이용해서 CNN으로 구분하는 학습을 해 보았습니다. 그리고 그렇게 CNN을 이용해서 학습한 모델을 저장한 후에, 그 모델만 다시 읽어와서 내가 손으로 쓴 글씨에 테스트도 해 보았네요^^ 그러다가, 이진 분류도 학습할 겸, 케라스를 이용해서 타이타닉 생존자도 예측을 해보았습니다. 오늘은 그 흐름에서 살짝 뒤로 가는 거긴 합니다만, 또 하나의 유명한 예제인 붓꽃 Iris 분류를 이야기하려고 합니다. 너무나 유명한 통계적 예제라서 통계와..
Python에서 OpenCV를 통해 내가 손으로 쓴 숫자 영역 확인하기 어떻게 사는게 좋을까? 어떤 선택을 하는 것이 최선일까?를 난데없이 문득 고민하는 하루입니다. 별로 고민없이 물 흐르는데로 사는 것이 인생이라 생각하고, 오직 즐거움(^^)만을 따라다녔는데... 뭔가 요즘 선택을 계속 고민하게 되네요.ㅠㅠ. 이럴때는 일하다말고, 잠시 블로깅하는 것이 정신건강에 좋죠^^. 얼마전에 이때까지 10년 블로그 생활중에 처음으로 OpenCV라는 아이를 이용해서, Python으로 OpenCV를 이용해서 사람의 얼굴이나 몸을 인식하는 것을 haarcascade를 이용해서 연습했는데요. 이번에는 내가 직접 쓴 숫자에서 숫자 하나하나가 위치하는 영역을 인식하고 싶네요^^. 어떻게하면 좋을까요^^. 정답은?? 구글이죠^^ 아무튼.. 그 연습을 시작해볼께요...아... 이겁니다. 이 손글씨..