본문 바로가기

Theory

(223)
Selenium 처음 시작해 보기 오랜만에 Data Science 카테고리에 글을 올리네요. 예전에 웹에서 데이터를 가지고 오는 간단한 방법을 이야기했던 적이 있습니다. 오늘은 그 글에서 이어지는 내용입니다. 웹상에서 어떤 입력폼에 글자를 입력한다든지, 접근해야할 상세 웹 주소가 보이지 않는다든지 등의 상황에서 유용하게 사용할 수 있는 도구가 selenium입니다. 위 그림에 나타나있듯이 selenium은 사용하는 브라우저에 맞춰 드라이버를 실행합니다. 그러면 해당 드라이버가 웹페이지를 읽을 브라우저를 실행해서 나의 코드에 의해 제어되도록 되는 것입니다. 설치는 pip 명령으로 먼저 진행하구요. 아래 그림처럼 자신의 크롬 버전을 확인합니다. 우측 상단 점 세개를 클릭한 다음 도움말의 크롬 버전을 확인하시면 됩니다. 크롬드라이버 다운로드 ..
많고 많은 캠핑장. 딱 나에게 맞는 캠핑장 추천해 드립니다. 이 글은 2021년 봄부터 이른 여름까지 수업을 한 패스트캠퍼스 성수 스쿨(지금은 스노우볼)에서 수업한 데이터사이언스 스쿨 17기의 프로젝트 중 하나를 소개하는 글입니다. 부족한 강사를 만나 더 좋은 성과를 낼 수 있었지만 그러지 못한 것이 미안할 따름입니다. 이번에는 요즘 관심들이 많은 캠핑에 대한 이야기입니다. 제가 수업을 한 팀중에 한 팀인데 이분들의 관심이 여러 경로를 지나다가 알고캠핑(Algo Camping)이라는 이름으로 정착을 했습니다.^^. 목표는 사용자에게 맞는 캠핑장을 추천하고, 또 캠핑장을 여러 공통점? 혹은 비슷한 내용으로 분류하여 사용자가 선택하기 쉽게 하기 위한 서비스의 제공입니다. 벌써 홈페이지도 만들고, 데이터 분석부터 백엔드, 프론트엔드 엔지니어들까지 규합해서 어마어마한 작..
YOLO와 Deep SORT를 이용한 CCTV Tracking 이 글은 2021년 봄부터 이른 여름까지 수업을 한 패스트캠퍼스 성수 스쿨(지금은 스노우볼)에서 수업한 데이터사이언스 스쿨 16기의 프로젝트 중 하나를 소개하는 글입니다. 부족한 강사를 만나 더 좋은 성과를 낼 수 있었지만 그러지 못한 것이 미안할 따름입니다. 지난번 드론 이야기에 이어 이번에는 CCTV Tracking 프로젝트를 소개할까 합니다. 이번 팀은 길거리의 사람들의 동선을 추적하는 일입니다. YOLO도 버전별로 사용했고, 또 Deep SORT도 사용을 했죠^^ Deep SORT는 원리까지 파악하기는 힘들었을 겁니다. 그래도 꽤 열심히 잘 추적한 것 같습니다. 학습은 주로 Colab을 이용하고 적용은 PC에서 했지요~ 저렇게 데이터를 모으고 라벨링(지옥)하고 뭐 성능을 올리고^^ 화면상에서 사람..
DJI 드론을 이용해서 사람인식 및 포즈인식하기 작품소개 이 글은 2021년 봄부터 이른 여름까지 수업을 한 패스트캠퍼스 성수 스쿨(지금은 스노우볼)에서 수업한 데이터사이언스 스쿨 16기의 프로젝트 중 하나를 소개하는 글입니다. 부족한 강사를 만나 더 좋은 성과를 낼 수 있었지만 그러지 못한 것이 미안할 따름입니다. 이번에는 제가 진행하는 수업의 수강생 중 한 팀이 시도한 프로젝트를 소개하려고 합니다. 원래 딥러닝 수업이었는데 본인들이 드론에 관심이 많아서 드론을 자비로 구매한 후 프로젝트를 진행했습니다. 흠.. 저렇게 자기멋에 살아야하는것이 현대인이죠^^. 프로젝트를 진행하는데 좋은 습관인 의문을 가지고 해결하려는 노력을 많이 하는 팀이었습니다. 학습은 colab으로 진행하고 드론과 통신은 python으로 수행을 했습니다.~ DJI의 텔로라는 드론인데 성능이..
Jupyter Notebook을 원격으로 접속하기 저는 어떤 숭고한(^^) 목적으로 RTX3090을 확보했습니다. 음... 지금은 가격이 더 올랐네요^^. 아무튼, 이 아이를 구매하고 PC가 조립되는 과정은 매우 많은 분들이 도와주셨지요. 오모로봇의 대표님과 연구소장님입니다. ㅋㅋ 이 글을 빌어 감사의 마음을 전합니다. ㅋㅋ^^ 아무튼 그렇게 세팅한 저 데스크탑은 리눅스를 세팅하고 원격으로 사용할 건데요. Jupyter notebook을 데스트탑에서 기동하고, 제 노트북에서 원격으로 접속하려고 합니다^^ 저런 구성을 하고 싶은거죠^^ 일단, 데스크탑의 ip를 알아서 ssh로 접근합니다. ip를 알아내는 방법은 한번 모니터, 키보드, 마우스를 연결하고 ifconfig명령을 이용해서 ip를 확인하면 됩니다. 이제 ssh로 원격으로 데스크탑에 접근을 완료합니..
Python scikit learn의 Label Encoder와 MinMax, Standard, Robust Scaler 이해하기 얼핏 관계가 없어 보일 수도 있으나, 이번에는 scikit learn의 Label Encoder와 MinMax, Standard, Robust Scaler를 이야기 해보려고 합니다. 이 아이들 모두 데이터를 만지작 거리다 보면 자주 만나게 되는 아이들입니다. Label Encoder 먼저 연습용 데이터를 즉석에서 만들어 보죠. 그냥 A 컬럼은 문자로, B 컬럼은 흔히 보는 숫자로 되어 있습니다. 네 위와 같이 만들어 지죠. 만약 A컬럼의 문자 a, b, c를 각각 번호 0, 1, 2를 매겨서 변환하고 싶다면 LabelEncoder를 사용하면 됩니다. 먼저 LabelEncoder를 불러와서 A컬럼을 기준으로 fit을 시키면, 어떤 아이를 0이라고 할지, 또 어떤아이를 1이라고 할지를 정합니다. 그 내용이 ..
Box Plot의 기초 요즘 수업하면서 box plot의 기초에 대해 궁금해 하시는 분들이 많아서 이 부분만 다시 이야기하려고 블로그에 정리합니다. 데이터의 분포를 관찰하는 좋은 도구 중에 하나가 Box Plot입니다. 간단히 예를 보도록 하죠. 임의로 데이터를 만들어 두겠습니다. 그리고 그림을 그리기 위한 y값도 1로만 채워두겠습니다. 그려보면 위 그림처럼 되죠. 100 근처의 값들이 생뚱(^^)맞게 크게 잡혀있네요. 이제 numpy의 median 명령으로 중간값을 찾아보겠습니다. 45라는 값이 딱 중간 값인가 봅니다. numpy의 percentile 명령을 이용하면 4분의1 (25%), 4분의3 (75%) 지점의 값들을 찾아보면 16과 48이라고 합니다. 그 값을 각각 q1, q3라고 하고 가운데 값은 q2라고 하겠습니다...
Python class로 만드는 1차 저역통과필터 Low Pass Filter 디지털 필터에 대해서는 예전에 많이 다루었는데요. 당시에 다룰때는 간단히 Python의 함수(def)를 사용해서 많이 다루었습니다. 이번에는 class를 이용해서 조금 사용성을 높인 코드를 보여드리는 것이 어떨까하고 글을 작성합니다. 일단 1차 저역통과필터는 예전에 소개한 글에서 수식을 가져오겠습니다. 저 식을 코드로 단순 변환 시켜보면 out = (tau * pre_out + ts * data) / (tau + ts) 입니다. 수식에서 분모가 같으니 tau + ts는 빼서 보면 저렇게 되죠. 문제는 pre_out입니다. 현재 출력값 out, 수식에서는 yn의 이전 값이거든요. 그래서 저 코드가 실행된 직후 현재 출력을 별도로 저장해야 합니다. 만약 class를 사용하지 않는다면, 1차 저역통과필터가 필..