psygo22의 등록된 링크

 psygo22로 등록된 티스토리 포스트 수는 226건입니다.

Amazing Talker 어메이징토커 강사 한달차 후기, 장단점 총정리 [내부링크]

어메이징토커 강사 한달차 후기 요새 영어 스피킹 플랫폼 어메이징토커의 광고가 많은데요. 실제로 어메이징토커 강사 한달차 뛰어본 후기를 남겨보겠습니다. 직접 이것저것 해보면서 경험한 장단점을 공유해드리려 합니다. 어메이징토커 강사 장점 시급 조절이 가능하다 (학생이 모인 후에는 점차 12달러에서 조금씩 시급을 올릴 수 있다) 플랫폼이 나름 잘 구성되어 있다. 요새 광고를 참 많이 해서 홍보가 좀 되는 것 같다. 대만계 플랫폼이라 대만, 중국 학생들을 많이 모을 수 있다. 최근 글로벌하게 확장 중이여서 학생이 더 많아질 것 같다. 멘토링이 있어서 멘토를 잘 만나면 수월하게 모집이 가능하다. 어메이징토커 강사 단점 학생을 본인이 모집해야 한다. AI매칭이 들어오면 학생에게 연락을 하는 형식이라, 거의 24시간..

테슬라 모델 3 기본 정보, 장단점 종합, 최신 뉴스 정리 [내부링크]

테슬라 홈페이지에 들어가면 영롱한 테슬라 모델 3 사진을 볼 수 있는데요(아래 사진 참조) 말도 많고 탈도 많지만 팬층이 탄탄한 테슬라! 테슬라 모델3에 대해 간단히 알아봅시다. 테슬라 모델 3 기본 정보 정리 (출처) 5,999~7,559만원 내차시세 연료전기 주행403~480km 1회 충전 시 연비복합 5.1~5.7km/kWh 도심 4.8, 고속 4.5 출력208~360kW 모터 279~482hp (단순환산치) 용량50~75kWh 배터리 테슬라 모델 3 장단점 정리 외국 유명 차량 사이트와 국내 사이트에서 찾은 2023 테슬라 모델 3 후기의 장단점을 정리해봤습니다. 장점 - 넉넉한 내부 공간, 테슬라의 급속충전 슈퍼차저의 우수성 - 우수한 속도(가속력), 깔끔한 대시보드 구성 - 오토파일럿 자율주행..

글로벌 미팅 시간 계산 웹 사이트! 시차계산 무료 사이트 추천 [내부링크]

글로벌 미팅 시간 계산 웹 사이트 무료 사이트 여러 나라 사람들과 회의를 잡아야 할 때, 시차 계산을 하기 어려워 미팅 시간을 계산하기 어려울 때가 있는데요. 하지만 이제는 그러한 문제를 해결할 수 있는 무료 웹사이트를 소개해드립니다! 이 웹사이트는 여러 나라의 회의 가능한 시간을 입력하면 각 지역 시간으로 회의 가능한 시간을 자동으로 계산해주는 똑똑한 무료 서비스입니다. 이제 더 이상 시간 차이 때문에 미팅을 놓치지 마세요! https://meetingtimescheduler.com/ Meeting Time Calculator Choose an available meeting time of different timezones Calculate the Perfect Meeting Time with..

유투브 쇼츠 썸네일을 변경할 수 없습니다 문제 해결 [내부링크]

유투브 쇼츠 썸네일을 변경할 수 없습니다 문제 요새 틈틈이 유투브 쇼츠를 만들어보고 있는데요. 만들면서 쇼츠를 올리고나서 보니까 썸네일이 이상하더라구요 ㅠ 썸네일을 바꿀 수 있는지 여러 군데 검색을 하고 기능을 요리조리 살펴봐도 이렇게 '지금은 shorts 동영상의 썸네일을 변경할 수 없습니다.'라는 문구만 떠있더라구요. 뭔가 설명을 좀 더 해줬으면 좋겠지만... 이렇게 되어 있어서 더 알아본 결과, 이런 답변을 발견했습니다. 뭔가 그럴거 같더라니 현재는 랜덤하게 썸네일이 적용된다고 하네요. 인스타 릴스의 경우, 썸네일 선택이 가능한데 유투브 기능이 막혀있어서 아쉬운 것 같습니다. 일단은 썸네일 선택이 가능할 때까지 기다리는 수밖에 없을 것 같네요. 결론부터 말씀드리면 현재 이용자가 쇼츠 썸네일을 변경할..

영국 데이터사이언스/AI 석사 실전 준비_영국 집 구하는 법/ 영국에서 집구할 때 주의점/렌트 구하는 사이트 추천 및 총 정리 [내부링크]

2023.04.22 - [데이터 사이언스 도전기] - 영국 데이터사이언스/AI 석사 실전 준비 _연세대 세브란스 비자신체검사실에서 결핵검사 받기(예약, 검진과정 및 비용 정리) 영국 데이터사이언스/AI 석사 실전 준비 _연세대 세브란스 비자신체검사실에서 결핵검사 받기(예 2023.03.23 - [데이터 사이언스 도전기] - 영국 데이터사이언스/AI 석사 실전 준비(2023)_결핵검사 받기 지난번 글에 이어 영국 학생비자 준비를 위해서 연세대학교 세브란스 병원에 예약을 하고 드디 psygo22.tistory.com 영국 집 구하는 법/ 렌트 구하는 사이트 정리 요새 계속해서 영국 석사를 준비 중인데요. 요새 파운드화도 오르고 학비도 오르고, 집값은 2년사이 거의 2배가 뛰고 정말 머리가 아픈 날들을 보내고..

FetchRss 무료 등록 HTML에 RSS 반영방법 [내부링크]

Fetchrss 웹사이트 등록 방법 RSS가 없는 웹사이트의 경우, 서버와 통신으로 자동으로 매번 갱신되도록 할 수도 있지만 FetchRss같은 무료 사이트로 RSS 생성이 가능하기도 합니다 다른 블로그에 Fetchrss로 Rss생성하는 법은 잘 나와있는데, 정작 발급 받고 반영하는 법은 잘 안나와 있어서 검색하다가 Q&A내용에서 발견한 FetchRss 무료등록한 RSS 를 HTML에 반영하는 방법 공유드립니다. 방법은 간단한 편인데요, HTML의 헤드란에 아래 자신이 등록한 웹사이트로 GENERATE한 RSS링크를 href란에 입력하면 됩니다. (보시면 5feed남았다고 나오는건 FetchRss에서는 5개의 feed까지만 무료 계정에서 가능하기 때문입니다) ...

신형 코나 EV 전기차 '디 올 뉴 코나 일렉트릭' 주행거리 [내부링크]

얼마 전, 현대차에서 신형 코나 EV 전기차인 '디 올 뉴 코나 일렉트릭'을 공개했습니다. 현대차에서 계속 사랑받아 왔던 전기차 모델 코나라인인 만큼 관심이 뜨거웠는데요. 오늘은 코나 EV의 주행거리와 사양을 한번 알아보겠습니다. 신형 코나 EV 전기차 '디 올 뉴 코나 일렉트릭' 위 사진에도 볼 수 있듯이 기존 코나와 전체적인 소형 SUV 외양은 비슷한 편이지만 좀 더 미래차 같은 매끈한 느낌이 더 강한 것 같네요. 차는 실물을 봐야 하지만 사진만 봐도 미래지향적인 차를 만들고자 한 느낌이 듭니다. 1회 충전 기준 주행가능거리 410km 64.8kWh 배터리 , 150kW 모터 장착 현대차에서 이번에 강조하는 것 중에 하나는 현대차 최초 차체에 핫스탬핑 소재를 넣었다는 점인데요. 이 핫스탬핑은 소재를 ..

폴 스타 2 고급 전기차 디자인 성능 종합 비교 분석 [내부링크]

폴 스타 2 모델에 대해 알아봅시다 전기차 시장에서 폴 스타 2에 대한 관심이 뜨거운데요. 폴 스타2의 주요 특징에 대해 먼저 알아보겠습니다. 폴 스타 2는 아래 사진처럼 마치 볼보를 연상시키는 고급스러운 형태의 외형을 가지고 있는데요. 볼보의 전기차 자회사에 해당하는 폴 수타는 299마력의 최대 출력, 300마일의 주행거리 운행이 가능합니다. 심지어 폴 스타 2의 Performance Pack에 해당하는 모델은 450마력이라는 엄청난 성능을 자랑합니다. 폴 스타2는 기본형 테슬라 모델3 보다 가격은 좀 더 비싸지만, 테슬라보다는 더 긴 주행거리를 가지고 있습니다. 내부를 보면, 미래형 차를 연상시키는 테슬라와 달리 폴 스타 2는 일반적인 운전석의 형태를 잘 유지한 모습이 특징적입니다. 폴 스타2의 디스..

영국 데이터사이언스/AI 석사 실전 준비 _연세대 세브란스 비자신체검사실에서 결핵검사 받기(예약, 검진과정 및 비용 정리) [내부링크]

2023.03.23 - [데이터 사이언스 도전기] - 영국 데이터사이언스/AI 석사 실전 준비(2023)_결핵검사 받기 지난번 글에 이어 영국 학생비자 준비를 위해서 연세대학교 세브란스 병원에 예약을 하고 드디어 당일치기로 서울을 다녀왔습니다!! 얼마 전, 다녀온 따끈따끈한 결핵검사 후기 및 진행순서에 대해 공유드리겠습니다. 영국비자 결핵검사 시 필요한 서류 여권 증명사진 2매 영국거주 주소 알고가기 1. 비자신체검사실 도착후, 앞에 기계에 '등록번호' 혹은 주민등록을 쳐서 대기표 받기 예약한 시간보다 조금 일찍 도착해서 사진 배경에 보이는 기계에 예약시에 받은 '등록번호' 혹은 '주민등록번호'를 치면 예약일시 확인과 동시에 대기를 위한 작은 종이가 인쇄됩니다. 2. 이제 곧바로 옆에 있는 책상에 위치한..

영국 학생비자 비용,절차,필수 구비서류,추가정보 총 정리(2023) [내부링크]

Student Visa 신청하는 UK 웹사이트 비자 수령 후, 여행으로 입국 가능한 시기 You can arrive before your course starts. This can be either: up to 1 week before, if your course lasts 6 months or less (6개월 이하의 경우 1주일 전) up to 1 month before, if your course lasts more than 6 months (6개월 이상 과정인 경우 최대 한달 전) 비자 신청비용 학생비자 신청 비용 + 의료보험비용 £363 to apply for a Student visa from outside the UK 영국 밖에서 신청하는 경우 363파운드 £490 to extend or s..

Visual Studio 에서 마크다운 Markdown 미리 볼수 있는 법(Preview) [내부링크]

Visual Studio 로 ReadME 작업하다가 Preview 못하는게 답답해서 찾아보다가 알게된 꿀팁입니다. Open Preview (Ctrl+Shift+V) 이렇게 ctrl shift V를 한번에 눌러주면 바로 Preview가 떠서 쉽게 미리보기를 하면서 작업을 진행할 수 있습니다 :) 자세한 사항은 여기 스택오버플로우에서 더 확인이 가능합니다.

초보자도 따라할 수 있는 깃헙 Pull Request 보내는 방법 완벽정리! [내부링크]

1. Pull request 보내고자하는 레포지토리 상단의 'Fork'를 진행한다 2. 내 레포지토리로 Fork 된 레포지토리의 Code에서 클론을 위한 링크 클릭 git clone https://github.com/original/repo.git git clone 을 통해 clone진행 3. Clone한 폴더로 이동 (cd로 폴더이동을 한다는 의미) cd Face-X 4. commit을 진행할 새로운 브랜치 만들기 newbranch에 원하는 브랜치명 넣기 $ git checkout -b newbranch 5. 브랜치에 올리고 커밋하기 git add . git commit -m "commit message" 6. Push 보내기 git push origin newbranch 7. Github로 다시 돌아..

Python 문자열 중 알파벳 골라내기 및 소문자로 바꾸기 [내부링크]

이런식으로 filter함수를 통해서 문자열을 골라내고, 골라낸 문자를 lower을 통해 소문자로 골라내는 방법이 있습니다. for i in filter(str.isalpha,s): new += i.lower() Leetcode의 Palindrome 좌우 배열이 같은 형태의 문자열 관련 (String) 문제에서 자주 등장해서 유용하게 사용할 수 있습니다.

메타 LLAMA 라마 모델 설치 및 사용방법 [내부링크]

지난 달, 메타에서 일부 등록한 사람들을 대상으로 공개된 LLAMA가 토렌트, 깃허브 같은 공개 사이트에 유출되면서 전세계에서 난리가 났었는데요. 약간 뒤늦게, 어떻게 쓸 수 있는지 찾아보다가 참고할 수 있는 링크를 공유드립니다. 윈도우, 리눅스에 LLaMA 사용벙법 LLAMA INSTALL 방법 A LLaMA that spits out posts: Our test of Meta's AI Meta's AI has escaped the lab! Discover the ethical problems it poses and get a sense of the environmental impact of such an AI. les-enovateurs.com 각 모델을 사용하려면 가지고 있어야 하는 최소 용량도 함..

Pytorch 모델 작성 기본 구조 이해하기 [내부링크]

파이토치 모델 작성 기본 구조를 간략하게 설명해달라고 했더니 ChatGPT 가 짜준 구조입니다. 구조에 대한 기본 설명 nn.Module을 통해 모델의 층을 정의하고 forward pass할 층을 구성하도록 한뒤에, 사용할 데이터를 로드한 뒤, 모델/손실함수/옵티마이저를 정해주고 훈련을 시작합니다. 이후에 정한 epoch만큼 각 배치의 데이터들을 꺼내서 zero_grad로 옵티마이저의 그레디언트를 초기화 시킨 뒤에 모델을 통해 나온 결과를 비교해서 정의한 손실함수에 넣습니다. 계산된 손실함수를 토대로 역전파를 돌리고 옵티마이저의 파라미터도 업데이트를 진행합니다. 예시에는 if 문을 토대로 10개 배치를 기준으로 로그를 남겨습니다. Pytorch 모델 작성 기본구조 import torch import to..

나만 알고 싶은 코딩테스트 템플릿/ 인터뷰 준비 사이트 [내부링크]

오랜만에 Leetcode에 들어가서 이것저것 끄적이다가 Interview준비 란에서 엄청 괜찮은 자료를 발견해서 링크 공유드립니다 :) 웹사이트 링크 Code Templates Stages of Interview CheatSheets 이렇게 3가지의 웹사이트가 있는데 Code Templates은 dfs,bfs 포인터 등 다양한 단골 유형의 문제에 써먹을 수 있는 기본 코드 템플릿이 무려 C++, Java, JavaScript, Python3 4가지 프로그래밍 언어로 쓰여져 있습니다. Stages of Interview는 인터뷰의 단계별 준비 꿀팁 가이드 같은게 적혀있고, Cheatsheets에서는 시간, 공간 복잡도를 쉽게 계산 할 수 있도록 말그대로 CheatSheet가 나와 있습니다. 누가 만든건지는..

SQL 연습 외국 웹사이트 5곳 추천 [내부링크]

데이터 관련 직무에서 필수적으로 요구되는 SQL 을 공부하기 위한 외국 사이트를 추천합니다 ㅎㅎ SQL 연습문제 사이트 HackerRank DB Fiddle SQL Fiddle SQL ZOO SQL 기본구문연습 w3School SQL Practice Learn SQL - Online SQL Terminal - Practice SQL Querys www.sql-practice.com 한국 웹사이트 중에서는 예전에 프로그래머스 SQL 문제를 풀어보기도 했었는데요. 위에 처럼 외국 웹사이트에서도 기본 구문은 얼마든지 연습할 수 있는 곳이 많기 때문에 시험 준비 때 참고 하시길 바랍니당

강화학습 Gymnasium 연습 튜토리얼 추천 [내부링크]

FreecodeCamp Gymnasium 비디오 추천 어제부터 강화학습에 대해 궁금증이 생겨서 좀 찾아보다가 약 3시간 분량의 FreecodeCamp 튜토리얼을 발견했습니다!! 인도 영어발음이 약간 알아듣기 힘들지만, 쉽게 따라갈 수 있도록 구글 코랩도 제공하기 때문에 제공하는 코랩 노트북을 보면서 하나씩 따라갈 수 있었습니다. 생각외로 API호출도 import 문을 통해서 간단하게 수행이 가능했고 gym.make를 통해서 environment 구성도 가능하게 되어있었습니다. import gymnasium as gym env = gym.make("Blackjack-v1", sab=True,render_mode="rgb_array") 아직 완벽히 내용이해는 못했지만 강화학습에 관심있는 분들이라면 참고해보시..

강화학습 시뮬레이션을 위한 공부 사이트 추천 : Gym [내부링크]

여러가지 딥러닝 모델을 공부하면서, 이제 딥러닝의 꽃이라고 할 수 있는 강화학습을 배우기 시작했는데요. 강화학습에서 시뮬레이션을 돌릴 때 사용하는 Gymnaisium Documentation 웹사이트를 공유합니다. https://gymnasium.farama.org/environments/mujoco/ Gymnasium Documentation A standard API for reinforcement learning and a diverse set of reference environments (formerly Gym) gymnasium.farama.org Gymnaisium을 어떻게 사용해야하는지, 어떤 식으로 작동되는지 자세한 설명이 나와있으니 참고하시면 좋을 것 같습니다!

마이로소프트 AI 디자이너 후기(AI디자인의 현실화) [내부링크]

마이크로소프트에서 AI 디자이너를 발표하고 대기등록에 바로 등록을 했었는데요, 드디어 얼마전에 웨이팅 리스트에서 승인을 받아서 바로 사용해봤습니다! 우선 홈페이지에 들어가면 이렇게, 프롬프트를 입력하고 디자인 결과가 오른쪽에 나오게끔 되어있구요 디자인 실력이 얼마나 되는지 한번 실험을 해보겠습니다. AI디자이너로 실험해보기 저는 지금 도넛이 땡기기 때문에 delicious donut advertisement with fun and comic, but modern mood (재밌고, 코믹하면서 모던한 맛있는 도넛 광고)라는 프롬프트를 입력했습니다 몇 초 정도 지나자, 바로 결과물을 손쉽게 볼 수 있었는데요. 두둥 생각보다 꽤 괜찮은 결과물들이 나왔습니다. 제 요구사항과 부합하게 재치있는 코믹한 요소도 있고..

빠르고 간편한 Pytorch Lightning 개념 정리 [내부링크]

깃헙에서 코드를 구경하다가 Pytorch Lightning 을 발견했는데요. (공식 홈페이지 ) 기존 Pytorch 보다 코드가 훨씬 단축되어서 딥러닝 작업을 훨씬 간단히 수행할 수 있습니다. Pytorch와 API도 유사해서 기존 Pytorch 코드도 쉽게 변환이 가능합니다. 가장 좋은 점은 기존에 Pytorch에서 했던 데이터 로더, 모델 정의,손실함수, 최적화 및 학습 루프 등 딥러닝 작업을 위한 기본 모델 구성을 , Python Lightning에서는 모듈화한 간단한 명령으로 수행이 가능합니다. Pytorch Lightning 설치 pip install pytorch-lightning Pytorch와 Pytorh_lightning 비교 Pytorch # PyTorch import torch imp..

영국 데이터사이언스/AI 석사 실전 준비(2023)_결핵검사 받기 [내부링크]

이제 슬슬 영국 석사 비자(Student Visa)를 받기 위해 정보를 탐색 중인데요. 그 중 필수로 해야하는 결핵검사를 다루겠습니다! 정확한 정보 파악을 위해 영국 정부 홈페이지에서 가져왔습니다 결핵검사는 지정 병원에서! 만약, 영국에서 6개월 이상 거주 예정이라면 결핵검사는 필수적입니다. 하지만 이것도 영국에서 지정된 병원만 가능한데요 우리나라에는 강남 세브란스와 연세대 2군데만 가능합니다!! Gangnam Severance Hospital 211 Eonjuro Gangnam-gu Seoul, 06273 Tel: (82) 2 2019 1208/1209 Yonsei University Medical Centre Severance Hospital International Health Care Center..

일상을 완전히 뒤바꿀 Microsoft Copilot의 등장(기능 정리) [내부링크]

2023.03.16 마이크로소프트에서 기존의 Microsoft 365 도구들과 모두 연계가 가능한 획기적인 AI 소프트웨어 마이크로소프트 코파일럿을 발표했습니다. 내용을 자세히 알아보기 위해 'The Future of Work With AI' 발표 비디오를 처음부터 끝까지 들어봤는데요. 어떻게 벌써 이런 기술이 가능하지, 역시 Tech 최강자들은 미리, 그리고 정말 빨리 기술을 적용하는구나를 실감할 수 있었습니다. 주요한 기능들과 어떻게 앞으로 업무에 응용 가능한지 살펴보겠습니다. ️ Microsoft Copilot의 기능 Microsoft 앱의 데이터를 활용한 Business Chat 우리가 ChatGPT를 사용하는 것처럼 어떤 업무를 해달라고 하면 자동으로 글을 작성해 줍니다. - 이 LLM(L..

영국 AI / 데이터사이언스 대학원 준비 _ 왜 영국을 선택했을까 #2 [내부링크]

2023.03.12 - [데이터 공부 TIP] - 영국 AI / 데이터사이언스 대학원 준비 _ 필수 서류 정리 #1 영국 AI / 데이터사이언스 대학원 준비 _ 필수 서류 정리 #1 이번에 영국 AI / 데이터사이언스 대학원을 준비하면서 꼭 필요했던 필수 서류들을 정리해보려 합니다. (왜 영국 대학원 진학을 결정했는지, 어떤 장단점이 있는지는 다른 게시물에서 별도로 다 psygo22.tistory.com 1편에 이어서 왜 영국을 선택했는지 정리해보려 합니다. 보통 해외로 석사를 간다고 하면 미국을 많이 생각하는데요. 저는 아래와 같은 이유로 영국을 선택했습니다. 1. 세계적인 AI 연구의 중심지, 영국 직장에서 국가별 AI경쟁력에 대해 조사할 일이 있었는데요. 출처마다 순위 차이가 조금씩 있지만, 어..

영국 AI / 데이터사이언스 대학원 준비 _ 필수 서류 정리 #1 [내부링크]

이번에 영국 AI / 데이터사이언스 대학원을 준비하면서 꼭 필요했던 필수 서류들을 정리해보려 합니다. (왜 영국 대학원 진학을 결정했는지, 어떤 장단점이 있는지는 다른 게시물에서 별도로 다루겠습니다) 이 게시물은 영국 대학원 전반에서 요구하는 공통적인 서류에 대해 작성한 것으로 정확한 사항은 지원하는 학교의 ! 지원 과 지원 관련 페이지를 정말 꼼꼼히 확인하시길 바랍니다!! (같은 학교라도 과마다 요구하는게 다르기 때문에 확인 또 확인이 필요합니다) 내가 작성해야 할 것들 1. Personal Statement 일명 자소서입니다. 왜 이 대학을 선택했는지, 이 전공을 왜 선택했는지, 내 경험과 연관지어서 어필을 해야 하는 단연코 가장 중요한 문서라고 할 수 있는데요. 여러 대학원들을 지원하면서 알게 된 ..

AI 독학 가이드 (by. Emil Wallner) [내부링크]

학위 없이 AI전문가가 되는 법, 혹은 취업하는 법이 뭘까요? 저는 처음 공부를 시작할 때, 여러 외국 사이트에서 AI, Data Science Roadmap, study guide, advice... 등등 여러 사람들의 의견을 최대한 수집하기 위해 노력했는데요. (물론 지금도 현재진행형이지만ㅠ) 그 중에서 제가 가장 감명깊었고 또 멘토로 삼고 싶은 Emil Wallner 의 인터뷰를 가져왔습니다!! Emil Wallner은 독학을 통해서 AI 분야로 전향했고, 개인 AI 웹사이트를 성공시키고, 구글에서 일한 화려한 경력이 있는 분인데요. 인터뷰의 핵심 내용을 몇가지 공유드립니다. AI를 독학하시는 분들이라면 꼭 한번 생각해볼만한 내용들인 것 같습니다. AI독학러들이 학위 없이도 성공할 수 있는 성과 1..

SanFrancisco Gen AI Conference 요약 정리 (+AI에 대한 의견) [내부링크]

이번에 샌프란시스코에서 열린 Generative AI conference 의 정리본을 뤼튼 테크놀로지에서 받게 되어서, 제공받은 자료를 기반으로 어떤 흥미로운 이야기들이 진행되었는지 핵심을 위주로 재정리해봤습니다. 오는 5월에 한국에서 열리는 Generative AI conference도 기대하고 있는데, 이렇게 좋은 자료를 공유해주셔서 감사드립니다 :) Kevin Roose(Future Proof 저자, 뉴욕타임즈 기자) - AI와 협업의 중요성 "AI는 결국 인간의 역량을 보완하는 기술이며, 사람들은 이러한 신기술과 함께 더욱 창의적이고 생산적으 로 일할 수 있을 것입니다. AI의 발전에 대한 걱정보다는 AI와 함께 일하는 방법을 찾는 것이 중요합니다. ...직급이나 자격증보다는 개인의 역량과 능력이..

Nginx와 Apache 알아보기 [내부링크]

이번에 Amazon EC2 인스턴스로 웹 배포를 하면서 NGINX를 알게 되었는데요 이왕 만난김에 웹 서버 소프트웨어로 잘 알려진 NGINX와 Apache를 비교해보려 합니다. Apache와 NGINX 차이 비교 Apache Nginx 오픈소스 HTTP서버 오픈소스, 고성능 비동기 웹서버, 리버스 프록시 버그나 유지보수가 사용자 커뮤니티에 의해 관리 Nginx 회사에서 관리 클라이언트 요청 멀티프로세싱으로 처리 동시에 여러 클라이언트 요청 동시 수행 싱글 쓰레드는 하나의 커넥션과 연결 여러 연결 동시처리 가능(Apache대비 2배 빠르며 적은 메모리 소모) 유연하고 역동적인 모듈 처리 가능 역동적 처리가 안되므로 sw에 컴파일 되어야 함 Windows support 부족 Window support 사용자..

국비지원 부트캠프 프로젝트 끝!!!!/후기/추천/소감 #3 [내부링크]

6개월간의 대장정이 끝나고 드디어 부트캠프가 끝났습니다!!! 이제 매일 9시-6시 수업과 멘토링에서 벗어나게 되어서 너무 좋으면서도 시간이 새삼 이렇게 지났나 싶네요. 그래도 6개월의 시간이 지난만큼 제가 그동안 뭘 얻었는지 앞으로 뭘 해야할지 정리하는 시간을 가져보려 합니다. 부트캠프에서 얻은 것 미니 프로젝트 및 최종 프로젝트 결과물 Java중심의 백엔드와 프론트엔드에 대한 간략한 이해 AI와 웹 연동에 대한 경험 SQL 디벨로퍼, Eclipse, Spring STS tool 등 여러 툴 경험 부트캠프기간 동안 개인적 성과 개발블로그에 공부 기록 코딩 테스트 공부로 알고리즘 익히기 Coursera 강의 3개 수강 친구들과 해커톤 나가기 혼자 데이터 사이언스 대회 2개 나가기 부트캠프기간 이후..

비전공자의 AI 대학원 도전 후기 (국내편) _ #1 [내부링크]

요새 뉴스를 보다보면 '비전공자도 환영하는 AI 대학원' '비전공자 환영' 이라는 문구가 많이 보이는데요. 직접 국내와 해외대 대학원에 부딪혀본 경험으로, 실제 비전공자의 AI 대학원 도전 후기를 공유드리려합니다... '비전공자' 의 기준 AI나 데이터사이언스 대학원의 기준에서 비전공자의 기준이란, 우선 수학/통계/컴퓨터쪽 전공을 제외한 사람들을 의미합니다. 하지만, 이 비전공자 역시 공대인지, 인문계열인지에 따라 정말 달라지는데요. 뽑는 사람의 입장에서 웬만한 공대수학을 경험한 기계공학, 전자공학과 전혀 대학에서 수학수업을 안 들은 영문과, 사회학과가 있다면 누구를 뽑을까요? 아무래도 공대계열을 더 선호하는 가능성이 높겠죠,,,, 비전공자 == 공대생 이 공식을 뛰어 넘을 수 있을 만큼의 성과를 가지..

save 한 모델 적용해서 이미지 분류값 예측하기!(pth 파일) [내부링크]

베스트 결과가 나온 모델을 저장해놓고 사용하는 법을 간략히 소개합니다! Resnet18 예시) model = models.resnet18(pretrained=True) model.load_state_dict(torch.load('base_model.pth', map_location=torch.device('cpu'))) transform = transforms.Compose([ transforms.RandomHorizontalFlip(p=0.5), transforms.RandomVerticalFlip(p=0.5), transforms.Resize((224, 224)), transforms.ToTensor(), transforms.Normalize((0.5,), (0.5,)) ]) 먼저 어떤 모델을 사용할..

파이썬 구글 이미지 자동 크롤링 하는 법 정리 (feat.2023) [내부링크]

여기저기 찾아보니 대부분 자료가 오래된 것들이라 없어진 library도 있고 해서 크롤링 코드를 참조하면서 짜기가 힘들었는데요,,,, 고군분투하면서 만든 2023년 버전 구글 이미지 크롤링 코드 공유합니다! 특히 크롤링 했을 때 썸네일 크기의 이미지가 나와서 원본크기의 이미지 다운로드를 구현하느라 시간이 좀 걸렸네요 ㅜ #구글 이미지 크롤링 #원본크기 크롤링 #동적 크롤링 구글 코랩이나 아나콘다 노트북에서 처음 selenium을 쓴다면) ! pip install selenium !apt -get update #Colab !apt install chromium-chromedriver #Colabe에서 chromedriver사용이 가능하도록 합니다 webdriver 설정을 위한 기본 세팅 from selen..

파이썬 Selenium을 사용한 크롤링 (2023버전) _ 태그 쉽게 찾기 [내부링크]

1. Selenium 사용을 위해 Chrome 버전 정보 확인 (우측 상단 점 3개 > 도움말 ) 버전 110.0.5481.96(공식 빌드) (64비트) 2. 자신의 버전에 부합하는 Chrome driver 설치 https://chromedriver.chromium.org/downloads ChromeDriver - WebDriver for Chrome - Downloads Current Releases If you are using Chrome version 111, please download ChromeDriver 111.0.5563.19 If you are using Chrome version 110, please download ChromeDriver 110.0.5481.77 If you are..

캐글 GPU 아끼는 방법! (코드 첨부) [내부링크]

캐글이나 코랩을 열심히 쪼개면서 공부하면, 코드가 좀 잘 돌아가네...? 싶을 때 GPU 다 썼다는 알림이 오는데요.... 이번에 유용하게 사용했던 GPU 아끼고 비우는 코드를 공유합니다. from GPUtil import showUtilization as gpu_usage from numba import cuda def free_gpu_cache(): print("Initial GPU Usage") gpu_usage() torch.cuda.empty_cache() cuda.select_device(0) cuda.close() cuda.select_device(0) print("GPU Usage after emptying the cache") gpu_usage() free_gpu_cache() 이 코드를..

Face Detection 의 역사 및 응용코드 [내부링크]

Face Detection Model의 역사 1. Viola Jones Algorithm : 처음으로 상업적으로 사용된 모델이자, 빠른 속도와 정확도를 가짐. 다만, 노이즈가 있거나 정면을 보고 있지 않은 모델에서는 오류가 많이 발생함 2. Histogram of Oriented Gradients(HOG) : 이미지를 그리드 형태로 나눠서, 그리드별 Gradient를 계산하여 히스토그램을 생성함. 이 피처들을 바탕으로 선형분류기(SVM)을 사용하여 얼굴(1) 얼굴아님(0)을 분류함. 일반적으로 Haar Cascade로 많이 알려져 있음 이후, 딥러닝을 적용한 기법들이 등장하며 기존 1,2번의 한계를 뛰어넘는 방법들이 고안됨 3. SSD : Dlib의 HOG 보다 느리지만, 측면/가려진 이미지 등 다양한 ..

model.fc.in_features 의미 [내부링크]

Resnet18을 활용한 코드를 공부하다가 나온 self.model.fc.in_features 의 의미를 찾아봤습니다. class Network(nn.Module): def __init__(self,num_classes=136): super().__init__() self.model_name='resnet18' self.model=models.resnet18() self.model.conv1=nn.Conv2d(1, 64, kernel_size=7, stride=2, padding=3, bias=False) self.model.fc=nn.Linear(self.model.fc.in_features, num_classes) def forward(self, x): x=self.model(x) return x 여..

파일 다운로드 관련 Linux 명령어 정리 [내부링크]

캐글 데이터 사용시 종종 등장하는 명령어들을 정리합니다. 현재 위치 파일 다운로드 => wget !wget [url] 다운로드한 파일이름 변경 => wget[url] -O [바꿀이름] tar형식 압축=> tar -cvf !tar -cvf [압축파일] tar형식 압축해제 => tar -xvf !tar -xvf [압축해제할 파일] 특정폴더에 압축풀기 => tar -xvf [파일명] -C [디렉토리 위치] !tar -xvf [file명] -C[디렉토리 위치] 예시코드_ if not os.path.exists('/content/example'): !wget http://dlib.net/files/data/ibug_300W_large_face_landmark_dataset.tar.gz !tar -xvzf 'ibu..

P-값 의 개념 및 오해와 진실 정리 [내부링크]

통계에 빠질 수 없는 P-값을 뽑아버리겠다는 생각으로 막판 정리를 해보려합니다 ㅎㅎ P-value 한번 가봅시다! 1. P-값이란? P-값이 어떤 역할을 하는지 큰 갈래부터 보겠습니다. 우선, P-값은 '통계적 유의성'을 판단하기 위한 하나의 지표입니다. 통계적 유의성(statistical significance)는 모집단에 대한 가설이 '우연'이라고 판단되지 않을 정도로 의미가 있는지를 의미합니다. 풀어서 해석하자면, 가설검정에서 우리가 귀무가설과 대립가설처럼 하나의 가설을 만드는데, 이 가설이 정말 의미가 있는걸까? 라는 걸 해석하는게 통계적 유의성입니다. 귀무가설 하에서 관찰된 통계량보다 더 극단적 값이 관찰될 확률 The p-value is defined as the probabilty, unde..

[Spring MVC] Controller에서 EL을 사용한 jsp로 값 전달하기 [내부링크]

Controller.java @PostMapping("/mem") public String show(MemberVO vo) { if( vo.getName() == null || vo.getName().equals("")) vo.setName("없음"); if( vo.getPhone() == null || vo.getPhone().equals("")) vo.setPhone("없음"); if( vo.getId() == null || vo.getId().equals("")) vo.setId("없음"); if( vo.getPassword() == null || vo.getPassword().equals("")) vo.setPassword("없음"); return "view"; } @PostMapping사용을 통..

[Spring MVC 어노테이션] @RequestParam 알아보기 [내부링크]

@RequestParam : 입력받는 요청 파라미터를 메서드의 매개변수에 대응해서 받는 어노테이션 1. @RequestParam을 통한 매개변수명과 변수값 분리 @RequestMapping("/query") public ModelAndView proc(String apple, @RequestParam("num")int number) { ModelAndView mav = new ModelAndView(); mav.addObject("spring", apple+"&"+number); mav.setViewName("View1"); return mav; } @RequestParam("num") int number=> num라는 매개변수명으로 number값을 입력해야함 addObject는 request.setAt..

Spring 프로젝트 초기설정(한글 깨짐 해결) 방법 [내부링크]

Spring MVC프로젝트 생성 시 해야하는 기본 작업들에 대한 메모입니다~ 1. web.xml 파일에 UTF-8설정 하단에 아래 코드 삽입 encodingFilter org.springframework.web.filter.CharacterEncodingFilter encoding UTF-8 encodingFilter /* 2. 실행하려는 JSP 파일 상단에 아래 코드 삽입 3. 그 외 Spring MVC Project 생성시 해야할 것들 pom.xml파일상에 API 정보, 버전, 자바 등 버전 정보 수정 위 내용처럼 web.xml에 한글 깨짐 방지를 위한 코드 등록 사용하는 service, vo,dao 같은 파일에 대해 태그를 추가

OpenAI DALLE2 사용 후기 (Midjourney와 비교) [내부링크]

2022.12.29 - [Data Science] - 30초만에 예술작품을 만드는 AI (MidJourney) 요새 이미지 생성 AI에 빠져서 이것저것 시도하고 있는데요. 이번에는 오픈 AI의 DALLE2를 사용해봤습니다 :) ChatGPT를 사용하면서 OpenAI의 작품에 대한 기대가 컸는데요. DALLE2 역시 초기에 무료로 사용할 수 있는 시도 횟수가 한정적이지만 실험을 위해 몇개를 시도해봤습니다. 이번에 검은 토끼의 해를 기념해 검은 토끼 관련 이미지를 해봤습니다. BLACK RABBIT WITH PEOPLE SURROUNDED WITH DIFFERENT EMOTION 이런식으로 해서 그런가 사람 이미지가 뭉개져서 나왔습니다. REALISTIC과 FURRY 라는 이미지를 추가해서 그런지 털 자체는..

경사하강법 Python 파이썬 코드로 구현하기 [내부링크]

딥러닝을 배우면 정말 지긋지긋하게 나오는 경사하강법입니다. 좀 제대로 머리에 경사하강법 원리를 익히기 위해 여러 소스를 참고해서 파이썬 코드를 작성했습니다. import numpy as np import matplotlib as plt def function(x1, x2): #손실함수 임의로 정의 return 0.5*x1**2 + (5/2)*x2**2 - x1*x2 - 2*(x1 + x2) def gradient(x1, x2): #각 값에 대한 미분식 제시 return np.array([-2 + x1 - x2, -2 - x1 + 5*x2]) x1 = 2 #x1, x2를 임의 값으로 설정 x2= 1 lr = 0.1 # step size (learning rate, 실험을 위해 크게 설정함) precisio..

최대사후추정(MAP) 개념 및 최대우도추정(MLE)과 비교 [내부링크]

최대사후추정(Maximum A Posteriori)의 사후확률이란? 사후추정이 뭘 의미하는지부터 보겠습니다. 보통 우리가 표본을 뽑는다 라고 했을 때, 모수(θ)에서 표본 x를 뽑는다 라는 θ -> x 의 순서가 자연스럽게 느껴집니다. 그러면 여기서 θ는 사전에 우리가 알고 있는 값이 되고, x는 그 이후에 나오는 값이 되는 선후관계가 생깁니다. 그래서 우선적으로 P(θ)와 P(x|θ)를 아래와 같이 규정하고 가겠습니다. P(θ) 사전확률밀도함수(Prior Probability Density Function) P(x|θ) 파라미터θ가 주어질 때 표본 x의 확률 이제 여기서 질문을 질문을 거꾸로 해보겠습니다. 그러면 (x -> θ) 표본 x가 주어질 때 파라미터 θ를 구할 확률은? P(θ|x) 이게 바로 ..

국비지원 부트캠프 프로젝트/후기/추천/소감 #2 [내부링크]

2022.12.22 - [데이터 사이언스 도전기] - 국비지원 부트캠프 지원과정/후기/추천/소감 #1 요새 부트캠프 프로젝트를 하느라 정신이 없어서 블로그를 잘 못했는데요. 프로젝트를 진행 중인 만큼 생생한 소감을 간략하게 남겨보려 합니다 ㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎ 프로젝트에 대한 현재의 감정은 아래와 같습니다. 네.... 분명 부트캠프에서는 기본기를 몇 주 정도 배운 것 같은데 말이죠. 그런데 갑자기 완성된 결과물을 만들어야 하는 상황에 직면했습니다. 마치 포크 쥐는 법을 가르쳐주고 전쟁에 나간 느낌입니다. 지난번에 후기에서 결국은 프로젝트는 본인이 하는 거라고 적었었는데, 그걸 다시 체감하는 중입니다. 무한한 에러와 구글링을 통해 기능을 하나하나 구현하고 있습니다.... 팀원들과 강사님께 질문을 할 수는 있..

우당탕탕 데이터 사이언스 도전기 _ #2 파이썬부터 해볼까 [내부링크]

2022.11.21 - [데이터 사이언스 도전기] - 우당탕탕 데이터 사이언스 도전기 _ #1 데이터가 뭐길래?! 지금 생각했을 때, 처음 프로그래밍 언어를 망설임 없이 도전했던건 정말 컴퓨터에 대해 아무것도 몰랐기 때문에 가능했던 것 같다. 나는 외고를 졸업하고 어문계열 전공을 한 뼛속부터 문과로, 새로운 언어 배우는 걸 좋아하는 편이었다. 그래서 프로그래밍 언어도 '언어'인데 잘 할 수 있겠지뭐 라는 생각으로 공부를 시작했다. 한번 공부해보자! 일단 마음은 먹었는데 주위를 둘러보니 코딩하는 사람이 아무도 없었다. 이렇게 아는 공대생이 없었나 싶을 정도로 주위에는 문과생밖에 없었다... 어떡하지 하다가 문과에서 컴퓨터쪽으로 공부를 전향한 친구를 만나서 조언을 구했다. 유투브도 보고, 이것저것 찾아보고 ..

최대우도추정(MLE) 개념 총 정리 [내부링크]

처음에 이 개념을 접하고 용어가 어렵다고 생각했는데 하나씩 뜯어보면서 개념을 정리해보려합니다. 먼저, MLE는 영어 뜻은 'Likelihood 를 최대화하는 추정방법'입니다. 그럼 Likelihood(가능도 = 우도)가 뭔지 알아봐야겠죠. Likelihood란? 통계학상으로 Likelihood란 확률분포X의 모수θ가 어떤 확률변수의 표집값x와 일관된 정도를 나타냅니다 (출처:위키백과) 우리가 모수에서 표본을 추출할 때, 뽑히는 표본은 데이터x가 같을 수도 있고 다를 수도 있죠. 그런데 표본X에서 우리가 찾는 값x가 나오는 likelihood가 얼마인지 알고싶습니다. Pθ(X=x) = 표본 X가 특정 x일 확률이얼마일까요? 이 질문을 수식화하고 바라보는 관점을 x중심이 아닌, θ의 관점으로 해석한게 가능도..

신뢰수준과 신뢰구간이란? [내부링크]

신뢰구간(Confidence interval)이란? 신뢰구간은 구간 추정을 통해 모수가 포함될 추정값을 제시하는 방법을 의미합니다. '이 구간 안에는 모수의 추정값이 있을 것이다' 라는 추측을 할 때 사용되는 개념이라는 건데요. 그러면 이 개념을 왜 사용할까요? 이는 표본이라는 것 자체가 랜덤샘플링을 통해 추출되어 '불확실성'을 내재하고 있기 때문인데요. 이 때문에 '신뢰구간'을 제시함으로서 표본을 활용한 추정의 잠재적인 오류를 제시하거나 표본의 크기가 더 커져야 하는지 여부에 대한 정보를 알려주는 것이죠. 신뢰수준(Confidence level)이란? 신뢰'구간'과 신뢰'수준'은 어휘에서 의미 구분이 가능합니다. 신뢰구간은 A에서 B라는 하나의 범위를 나타내고 신뢰수준은 '신뢰구간에 모평균값이 포함될 ..

부트스트랩(+배깅) 리샘플링 개념 정리 [내부링크]

오늘은 부트스트랩과 리샘플링의 개념을 알아보겠습니다. 부트스트랩이란? 부트스트랩은 리샘플링 방법의 일종으로, 현재의 표본에서 추가적으로 표본을 복원추출하는 방법입니다. 복원추출이라는 말이 어렵다면 간단히 주머니에서 공을 꺼냈다가, 공을 빼지 않고 다시 주머니에 넣어서 그 다음에 공(표본)을 다시 추출하는걸 상상해보면 됩니다. 즉, 뽑았던걸 다시 뽑음 = 중복돼서 뽑음 = 복원추출하면서 리샘플링하는 방법이 부트스트랩인거죠. [ 부트스트랩 재표본추출 과정] 1. 샘플 복원추출 n 번 반복 2. 재표본 추출된 값의 평균 기록 3. 1-2단계 m번 반복 4. m개의 결과를 기반으로 표준편차, 신뢰구간 탐색, 가설검증 수행 그렇다면 부트스트랩의 목적은 뭘까요? 데이터사이언스를 위한 통계 책에서는 부트스트랩의 목적..

데이터사이언스의 '편향' 이란? [내부링크]

누군가가 편향에 대해 설명해보세요 라고 질문한다면, 뭔지는 어렴풋이 알지만 명료하게 대답하기는 어렵기 때문에 한번 정리하고 넘어가려 합니다. 데이터 분석에서 빠지지 않는 질문 편향은 뭘까요? 편향이란? 편향이라는 단어 자체는 일상에서도 '편향적인 사람' '편향적이다' 등등 많이 사용하는 표현입니다. 일상 속에서는 어떠한 방향으로 치우친 경향을 설명할 때 많이 언급됩니다. 그러면 통계적인 측면에서 편향은 어떻게 정의될까요? 데이터사이언스를 위한 통계 책에서는 '통계적 편향은 측정 과정 혹은 표본추출 과정에서 발생하는 계통적인(systematic) 오차를 의미한다' 라고 정의했습니다. 이와 유사하게 위키피디아에서는 '결과와 사실 간의 차이를 유발하는 체계적인 경향을 의미한다'고 하는데요. 2가지 정의 공통적..

30초만에 예술작품을 만드는 AI (MidJourney) [내부링크]

AI로 만든 그림을 직접 손쉽게 체험해볼 수 있는 MidJourney 이용해봤는데요 뉴스에서 볼 때와 달리, 직접 해보니 AI가 미래를 정말 바꾸고 있구나를 체험해볼 수 있었습니다. 이용방법) MidJourney 홈페이지에 가서 간단한 회원가입 및 이메일 인증을 하면 아래와 같은 채팅방에 입장할 수 있습니다. 채팅창에 /image 문구와 자신이 표현하고 싶은 그림의 특징을 입력하면 되는데요 저는 /image white tiger on iceberg를 입력했더니 약 30초-1분 후에 4가지 옵션의 그림이 떴습니다. 와 그림의 분위기와 털의 질감, 물결의 흔들림, 그림자, 수증기까지 정말 섬세하게 표현된 멋진 그림이 나왔습니다. 여기서 끝이 아니라 아래에 U1,2,3,4와 V1,2,3,4가 나오는데요 아..

분산과 표준편차의 통계적 의의/차이 [내부링크]

사실 분산과 표준편차는 중학교때부터 용어는 들어왔지만, 왜 데이터 사이언스에서 이 2개의 개념이 빠지지 않는지 어떤 의미를 가지고 있는지 살펴보려합니다. 변이추정을 위한 분산/표준편차 데이터를 2차원으로 표현하면 하나의 점으로 표현되는데요. 이처럼 데이터의 위치는 데이터에 대한 주요한 정보를 가지고 있습니다. 이때 데이터가 얼마나 퍼져 있는지 산포도(dispersion= spread = scatter), 즉 데이터의 변이(variability) 추정을 위한 값이 '분산'과 '표준편차'입니다. 데이터가 얼마나 퍼져 있는지를 알려면 무엇을 기준으로 얼마나 퍼져있는지에 대한 개념이 필요합니다. 여기서 등장하는 개념이 '편차'입니다. 여기서 이 2개의 개념 역시 { 추정값 - 관측값 } = 편차를 근간으로 ..

ChatGPT 이용 상세 리뷰 [내부링크]

공개와 동시에 엄청난 파장을 일으키고 있는 ChatGPT를 사용해봤습니다. ChatGPT웹사이트에 들어가서 기본적인 계정생성/휴대폰 번호 인증을 하고 나면 아래와 같은 안내문이 뜨는데요 현재 공개된 ChatGPT는 진행중인 연구의 무료 실험 버전이며, 시스템 발전/보완을 위한 외부 피드백을 받는 것이 목적이라고 하네요. 서비스를 상용화하기 앞서서 실제 이용자들의 이용경험을 모으고 부족한 점을 사전에 보완하기 위해서 공개한 것으로 보이는데요. 전세계 사람들을 대상으로 예비 버전을 공개하고 정보를 모은다는 발상 자체가 정말 놀라운 것 같습니다... 마치 프로젝트를 90% 정도 마무리 해놓은 기술적 자신감을 바탕으로 마지막 10%를 채워보겠다는 뉘앙스... 다음 화면으로 넘어가면 진행하는 대화들은 시스템 개선..

자바스크립트 배열 최소/최대값 구하기 [내부링크]

1. Function을 통한 정렬 후 위치 값 반환 //array이름을 arr로 가정했을 때 arr.sort(function(a,b){return a-b}) //오름차순 정렬 arr.sort(function(a,b){return b-a|) // 내림차순 정렬 자바스크립트의 array sort 기능은 arr 안의 요소들을 String 취급하기 때문에, 별도의 function 정의를 통해 a-b or b-a의 값이 음수인지, 0인지, 양수인지에 따라서 컴퓨터가 선후관계를 파악해서 정렬하도록 합니다. 그러면 여기서 최대, 최소값을 구하는 방법은 바로 인덱싱입니다. arr[arr.length-1] 오름차순한 배열에서 가장 끝값은 최대값을 의미하고 arr[0] 내림차순배열에서 가장 첫번째 값도 최대값을 의미하겠죠..

Leetcode 2389. Longest Subsequence with Limited Sum (Binary Search, Prefix Sum) [내부링크]

https://leetcode.com/problems/longest-subsequence-with-limited-sum/description/ Longest Subsequence With Limited Sum - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 메리크리스마스~ 오랜만에 작성하는 에러 코드이네요 요새 자바를 배워서 자바와 파이썬을 같이 생각하려는 연습을 하고 있는데요. Leetcode 난이도 easy이지만 생각할거리가 있는 문제를 가지고 왔습니다. ..

국비지원 부트캠프 지원과정/후기/추천/소감 #1 [내부링크]

저는 이제 부트캠프 과정을 약 50-60% 정도 수강한 상태입니다 :) 중간점검하는 차원겸 왜 부트캠프에 지원했고, 소감은 어떠한지 정리해보려합니다. 과거의 저처럼 부트캠프를 지원할까 말까 망설이시는 상태이시라면 참고해보시면 좋을거 같아요 c 왜 부트캠프에 지원했는지? 제가 부트캠프에 지원한 목적은 3가지였는데요. 1) 공부를 이끌어줄 규칙적인 생활 유도 2) 강사님으로부터 양질의 강의 및 학습 자료 획득 3) 프로젝트 결과물 만들기 보통 부트캠프의 커리큘럼은 아침9시-저녁6시로 이루어져있습니다. (거의 직장생활만큼 빡센....) 독학을 계속해온 입장에서 이런 스케줄은 공부하는 습관을 기르기 좋은 기회라고 생각했습니다! 하루 기본 8시간 공부를 하게 되면 후회없이 빡세게 공부할 수 있겠다는 기대감과 각오..

1*1 합성곱층 (Convolution layer) 원리 및 목적 설명 [내부링크]

등장 배경 일반적으로 신경망이 깊어 질수록 풀링을 통해 레이어의 층 면적은(가로,세로) 줄어들더라도, 층의 깊이(피처맵의 수)는 늘어나게 됩니다. (VGG16그림 참조) 이때 5*5, 7*7같은 큰 필터까지 사용하게 되면 연산해야 하는 파라미터의 수를 급격히 증가하게 되고, 이는 곧 "비싼연산 비용 " 라는 문제를 발생시켰습니다. *CNN에서 파라미터 수 계산식: (filter.width*filter.height*이전 레이어층 수 +1)*필터의 수 (각 w*h*c 수식의 3번째값을 따라보다보면 64->128->256->512 이런식으로 깊이가 늘어나는 것을 볼 수 있습니다) 그래서 어떻게 하면 CNN의 층이 깊이 구현하면서 Computational cost를 획기적으로 줄일 수 있을까?라는 질문에서 ..

[ CSS ] 스타일 관련 속성 정리 1탄 [내부링크]

공부/복습을 위해 작성한 css 기본 속성들 정리입니다 :) 분류 속성명 설명 font 관련 font-family 글꼴 선정 font-size 글꼴 크기 선정 font-style 기울임 설정 : normal , italic, oblique, initial, inherit font-weight 굵기 설정: normal, bold, bolder, lighter, initial, inherit font-variant 소문자를 대문자로 변환: normal, small-caps, initial,inherit line-height 줄 간격 조정 문단 관련 text-decoration 밑줄, 취소선등 삽입: none, underline, overline, line-throguh, inherit text-align 정..

[ CSS ] 기본 사용법 요약 정리 [내부링크]

** 공부 복습을 위해 작성한 포스트임을 밝힙니다 CSS (Cascade Style Sheet) 사용방법 1. inline : 사이에 코드를 추가하는 방법 words 2. global 3. 외부(external) 별도의 css 파일을 만들어 HTML문서에 연결하는 방법 CSS 선택자의 종류 - 전체 선택자 : * - 태그 선택자: 태그명 - 그룹 선택자: 태그명, - id 선택자 : #id속성값, 태그가 가지고 있는 id 속성값으로 - class 선택자: #id속성값, 태그가 가지고 있는 class 속성값으로 - 자식 선택자: 부모 태그명 > 자식 태그명 - 하위 선택자: 조상태그명 자손태그명 - 속성 선택자: [속성명], [속성명=값], 정규표현식을 이용한 [속성명 ^= 값], [속성명 $= 값], 태..

Residual Block 개념 및 목적 정리 (feat.ResNet) [내부링크]

ResNet(Residual Network)에 등장하는 Residual Block 의 개념과 왜 'Residual Block'을 사용하는지 알아보겠습니다. 1. Residual Block이란? [Residual Block 등장 배경] 연구자들은 신경망의 층이 깊어질수록 얕은 신경망보다 성능이 뒤떨어진다는 사실을 발견했습니다. (아래 그래프처럼 layer이 더 많은 모델이 training error가 훨씬 심각함을 알 수 있습니다.) 이론적으로는 층이 깊을 수록 성능이 더 좋아진다고 생각했으나, 실상은 그렇지 않았던 것이죠. 그래서 층이 깊어지더라도 앞서 학습한 층들의 정보를 잃지 않으며 성능을 높이기 위해 제시된게 Residual Block 입니다. 다른 자료를 보니 Residual block을 "ski..

[ HTML5 ] 기본 태그 구문 총 정리 ! [내부링크]

복습/공부용으로 HTML의 기본 구문들을 정리했습니다. tag 의미 문서형식 정의 타이틀(제목) 작성 주석 처리 제목태그 h1은 크기 200% h6는 70%의 크기 줄바꾸기, 키보드의 엔터키 같은 기능 Preformatted text html 소스 코드에 적힌 그대로의 공백, 탭, 줄바꿈, 띄어쓰기, 기타 문자 등을 입력한대로 출력하는 태그 bold 처리 삭제된 텍스트 정의 기울임체로 강조 텍스트 정의 기울임꼴 텍스트 정의 삽입된 텍스트 정의 (주로 줄이 문자 아래 줄이 그어져서 나타내짐) 강조 표시된 텍스트 정의 (형광펜으로 그은 것 처럼) 글씨를 더 작게 글씨를 굵게(더 강력하게 ) 표시 아래첨자 텍스트 정의 위 첨자 택스트 정의 &npsp non breaking space로 공백을 의미함 (특수문자..

자바 ArrayList 클래스 정의 및 사용법 요약 [내부링크]

List 생성 방법 ArrayList 리스트명 = new ArrayList(); => 객체 생성 시, 객체 10개를 담을 수 있는 배열 생성 예시) ArrayList list = new ArrayList(); 데이터 추가 list.add(추가하려는 데이터) 데이터 반환 list.get(인덱스위치) 데이터 특정 인덱스 삽입 list.add(인덱스 위치, 넣으려는 데이터) 기존값 교체/업데이트 list.set(교체인덱스위치, 교체하는 데이터) 데이터 삭제 list.remove(삭제하려는 값의 인덱스 위치) list.remove(삭제하려는 데이터 값) 위치 인덱스 반환/검색 list.indexOf(찾으려는 데이터값) list.lastindexOf(찾으려는 데이터값) ---------데이터 뒤에서 부터 검색 시

Leetcode 65. Valid Number (조건검색, 정규표현식) [내부링크]

https://leetcode.com/problems/valid-number/description/ Valid Number - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 오랜만에 포스팅하는 에러 코드 입니다! 이번에는 다양한 조건을 정규표현식, 그리고 boolean을 활용해 구현한 기발한 코드들을 Leetcode에서 가져왔습니다. 코드 자체가 창의적이고 인상깊어서 공부를 위한 기록으로 남깁니다 :) 1. 정규표현식 match 사용 class Solution:..

Java 중복 없는 로또 번호 뽑기 (비복원 추출) [내부링크]

여러 풀이가 있겠지만, loop 레이블을 활용해서 구현해봤습니다! public class Lotto { public static void main(String[] args) { int[] arr = new int[6]; System.out.print(로또 번호 :"); loop1: for (int i = 0; i < 6; i++) { int val = (int)(Math.random() * 45 + 1); for(int e: arr) { if(e ==val) { i--; continue loop1; } } arr[i] = val; System.out.print(i != 5 ? val + "," : val); } } }

파이썬 딕셔너리 마지막 값 추출하는 법 정리 [내부링크]

알고 있으면 편리하지만, 모르면 괜히 귀찮아지는 파이썬 딕셔너리 특정 key 값 요소를 제거/ 추출하는 법을 알아보겠습니다! 1. popitem() 사용하기 dic = {1:'a',2:'b',3:'c'} 라는 dict가 있을 때. dic.popitem() 을 하면 dic = {1:'a',2:'b'} 마지막 값을 제외한 결과만 볼 수 있습니다. 2. pop() 사용하기 리스트에 pop 사용은 익숙하지만 딕셔너리에 사용하면 막상 방법이 떠오르지 않을때가 많은데요 dic.pop(뽑고자 하는 키 이름) 을 통해 간편하게 값을 제거할 수 있습니다. dic = {1:'a',2:'b',3:'c'} rmv_item = dic.pop(1) print(rmv_item) >> 'a' 3. 딕셔너리 List Comprehen..

[ Java ] Array 배열 선언 및 생성 [내부링크]

Array 란? : 동일한 타입의 여러개 변수를 하나의 묶음으로 처리하는 하나의 객체 1. 배열의 선언 ** 선언 == 배열을 다루기 위한 변수 생성을 의미하며 공간을 생성하는 것이 아님 1) 타입 [ ] 변수명 2) 타입 변수명 [ ] 예시) int[] score double example[] 설명ㅓ에 있듯이, 배열을 선언한다는 것은 공간 생성이 아니라 하나의 주소값을 받는 것이기 때문에 int[] socre을 생성하고 실행시키면 [I@15db9742 같은 주소값이 반환됩니다. 2. 배열의 생성 ** 생성 == 앞서 선언된 배열의 값이 들어갈 공간 생성 int[] score = new int[5] double example[] = new double[50] => 괄호 안의 숫자는 배열의 크기를 의미..

Monotonic Stack 개념 정리 (Push하고 Pop하고) [내부링크]

Leetcode에 단골로 등장하는 인터뷰 질문 Monotonic Stack에 대해서 알아보겠습니다. Monotnic 영어 단어에서 알수 있듯, 단조 증가/ 단조 감소순으로 stack을 쌓아가며 값을 구해가는 데이터 구조인데요 예제를 통해 핵심 개념을간단히 먼저 보겠습니다. [6,5,4,7,8] 을 활용해 단조 감소 (Monotonic-decreasing) 스택을 쌓는다고 할 때, 6 >5 >4 ==> 리스트를 순회하며 stack에 쌓습니다 7 -> 8 ===> 값이 증가하기 때문에 stack에 쌓지 않고 pop합니다 우리가 알고 있는 stack 의 개념과 동일하지만, stack의 push와 pop을 진행하는 때가 요소들의 단조 증가/감소 여부에 달려있는 것이죠. 이렇게 단조 증가/감소에 맞지 않는 요소들..

Java 랜덤 난수 구하는 방법 정리 (Math.random) [내부링크]

java.lang.Math.random() 이는 double 타입의 0.0 에서 1.0 사이의 랜덤 값을 반환하는 메서드입니다. 이를 활용해서 어디부터 어디까지의 난수를 반환할 수 있는데요 최소 min 에서 최대 max 까지의 값 (min 포함, max포함시) (정수형 숫자를 원한다면 앞에 (int) 를 붙여서 명시적인 형변환을 시킵니다) (int) ((Math.random() * (max - min+1)) + min); 만약 여기서 1을 안 붙인다면 [min, max) 최대값이 포함되지 않는 형태가 되고, min을 포함 하고 싶지 않다면 min +1을 통해서 최소값이 min +1이 되도록 합니다. 이게 작동되는 이유는 앞서 Math.random() 자체가 0.0에서 0.1 사이의 값을 반환한다고 했기 ..

CNN 합성곱 신경망 Flatten Layer의 역할 및 방법 [내부링크]

일반적인 CNN 레이어 구성을 보면 Input > Convolutional layer > Pooling Layer > Faltten layer > Fully Connected Layer 이런 식으로 진행되는걸 볼 수 있는데요. 합성곱 신경망의 가장 특징적인 레이어가 합성곱층과 풀링층이라, 주로 CNN 앞단층에 대한 설명은 많이 들어봤지만, 뒷 단계인 Flatten과 Fully Connected(FC)레이어에 대한 설명은 많이 다루지 않는 것 같아서 짚고 넘어가려 합니다. 합성곱층은 필터를 통해 데이터의 특징을 추출하고 풀링 레이어는 계산 과정에서 매개변수 수를 줄이고, 모델의 과적합을 방지한다는 목적이 있죠. 그렇다면 Flatten layer는 왜 존재할까요?! 결론부터 말하자면, Flatten laye..

Java 숫자 char 을 알파벳으로 변환하기 [내부링크]

1. 정수형 숫자 + 64를 통해 ASCII에 대응되는 알파벳으로 변환 int value = 1; char letter = (char)(value+64) 2.알파벳 Array와 숫자 대응 int number = 0; String[] array = new String[] {"a", "b", "c", "..."}; String letter = array[number + 1]; array가 아닌 문자열의 인덱싱을 쓴다면 아래와 같이도 가능합니다. return "ABCDEFGHIJKLMNOPQRSTUVWXYZ".substring(i, i+1); 3. 형변환 후 char 변환 private String getCharForNumber(int i) { return i > 0 && i < 27 ? String.valu..

Logistic Regression 에서 Gradient Descent까지 개념 정리 [내부링크]

*본 게시물을 Andrew Ng 교수님의 딥러닝 강의를 복습/정리를 위해 작성했음을 밝힙니다 더보기 Binary Classification X.shape = (n,m) Y.shape = (1,m) Logistic Regression 로지스틱 회귀는 x라는 데이터들이 있을 때, 목표로 하는 분류값 y가 무엇이 될까?라는 질문에 활용됩니다. 가령 y라는 값이 1이 되는 확률을 얼마일까?를 식으로 나타내면 이와 같은데요 : ŷ = P(y=1 | x) 이 질문에 대한 답을 찾기 위해서 기본적으로 일반 회귀식을 떠올려보면 이 질문은 w와 b라는 회귀식의 변수와 필수적으로 연관되어 있음을 알 수 있습니다. 이때, 예측값 ŷ 을 찾기위해 선형회귀처럼 wx + b 형태로 접근할 수도 있지만, 0이냐 1이냐 같은 분류의..

Java Char => String 변환 방법 5가지 정리 [내부링크]

오늘은 자바의 Char을 String으로 변환/합쳐서 출력하는 법을 알아보겠습니다. 예시를 위해 우선적으로 char을 선언해주겠습니다. char c = 'ch'; 만드려는 String 형태의 변수는 st로 가정하겠습니다. 1. 비어있는 문자열 더해주기 String st = "" + c; System.out.println(st) 2. StringBuilder 사용하기 String st = new StringBuilder().append(c).append("").toString(); 여기서 만약 여러개의 char 을 붙이고 싶다면, String st = new StringBuilder().append("").append(c1).append(c2).toString(); 3. String.valueOf() 사용..

구글 Colab 드라이브 파일에서 import 하는법 [내부링크]

데이터를 전처리하고 실험하고 여러 함수를 만들다보니, 다른 Colab 파일에서 만든 기능을 가져와서 사용해야 하는 일이 종종 발생하기 때문에, 다른 ipynb 코랩 파일을 작업 중인 코랩파일로 불러올 수 있는 기능을 가져왔습니다 [ 작업 중인 Colab 파일] !pip install import_ipynb import import_ipynb import "your .ipynb file" 만약, 불러온 파일의 sum이라는 함수를 쓰고 싶다면, import filename filename.sum() 처럼 일반적으로 import하고 함수를 사용하는 형태로 쓸 수 있습니다 Source: https://stackoverflow.com/questions/56904407/google-colab-call-functio..

구글 Colab 여러 데이터프레임 한번에 보는 법 [내부링크]

가끔 구글링을 하다보면 Python Data Science Handbook에서 제공하는 colab 코드들에서 유용한 정보들을 찾을 수 있는데요. 이번에 발견한 데이터프레임 여러개를 한번에 코랩에서 보는 법을 정리해보겠습니다 :) 여러 데이터 프레임을 한번에 볼 수 있게 해주는 클래스를 만들어줍니다. class display(object): """Display HTML representation of multiple objects""" template = """ {0}{1} """ def __init__(self, *args): self.args = args def _repr_html_(self): return '\n'.join(self.template.format(a, eval(a)._repr_html_..

파일에서 랜덤한 이미지 시각화 하는 법 (OpenCV) [내부링크]

여러 이미지 데이터가 있는 폴더에서 하나의 데이터를 랜덤으로 뽑아서 보고싶을 때 이용하는 방법입니다. random.choice(os.listdir(디렉토리 경로)) ==> 디렉토리에 있는 여러 파일들 중에 하나를 선택한다 cv2.imread(os.path.join(디렉토리 경로, 이미지파일이름)) ==> 파일경로와 이미지 파일명을 결합해 길을 알려준다 plt.imshow() ==> 시각화해서 보여주기 예시) import random s_path = random.choice(os.listdir('/content/train_imgs')) sample = cv2.imread(os.path.join(train_img,s_path)) sample= cv2.cvtColor(sample,cv2.COLOR_BGR2GR..

데이터프레임 결측값 쉽게 보는 법 총정리 [내부링크]

결측값이 있는 열을 리스트로 보고싶다면 ) df.columns[df.isna().any()].tolist() 결측값이 있는 열을 조회하고 싶다면 ) df.loc[:, df.isna().any()] 각 열이 결측값이 있는지 여부를 True/False로 보고싶다면 ) df.isnull().any() 각 열의 결측값 개수를 보고싶다면 ) df.isnull().sum() 데이터프레임의 전체 결측값 개수 총합을 알고 싶다면 ) df.isnull().sum().sum() 결측값이 있는 열의 결측값 비율을 보고싶다면 ) null_cnt = train.isnull().sum() *100/ len(train) null_cnt[null_cnt>0] Source: https://stackoverflow.com/questio..

구글 코랩 Colab 에서 cv2.imshow 오류 해결방법 [내부링크]

코랩에서 cv2.imshow를 입력하면 오류가 나는데요, 이는 cv2_imshow import를 통해서 해결가능합니다! 이미지를 display할 때도 cv2_imshow로 언더바 주의하시길 바랍니다 from google.colab.patches import cv2_imshow gray = cv2.imread('/content/train_masks/BC_01_0015.png') gray = cv2.cvtColor(gray,cv2.COLOR_BGR2GRAY) cv2_imshow(gray) Source: https://github.com/jupyter/notebook/issues/3935

우당탕탕 데이터 사이언스 도전기 _ #1 데이터가 뭐길래?! [내부링크]

안녕하세요, 블로그 주인장입니다 :) 현재 데이터사이언스에 빠져서 허우적 거리고 있는 주인장으로, 제가 어떻게 데이터 사이언스에 빠지게 됐는지, 어떤 과정을 겪고 있는지를 일종의 시리즈처럼 시간이 될때마다 연재해보려 합니다. 먼 훗날, 꿈을 이뤘을 때 이 발자취들을 기억할 수 있도록 , 그리고 어느 누군가에게는 용기와 데이터 사이언스에 관심을 가지는 계기가 될 수 있기를 바랍니다. 데이터가 뭐길래 ?! 나는 당시 기업 전략과 관련된 직장에 다녔기 때문에 경영에 대한 트렌드를 누구보다 직접적으로 체험하고, 또 빨리 그 중요성을 체감하는 위치에 있었다. 프로젝트를 할 때마다 정말 많은 국내외 뉴스 기사를 보면서 세계적인 흐름을 조사하는 업무를 매일 맡았었는데 그때마다 등장하는 키워드가 '데이터', '데이터사..

Leetcode 37 스도쿠 문제 풀이 정리 [내부링크]

https://leetcode.com/problems/sudoku-solver/ Sudoku Solver - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 예전에 코딩테스트에서 만났다가 땅만 팠던 스도쿠 문제를 ㅜㅠㅜㅠ Leetcode에서 다시 만났습니다 스도쿠의 규칙을 어떤 식으로 적용했는지를 중심으로 여러 풀이를 분석해보겠습니다 깔끔한 Back Tracking 풀이 ) class Solution: def solveSudoku(self, board: List[..

Tesnsorflow.cast 텐서 데이터 타입 변경하기 [내부링크]

Tensorflow.cast => 텐서를 특정 dtype으로 변환 tf.cast( x, dtype, name=None ) 변환하는 dtype에는 tf.uint8, tf,uint16,tf.uint32,tf.float16 등 여러 데이터 타입을 설정할 수 있습니다. 주로 이미지 데이터를 다룰 때, 255.0으로 나누는 작업을 수행하기 위해, cast를 사용하는 것 같습니다. tf.cast(image, tf.float32) / 255.0 Source: https://www.tensorflow.org/api_docs/python/tf/cast

Tesorflow JPEG 이미지 텐서로 변환하기 [내부링크]

tf.io.decode_jpeg tf.io.decode_jpeg( contents, channels=0, ratio=1, fancy_upscaling=True, try_recover_truncated=False, acceptable_fraction=1, dct_method='', name=None ) JPEG 파일을 텐서(uint8)로 바꿔주는 기능을합니다 여기서 channel 은 이 이미지 데이터의 색깔의 채널 수를 의미합니다. default 값이 0인데, 1로 설정 시 흑백이미지, 3은 RGB 이미지를 의미합니다. ratio : 다운스케일링 비율 (default 1) Source: https://www.tensorflow.org/api_docs/python/tf/io/decode_jpeg

Kaggle 에서 TPU 무료로 사용하기 [내부링크]

캐글에서 TPU를 무료로 사용할 수 있다는 사실을 발견했는데요 주당 30시간, 회당 9시간까지 사용할 수 있다고 합니다! 캐글의 가이드를 다시 짚어보면서 TPU 사용법을 보려 합니다 :) 1. 캐글 Accelerator 에 TPU v3-8 설정하기 오른쪽 상단 점 3개를 누르고 TPU를 사용하겠다고 설정합니다. 2. 케라스를 이용한 TPU 사용 # detect and init the TPU tpu = tf.distribute.cluster_resolver.TPUClusterResolver.connect() tpu_strategy = tf.distribute.experimental.TPUStrategy(tpu) with tpu_strategy.scope(): model = tf.keras.Sequentia..

Keras Layer 입력/출력 크기 구하는 법 [내부링크]

특정 레이어의 입력/출력 크기를 알고 싶다면 layer.get_input_at(node_index) layer.get_output_at(node_index) layer.get_input_shape_at(node_index) layer.get_output_shape_at(node_index) 예시) model = VGG16(weights='imagenet', include_top=False) input_shape = model.layers[-4].get_input_shape_at(0) VGG16 모델을 사용하려 할 때, 끝에서 4번째 층의 입력 shape 을 알고 싶을 때 Source: https://www.kaggle.com/code/vincee/intel-image-classification-cnn-k..

Keras fit_generator 대신 fit 사용하기 [내부링크]

캐글의 노트북을 보다보니 fit_generator 가 빈번하게 나오는데 아래와 같은 메시지가 뜨기도 해서 확실히 정리하고자 찾아봤는데요 Model.fit_generator (from tensorflow.python.keras.engine.training) is deprecated and will be removed in a future version. fit_generator = > fit evaluate_generator => evaluate predict_generator => predict 이렇게 기존 기능들을 더 편리하게 쓸 수 있도록 업데이트 되었다고 합니다. 불과 몇년전인데 기능이 휙휙 바뀌니, 공식 문서를 계속 참고하면서 이미 지난 기능들을 잘못 사용하지 않도록 주의해야겠습니다 ㅜㅠ Sour..

Merge Sort 과 Quick Sort 개념 및 활용 정리 [내부링크]

미루고 미루던 Merge Sort와 Quick Sort 개념을 정리하고 공부해보겠습니다. 1. Quick Sort 평균 Time complexity : O(nlogn) 최악의Time complexity : O(n^2) 특정 요소를 기준으로 크고 작은 그룹을 단계적으로 재배치/분할하여 정렬하는 알고리즘 (요소 pivot 선택기준은 가장 왼쪽/오른쪽/랜덤/중간 등 다양한 값으로 선택가능) 2. Merge Sort 평균 Time complexity : O(nlogn) 최악의Time complexity : O(nlogn) 비교 기반의 정렬 알고리즘 동일한 길이의 조각으로 조각이 한개가 될 때까지 나누고 다시 쪼개진 조각들을 짝지어 작은 숫자, 큰 숫자 순으로 정렬해가면서 결국 하나의 정렬로 합치는 알고리즘 3...

Keras ReduceLROnPlateau 클래스 [내부링크]

지정한 metric이 향상이 안될 때, 학습률을 낮추도록 조정하는 기능을 수행함 patience로 지정한 횟수의 epoch 만큼 향상이 없을 때를 기준으로 함 tf.keras.callbacks.ReduceLROnPlateau( monitor="val_loss", factor=0.1, patience=10, verbose=0, mode="auto", min_delta=0.0001, cooldown=0, min_lr=0, **kwargs ) Source: https://keras.io/api/callbacks/reduce_lr_on_plateau/

Coursera 무료 수강하는 법(K-MOOC) [내부링크]

제가 너무 감사하게 사용했던 K-MOOC의 Coursera 제공 서비스를 공유드리려 합니다! 처음 공부를 시작할 때, 선형대수, 통계, 머신러닝 기본 등 교육 자료가 절실했던 만큼 Coursera를 결제하면서 듣기도 했었는데요 ㅜㅠㅜㅠ 금액도 부담이 크고 듣고 싶은 강좌는 많은데 여유는 없고 답답한 마음에 인터넷을 뒤지다가 알게된 제휴 서비스입니다 :)) 말 그대로 Coursera의 강좌 구독권을 무려 무료로 !!!! 받을 수 있는 기회입니다 K-MOOC에서 신청을 하고 승인이 되면 받게 되는 계정으로 사실상 모든 Coursera 강좌를 들을 수 있는 감사한 구독권입니다. ㅎㅎ 여태까지 3개 정도 모집을 했고 기수당 2000명으로 6000명 정도의 인원에게 제공되는 기회인만큼 꼭 신청하시길 추천드립니다 ..

Tensorflow 이미지 로드하는 방법 [내부링크]

오늘은 텐서플로우를 통해 이미지 데이터를 로드하는 법을 알아보겠습니다. 1. tf.keras.utils.get_file 사용하기 tf.keras.utils.get_file( fname=None, origin=None, untar=False, md5_hash=None, file_hash=None, cache_subdir='datasets', hash_algorithm='auto', extract=False, archive_format='auto', cache_dir=None ) 어떤 파일 fname 을 origin이라는 url 장소에서 가져와라는 기능인데요 path_to_downloaded_file = tf.keras.utils.get_file( "flower_photos", "https://storage..

Keras 텐서플로우 전이학습 모델 API 모음 [내부링크]

딥러닝 모델을 만들때 유용하게 사용가능한 pretrained 모델들을 가지고 와봤는데요 여러 자료를 봐도 어떤 모델을 사용할지는 연구 환경, 처리 데이터의 특징 등 다양한 요소에 의해 판단해서 결정해야 한다고 합니다. 이렇게 많은 모델이 있는 것도 신기하고 하나씩 보면서 유용하게 써봐야겠습니다. Source: https://keras.io/api/applications/ Model Size (MB) Top-1 Accuracy Top-5 Accuracy Parameters Depth Time (ms) per inference step (CPU) Time (ms) per inference step (GPU) Xception 88 79.0% 94.5% 22.9M 81 109.4 8.1 VGG16 528 71...

배치 정규화 (Batch Normalization) 정리 [내부링크]

딥러닝 코드를 보면서 배치 정규화를 위한 layer을 종종 보게 되었는데요 tensorflow.keras.layers.BatchNormalization 유용한 활용을 위해 배치 정규화란 무엇이고 언제, 어떻게 사용하는지 여러 자료를 참고해 정리해보겠습니다 :) c 배치 정규화란? 이름 그대로 input을 0과 1 사이의 값으로 정규화 시켜주는 인공신경망의 층입니다. 그렇다면 왜 배치정규화가 필요할까요? 인공신경망에서는 훈련을 거듭할 수록, 인풋으로 들어오는 배치 데이터의 분포는 불규칙하고 사실상 랜덤하게 됩니다. 이렇게 데이터의 분포가 변하면,모델은 계속 새로운 데이터 분포에 대응하려 하면서 전반적인 훈련이 느려지는 현상이 발생하게 됩니다. 이때, 훈련을 계속하더라도 데이터의 분포를 유지시켜주는 일종의 ..

구글 Colab에서 Pillow 설치하는 법 [내부링크]

Colab에서 제공하는 문서 내용을 공유합니다 import PIL print(PIL.PILLOW_VERSION) 만약, 기존에 Pillow가 있는데 새로운 5.3.0버전으로 다시 깔고 싶다면 아래 코드를 실행하면 됩니다 !pip uninstall -y Pillow # install the new one !pip install Pillow==5.3.0 import PIL print(PIL.PILLOW_VERSION) Source: https://colab.research.google.com/drive/1mVIsbvZ8_ilLgFQmmQ9eYMuM-DXGsZoN

Pytorch 주피터, 코랩, 아니콘다에서 버전 확인하기 [내부링크]

파이토치 사용시 현재 사용하고 있는 버전 확인 하는 법을 타사이트를 참고해 정리했습니다 :) 주피터 노트북 !pip show torch 구글 코랩 !pip show torch (혹은 !pip freeze | grep torch) 터미널 , cmd pip show torch 아나콘다 conda list torch 파이참 settings 설정에 들어가서 확인 가능 Source: https://www.codethebest.com/check-pytorch-version-python/

GAN 모델 구현 사이트 추천 [내부링크]

https://thisxdoesnotexist.com/ This X Does Not Exist Using generative adversarial networks (GAN), we can learn how to create realistic-looking fake versions of almost anything, as shown by this collection of sites that have sprung up in the past month. thisxdoesnotexist.com 이번에 GAN(생성적 적대 신경망)을 공부하면서 이 웹사이트를 알게 되었는데요 훈련데이터를 이용해서 새로운 데이터를 생성이 가능하다는 개념은 알고 있었지만 사이트에는 가짜 이력서, 질문, 가사, 음식, 사람사진, 짤, 그..

Leetcode 295. Find Median (heapq 힙큐로 중간값 구하기) [내부링크]

https://leetcode.com/problems/find-median-from-data-stream/ Find Median from Data Stream - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com heapq는 잊을 만할때쯤 나오고 , O(NlogN)의 time complexity를 가지기 때문에 정렬에 종종 활용되는 것 같습니다. 이번 문제는 addNum의 기능에는 숫자를 추가하고 findMedian기능에서 중간값을 반환하도록 하는 문제인데요 가운데..

23 . Merge K sorted List(Linked List 정렬, Merge sort, 분할 정복) [내부링크]

https://leetcode.com/problems/merge-k-sorted-lists/ Merge k Sorted Lists - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 난이도 hard 의 list 형태로 제시된 여러 linked list 를 정렬해서 합치는 문제입니다. 여러 풀이를 가지고 풀이를 짜봤는데요. l 먼저 linked list가 하나인 경우에는 곧 바로 그 linked list가 반환되도록 하고 , 비어있는 경우에는 return으로 직행하..

Keras 모델 훈련 API 정리 (compile,fit) [내부링크]

딥러닝 코드의 기본 구조가 compile > fit (훈련) > evaluate,predict (평가, 예측) 이런식의 흐름으로 진행된다는 것은 알고있지만, 각각의 훈련을 위한 API 구성요소가 무엇이 있고 어떤 특징이 있는지 공식 문서를 기반으로 정리해보겠습니다 :) Model.compile 구성 요소 내용 설명 optimizer RMSpop,SGD, Adam,Nadam,Adagrad, Adamax 등등 사용하려는 옵티마이저 이름을 문자열 형태 혹은 tf.keras.optimizers 인스턴스 형태로 기입 loss binary_crossentropy, binary_focal_crossentropy, categorical_crossentropy, huber_loss, mean_absolute_error,..

Keras 모델 fit 결과값 해석하기! [내부링크]

케라스 모델을 fit 시키면 아래처럼 Epoch 1/100 그리고 그 밑에 숫자와 실시간 진행바, 설정한 matrics의 결과값들이 순차적으로 나오는데요 이 밑에 있는 숫자들은 뭘 의미하는지 짚고 넘어가겠습니다 x_train.shape >> (4872, 12) y_train.shape >> (4872,) 모델에 넣은 데이터의 사이즈 4872 이고 훈련을 위한 epoch = 100, batch_size=5 로 지정을 했습니다. Epoch 옆의 1/100은 지정한 epoch =100 중에서 첫번째가 돌아가고 있다를 의미하고 막대바 옆의 결과값들은 모델의 accuracy, validation_split에 해당하는 validation data의 loss 값임을 알 수 있는데요 다만 이 밑에 780은 뭐지? ..

Leetcode 212. WordSearch 2 [내부링크]

https://leetcode.com/problems/word-search-ii/ Word Search II - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com board라는 매트릭스에서 words에서 찾을 수 있는 단어 리스트를 반환하는 문제입니다. board = [["o","a","a","n"],["e","t","a","e"],["i","h","k","r"],["i","f","l","v"]] words = ["oath","pea","eat","rain"] Ou..

Tensorflow 기본 함수 정리 [내부링크]

import tensorflow as tf x = tf.constant([[1., 2.], [3., 6.]]) 기본 함수 개요 +,-,*,/ 텐서간 사칙연산 가능 tf.transpose(x) 행열전환 @ 내적 tf.nn.softmax(x, axis=-1) 소프트맥스 함수 적용 tf.reduce_sum(x) 합계 계산 tf.reduce_mean(x) 평균 계산 tf.reduce_max(x) 최대값 계산 tf.convert_to_tensor() tensor로 변환 tf.Varable() 텐서와 달리 assign으로 값 할당, 덧셈 가능 var = tf.variable([1.,2.,3.]) var.assign([2,2,2]) #새로 값 할당하기 var.assign_add([1,1,1]) #기존 값들에 값 ..

Tensorflow axis = -1 의미 파악하기 [내부링크]

텐서플로우 페이지를 보다가 아래 코드를 발견하고 axis = -1 의 정체를 탐색해봤습니다 tf.nn.softmax(x,axis=-1) 정답부터 말하자면 우리가 파이썬의 리스트에서 이해하듯, axis = -1 은 주어진 배열의 마지막 axis 를 의미합니다 예시를 통해 보겠습니다 x라는 [2,3] shape의 텐서가 있을 때, 각각에 여러 max 관련 함수를 적용시켜보겠습니다. import tensorflow as tf x = tf.constant([[1., 2., 3.], [4., 5., 6.]]) 마지막 차원(default axis = -1)을 기준으로 softmax 함수를 적용한 모습입니다 tf.nn.softmax(x,axis=-1) 이는 tensorflow와 keras 에 적용한 결과값인데요 자세..

숫자형 리스트 중간값 (median) 구하는 방법 정리 [내부링크]

쉽지만 꼭 알아두면 유용한 중간값 구하는 방법을 여러 문서를 참고해서 정리해보려 합니다 1. List sort 후 짝수/홀수개 경우의 수에 따른 인덱싱 사용 list.sort() def median_calc(list): if len(list) %2 != 0: idx = int((len(list)+1)/2 -1) return list[idx] else: idx1 = int(len(list)/2 -1) idx2 = idx1 + 1 return (list[idx1] + list[idx2])/2 2. Statistics 라이브러리의 중간값 기능 import statistics statistics.median(list) 3. Numpy.median 사용 import numpy as np np.median(li..

필수 리눅스 (Linux) 명령어 정리 [내부링크]

한번은 꼭 짚고 넘어가야 하는 필수 명령어들을 정리해보려 합니다! 미래의 저를 위해 여러 자료를 참고해서 정리해보겠습니다 ㅎㅎㅎㅎ 명령어 명령어 설명 pwd 현재 디렉토리 제시 (Print Work Directory) ls 파일/ 디렉토리 관련 정보 제공 (list segments) cd 현재 디렉토리로 이동 mkdir 새로운 디렉토리 만들기 (make directory) rmdir 비어있는 디렉토리 삭제 (remove directory) lsblk 리눅스 디바이스 상세 정보 출력 mount 기존 파일 시스템과 연결 df 디스크 사용량 정보 제공 uname 이름,버전,시스템관련 정보 출력 ps 동작 중인 작업 시각화 (Process status) kill 동작중인 작업 중지 service 리눅스 터미널의..

LightGBM 파라미터 튜닝 가이드 정리 [내부링크]

LightGBM을 돌리면서 GridSearch를 해보려하니 파라미터를 어떻게 조율해야 할지 감이 안 잡혀서 자료를 뒤지다가 LightGBM 홈페이지에서 제공하는 파라미터 튜닝 가이드를 발견했습니다! 가이드의 내용을 정리하면서 어떻게 하면 LightGBM을 효과적으로 사용할 수 있을지 알아보겠습니다. LightGBM 핵심 파라미터 LGBM은 leaf-wise tree growth 알고리즘이기 때문에 얼마나 깊이, 얼마 만큼의 leaf 를 형성하도록 조율하느냐가 매우 중요합니다. 아래 파라미터들은 leaf와 직접적으로 연관된 핵심 파라미터로 볼 수 있습니다. num_leaves 이는 트리당 최대 leaf(자식노드)의 개수를 의마합니다. 이론적으로는 num_leaves = 2^(max_depth)로 설정하면 ..

StackingCVRegressor 개념 및 활용방법 정리 [내부링크]

머신러닝 Stacking을 할 때 일반적으로 사이킷런의 StackingClassifier 혹은 StackingRegressor을 사용하는데요 이번에 StackingCVRegressor을 만나서 참고한 사이트의 내용을 정리해보려 합니다 :) ‼ StackingRegressor 과 StackingCVRegressor의 차이 둘 다 베이스 학습기와 메타 학습기를 통해서 여러 모델을 스택킹한다는 측면에서는 같지만, 이름에서 눈치챌 수 있듯이 CV(Cross Validate)을 하는지 여부에 차이가 있습니다. => 데이터가 통으로 train데이터를 쓰는지 vs KFold처럼 각 순회마다 k-1 폴드를 학습에 사용하는지의 차이 제가 참고한 사이트의 그림을 가지고 왔는데요, 보시면 일반적인 스택킹처럼 트레이닝 셋을 ..

NotImplementedError: Cannot convert a symbolic Tensor to a numpy array 해결 방법 [내부링크]

LSTM 구현을 아나콘다에서 실행하다가 NotImplementedError: Cannot convert a symbolic Tensor to a numpy array 오류를 만났는데요, 여러 자료를 보니 텐서플로우와 넘파이의 버전이 안 맞아서 생기는 문제였습니다. 스택오버플로우 내용을 바탕으로 해결방법을 정리해봤는데요 :) (2021,2022년 기준) 아나콘다를 사용하는 경우) conda install numpy==1.19.2 아나콘다 prompt에 이렇게 다운그레이드한 넘파이 버전을 설치하면 됩니다 텐서플로우, 넘파이 버전 맞춰주기 ) pip uninstall tensorflow pip install tensorflow pip uninstall numpy pip install numpy 이 방법은 넘파..

Leetcode 662. Maximum Width of Binary Tree (BFS level order) [내부링크]

https://leetcode.com/problems/maximum-width-of-binary-tree/ Maximum Width of Binary Tree - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 다시 만난 Binary Tree 문제입니다. 이진트리의 레벨에서 최대 길이(시작 노드에서 끝노드까지의 개수)를 찾는 문제입니다. 처음에 level order traversal 임을 파악하고 BFS로 접근을 시도했는데요, 어떻게 길이의 정의를 코드화시킬 수 ..

ColumnTransformer 피처 이름 데이터프레임 전달 방법 [내부링크]

이전에 columnTransformer이 무엇인지, 어떻게 사용할 수 있는지 내용을 다뤘었는데요 2022.10.13 - [Data Science/Machine Learning] - [ Scikit-learn ] compose.ColumnTransformer, make_column_transformer 정리 [ Scikit-learn ] compose.ColumnTransformer, make_column_transformer 정리 Column Transformer Column Transformer은 여러 transformer 을 column에 좀 더 쉽게 적용하도록 한 클래스입니다. 주요 메서드 탐구 sklearn.compose.ColumnTransformer(transformers, *, remai..

Leetcode 189. Rotate Array (O(1) 제약조건) [내부링크]

https://leetcode.com/problems/rotate-array/ Rotate Array - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 이 문제는 간단해 보이지만 O(1)의 공간을 이용해서 풀어야 하는 문제였습니다. 즉, 별도의 공간을 할당해서 임시로 값을 저장하는 장치 같은것은 사용하지 말라는 문제였는데요 저는 처음에 deque.rotate() 를 이용해서 풀다가 nums 에 in-place로 접근해야 하는 것을 깨닫고 헤맸던 문제였습니다. R..

Leetcode 24. Pathsum2 (DFS, Backtracking) [내부링크]

https://leetcode.com/problems/path-sum-ii/ Path Sum II - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 네,,, 다시 만난 백트래킹 문제로 이진트리에서 root에서 leaf노드까지 갔을 때의 경로합이 targetSum에 해당하는 path를 전부 반환하는 문제입니다. 여러 시행착오와 다른 분들 자료를 참고하면서 답변을 짜봤습니다 재귀 DFS 방법 ) # Definition for a binary tree node. # ..

Leetcode 24. Swap nodes in Pairs [내부링크]

https://leetcode.com/problems/swap-nodes-in-pairs/ Swap Nodes in Pairs - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 오랜만에 만난 linked list 의 문제입니다. Linked list 관련 개념과 문제들은 아래에서 참고 가능합니다 2022.09.28 - [‼ ERROR RECORD] - Leetcode 19. Remove Nth node from end of the list (Linked List..

Leetcode 211. Design Add and Search Words(Trie+DFS) [내부링크]

https://leetcode.com/problems/design-add-and-search-words-data-structure/ 오랜만에 만난 Trie 문제입니다 Trie 기본 개념과 관련 다른 문제는 아래에서 볼 수 있습니다. 2022.10.03 - [‼ ERROR RECORD] - Leetcode 139. Word Break (Trie, BFS, DP) 2022.09.27 - [Data Structure & Algorithm] - Trie (트라이, Digital tree, prefix, Retrieval tree) + 예제 코드 이번에 문제를 풀어보니 Trie 문제를 풀때 어느정도 기본 코드 구조가 있는 것 같습니다. 여러 코드를 보면서 어떤 식으로 풀이가 가능한지 보겠습니다. Trie Chil..

결정계수 R-squared 개념 및 응용 정리 [내부링크]

이번에는 결정계수에 대해서 다뤄보겠습니다. 결정계수는 coefficient of determination 혹은 R^2 (R squared, R 제곱 통계량)라고 부르는데요 결정계수의 사용 목적 회귀분석에서 추정한 모델이 얼마나 종속변수를 잘 설명하는지의 비율을 의미합니다. 여기서 '설명력'은 '분산'을 활용하여 통계모형의 설명력을 검증합니다. 결정계수의 개념 결정계수의 범위: 0 에서 1 사이 기본 틀 : 예측값의 분산/실제값의 분산 결정계수가 여러가지 통계 개념이 복합되어 있어서 처음에 이해하는데 좀 어려움이 있는 것 같습니다. 필요한 개념을 하나씩 정리하면서 결정계수를 이해해 보겠습니다. 결정계수가 분산을 기본으로 한다고 하는데 그러면 분산이 뭐죠? 간단히 애기하면 분산은 값이 얼마나 퍼져 있..

회귀 평가 지표 개념 A-Z 및 활용방법 이해하기 [내부링크]

머신러닝을 공부하신 분들이라면 회귀 평가지표 MAE, MSE, RMSE를 한번쯤 다 들어보셨을텐데요 개념은 무수히 많이 들었지만 남들이 물어봤는데 각 지표의 의미가 헷갈린다면 이번에 꼭 한번 정리하고 넘어가시길 바래요! 평가지표를 알아봄에 앞서서, 왜 평가 지표가 필요한지 부터 고민해봅시다. 모델을 만들고 예측값까지 나왔는데 이게 잘된건지, 엉터리 값이 나왔는지 판단할 수 있는 성적표가 있어야겠죠? 그렇다면 예측을 했으니 실제값과 비교해서 얼마나 잘 했는지 ==> (예측값-실제값) = 잔차 = residual 을 중심으로 잘했는지 못했는지 보기 위해서 나온 지표들이 바로 아래의 MSE, RMSE, MAE 지표입니다!! 요약한 영어라서 더 낯설게 느껴질 수도 있는데요 각 단어를 풀어 써서 아래의 식과 ..

K-Nearest Neighbors 최근접 이웃 알고리즘 정리 A-Z [내부링크]

주요 머신러닝 알고리즘에 대해서 하루에 하나씩 정도라도 복습겸 정리를 진행해보려 합니다 :)) 특히 수학적, 통계적인 원리를 짚고 넘어가면서 이해를 확장시켜보겠습니다. K-NN알고리즘이란? 분류/회귀에 사용되는 간단하면서 보편적으로 사용되는 모델 가장 가까운 K개의 샘플을 같은 클래스(분류)/ 이웃한 샘플들의 평균 값(회귀)으로 예측함 K-NN 모델을 생각하면 여기여기 모여라~~~ 가 생각나는데요 그만큼 서로 인접한 K개의 데이터를 묶거나 묶어서 평균내는 방법입니다. 그러면 여기서 K는 몇개를 의미하지 ? 인접하다는 건 어떻게 판단하지? 라는 2가지 의문이 드는데요 첫번째 의문은 비교적 쉽게 대답이 가능합니다 1. K 는 default 값이 5개이지만 설정이 가능 일반적으로 홀수 사용 최적의 K 값은 일..

[ Numpy ] 넘파이 배열 , axis, 차원 축소/확장 정리 [내부링크]

넘파이 차원, Axis 개념 및 응용 설명 오늘은 넘파이의 기본인 넘파이 array의 axis에 대해 알아보려 합니다. 우선 넘파이의 axis는 파이썬의 index가 0부터 시작하는 것처럼 0부터 시작합니다. 위의 그림을 머리속에 넣어두면 좋은데요 일반적으로 1D array라고 하면 aixs0만 있는 행만 하나 있는 상태를 의미합니다. 여기서 우리가 그래프를 그릴 때 x축 y축이 필요한 것처럼 축을 하나 추가하면 2D array 마치 행렬같은 모습이 나옵니다 여기서 제일 헷갈렸던 부분은 Numpy에서의 '차원'은 선형대수에서 애기하는 차원과는 다르다는 점입니다. 넘파이에서 차원은 이 axis의 개수를 의미합니다 아래 스택오버플로우에서도 이런 의문들이 많이 제시되어 있는데요 (https://stacko..

Greedy 탐욕 알고리즘 정리 [내부링크]

Greedy 알고리즘이란? An algorithmic paradigm that follows the problem solving approach of making the locally optimal choice at each stage with the hope of finding a global optimum (Source : GeeksforGeeks) 위의 정의처럼 탐욕 알고리즘은 지역적(하나 하나의 케이스마다) 최적인 해를 찾아가면서, 최종적으로 전역의 최종해를 찾아가는 알고리즘을 의미합니다. 하지만, 실제적으로 지역적으로 최적해라고 해서 전역의 최적해라고 볼 수는 없기 때문에 2가지 조건이 존재합니다 1) 지역해의 선택을 통해 전역의 최적해를 도출할 수 있는 경우에 적용 가능 2) 전역 해 도출..

Train , Test 데이터 전처리를 위해 병합하는 방법 정리 ! [내부링크]

데이터 전처리를 실행할 때, train 과 test데이터를 따로 전처리하면 스케일링이나 인코딩에 문제가 생기기 때문에 보통 train과 test 데이터를 합쳐서 전처리를 하고 다시 기존 index대로 나누는 방법을 사용하는데요 어떤 방법을 사용할 수 있는지 알아보겠습니다. 1. pd.concat + assign(indic) 여기서 indic은 indicator로 각 데이터에 test, train이라는 일종의 태그를 달아주는 방법입니다 df = pd.concat([test.assign(indic="test"), train.assign(indic="train")]) test, train = df[df["indic"].eq("test")], df[df["indic"].eq("train")] DataFrame...

카테고리형 데이터가 많을 시 고려사항 [내부링크]

카테고리형 데이터는 보통 pandas.get_dummies 혹인 LabelEncoder, OnelHotEncoding 을 사용하는데요 카테고리 데이터가 몇십 몇백개가 되면 연산속도도 느리고 피처가 너무 많아져서 과대적합이 일어날 수 있습니다. 그래서 서칭을 통해서 어떤 사항을 고려할 수 있는지 모아봤습니다! 1. 빈도수 기준 '기타' 처리 카테고리형 데이터에 unique한 값별로 얼마나 많은 비율을 차지하는지 확인하는 방법입니다. 만약 카테고리가 100개인데, 단 10개가 전체의 90%이상을 차지한다면 나머지 90개는 'other'로 분류할 수 있습니다. 2. Target Encoding 회귀의 경우에는 각 카테고리로 groupby를 해서 나오는 target의 mean 값을 사용할 수 있습니다. (하지만..

[ Scikit-learn ] compose.ColumnTransformer, make_column_transformer 정리 [내부링크]

Column Transformer Column Transformer은 여러 transformer 을 column에 좀 더 쉽게 적용하도록 한 클래스입니다. 주요 메서드 탐구 sklearn.compose.ColumnTransformer(transformers, *, remainder='drop', sparse_threshold=0.3, n_jobs=None, transformer_weights=None, verbose=False, verbose_feature_names_out=True) transformers: 적용하는 transformer의 리스트가 담긴 튜플을 의미합니다 Pipeline을 이용할 때와 마찬가지로 string 형태의 name과 transformer을 함께 전달할 수 있습니다. rema..

Ordered dict 개념 및 기능 정리 [내부링크]

Ordered dict 란? Ordered dict는 형태는 일반 딕셔너리와 같지만, key가 누가 먼저 들어왔는지 순서를 기억하는 똑똑한 dict 입니다 Collections 모듈의 일종이기 때문에 from collections import OrderedDict를 먼저 호출해야 합니다. popitem(last = True) 여기서 last=False 가 되면 deque의 popleft 처럼 last 가 아닌 == 제일 첫번째 값을 pop하게 됩니다. from collections import OrderedDict ord_dict = OrderedDict().fromkeys('GeeksForGeeks') >> OrderedDict([(‘G’, None), (‘e’, None), (‘k’, None),..

Datetime x축 효과적으로 그리는 법 [내부링크]

Datetime 으로 그래프를 그릴 때 아래처럼 보기만 해도 눈이 아픈 x축을 그리곤 했는데요..... 어떻게 하면 날짜 형식의 x축을 가독성 있게 제시할 수 있는지 보겠습니다. Datetime 은 포맷의 형식이 강하기 때문에 포맷을 바꾸기 위해서는 formatter가 필수적인데요 이런식으로 matplotlib.dates는 date의 위치(간격)을 정해주는 Locator, 형식을 변환하는 Formatter 로 이루어져 있습니다 가장 먼저 해야 하는 일은 mdates를 호출하는 겁니다 import matplotlib.dates as mdates 그 다음은 x축이 어떤 간격으로 tick을 만들어야 한다는 locator을 지정해주는 일입니다. dates 는 정말 다양한 간격의 locator 를 가지고 있습니다..

Missingno를 통해 데이터 결측치 확인하는 방법 [내부링크]

데이터가 결측치가 있는지 여부는 반드시 확인해야 하는 요소인데요 어떻게 하면 결측치를 좀 더 쉽게 확인 가능한지 몇가지 방법을 알아보겠습니다. 1. Train과 Test 데이터의 결측치 총합 보기 print("Train data has " + str(train.isnull().sum().sum()) + " null values and Test data has " + str(test.isnull().sum().sum()) + " null values") 보통 train.isnull().sum()으로 확인을 하기도 하는데 총합을 보고 싶으면 train.isnull().sum()을 보는 방법도 있습니다. 2. Missingno 라이브러리 사용하기 케글에 자주 등장하는 이 방법은 이렇게 큰 matrix에서 흰색..

matplotlib 가로형 boxplot 그리는 법 [내부링크]

도대체 가로형 box plot은 어떻게 그리나, 검색을 하다가 Horizontal box plot 을 그리는 법을 찾았습니다. plt.boxplot(train.target,vert=False,patch_artist=True) 바로 이 vert 를 False 로 지정하기만 하면 됩니다! 이 뜻은 no vertical 수직이 아닌 형태로 그리겠다는걸 의미합니다 Source: https://stackoverflow.com/questions/18500011/horizontal-box-plots-in-matplotlib-pandas

Dataframe describe 기능 정리 [내부링크]

데이터프레임은 전체적인 분포가 어떻게 되는지 보기 위해 아래처럼 제일 기본적으로 사용하는 편입니다. >>> s = pd.Series([1, 2, 3]) >>> s.describe() count 3.0 mean 2.0 std 1.0 min 1.0 25% 1.5 50% 2.0 75% 2.5 max 3.0 dtype: float64 (Source: Geeksforgeeks) 하지만 기본 기능외에도 유용한 기능들이 있어서 정리해보려 합니다 1. Datetime 데이터 타입에 Describe 적용하기 datetime_is_numeric=True >>> s = pd.Series([ ... np.datetime64("2000-01-01"), ... np.datetime64("2010-01-01"), ... np.da..

막대그래프에 레이블 달기 (plt.text) [내부링크]

그래프를 그리다보면 각 막대그래프별 수치가 어떻게 되는지 함께 보고싶은데요 수치를 넣는 법을 알아보겠습니다. matplotlib.pyplot.text(x, y, s, fontdict=None, **kwargs) 레이블을 달기 위해서는 어디에 텍스트를 넣어달라고 알려줘야 하기 때문에 x : x값 y: y값 s: 넣을 값 아래 코드에서 y값과 s값이 같은 이유도 y의 위치에 s값을 넣어달라고 명시한 것이기 때문입니다 def addlabels(x,y): for i in range(len(x)): plt.text(i,y[i],y[i],ha='center') plt.ylim(0,11) plt.title("Number of datatypes(train)") addlabels(x,y) plt.show() ha 는 h..

데이터 타입별 컬럼 구분하기 [내부링크]

1. Dict 형태 + group by type_summary = {str(i):list(j) for i,j in train.groupby(train.dtypes,axis=1)} {'int64': ['bd', 'bh'], 'float64': ['mss', 'rvd'], 'object': ['id','dayweek']} groupby를 통해서 쉽게 분류를 할 수도 있지만 반환값이 가독성이 별로 좋지 않다는 단점이 있습니다. 2. 조건식 만들기 (dtype) filtered = df.dtypes[df.dtypes == np.object] list_cols = list(filtered.index) 만약 활용도를 높이고 싶다면 for 문을 통해서 전체 데이터 타입별 해당하는 column을 뽑을 수 있을 것 같습..

DataFrame 열(Columns) 비교하기 (train,test 피처 차이 비교) [내부링크]

train 과 test 데이터에 동일한 데이터 피처가 주어졌는지 비교하는 법을 알아보겠습니다. 1. Set 빼기 이용 set(train.columns) - set(test.columns) 파이썬 set 의 특징을 이용해서 train 에는 있지만 test에는 없는 열을 뽑아낼 수 있습니다. 2. Set difference 이용 set(train).difference(set(test)) 1번을 조금 변형한 형태입니다. c Train, Test간 데이터 동일 여부 비교 DataFrame.equals(Df) ==> True, False 반환 이 방법은 2개의 데이터 프레임이 동일한 값을 가지고 있는지를 쉽게 알수 있는 법입니다 >>> df = pd.DataFrame({1: [10], 2: [20]}) >>> d..

Leetcode 310. Minimum Height Trees [내부링크]

https://leetcode.com/problems/minimum-height-trees/ Minimum Height Trees - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 문제를 보고 바로 전에 풀었던 Course schedule topological sort 문제가 생각났는데요 2022.09.23 - [‼ ERROR RECORD] - Leetcode 207. Course Schedule 풀이 (Topological Sorting, BFS, DFS) L..

[ 데이터 시각화 ] matplotlib 기본 개념 | 그래프 정리 [내부링크]

데이터 시각화를 위한 방법은 정말 다양해서 다 외우기는 힘들지만, 응용을 위해서 기본 개념을 정리해보려 합니다. matplotlib 호출 import matplotlib.pyplot as plt 1. fig, ax fig = plt.figure(figsize=(넓이, 높이)) => 그래프를 그릴 하얀색 판을 어떤 넓이, 높이로 그려라 ax = plt.axes() => fig로 그린 판 위에 그래프를 그리기 위한 기본 객체 Fig와 Ax를 한번에 지정 => fig, ax = plt.subplots() 여기서 하나의 판(figure)에 여러 axes 생성이 가능한데, 위치 호출을 통해 각 plot을 조율할 수 있습니다. fig, ax = plt.subplots(2,2) ==> 2행 2열 행태로 그래프를 ..

알파벳 문자열 리스트 쉽게 만드는 법 ‼ [내부링크]

코딩 문제를 풀다가 알파벳 범위를 만들어야 하는 일이 생겼는데요 stackoverflow를 통해서 알파벳 문자열 리스트 만드는 법을 찾아서 정리해보려합니다 :)) 1. String.ascii_lowercase >>> import string >>> string.ascii_lowercase 'abcdefghijklmnopqrstuvwxyz' >>> list(string.ascii_lowercase) ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'] 2. List와 map 사용하는 방법 >>> list(map(chr, rang..

Dynamic Programming _ Memoization 설명 및 적용 #2(숫자형) [내부링크]

2022.10.06 - [Data Structure & Algorithm] - Dynamic Programming _ Memoization 설명 및 적용 #1 위 글에 이어 2번째 시리즈입니다 Cansum 예시 _ 첫번째 게시물의 Dynamic Programming 레시피를 바탕으로 cansum(targetSum, numbers) 주어진 numbers로 targetSum 을 만들 수 있는지 cansum함수를 만들어보겠습니다. (cansum 함수는 targetSum을 만들 수 있는지, 없는지 True/False를 반환해야 합니다) cansum(7,[5,3,4,7])을 기반으로 발생가능한 경우의 수를 tree로 나타냈습니다. 이 케이스를 통해 마지막 노드가 0이 되면 True를 반환하고 그 외의 경우에는 F..

Dynamic Programming _ Memoization 설명 및 적용 #1 [내부링크]

Why ? What is Dynamic Programming? c 피보나치수열 예시 _ const fib = (n) => { if (n { if (n in memo) return memo[n]; if (n { if (m === 1&& n === 1) return 1; if (m === 0 || n === 0) return 0; return gridTraveler(m-1,n) + gridTraveler(m,n-1); }; 하지만 이 코드는 time complexity로 비효율적이라는 단점이 있는데요 어떤 부분이 겹치는지, 효율성이 개선될 수 있는지 보면 사실상 gridTraveler(a,b) = gridTraveler(b,a) 로 계산을 중복으로 할 필요가 없음을 알게됩니다 이 부분에 memoization..

[ Pandas ] DataFrame, Series 함수 요약 정리 [내부링크]

벼락치기 혹은 판다스 기본 함수들을 짚고 넘어갈 수 있도록 필수적인 함수들을 정리했습니다! df는 DataFrame을 의미하며, 자세한 응용사항은 판다스 공식 홈페이지를 통해 파악해보면 좋을 것 같습니다 1. 수치연산, 조회, 처리 관련 함수 함수명 수행기능 예시 (Source: pandas.pydata) df.max, df.min min, max 값 반환 (Series도 가능) pd.Series([4, 2, 0, 8], name='legs').max df.idxmax, df.idxmin 최대/최소 값의 레이블 반환 >>> df.idxmax() consumption Wheat Products co2_emissions Beef dtype: object df.sum, df.cumsum 합, 누적합 반환 (d..

Leetcode 105. Construct Binary Tree from Preorder and Inorder Traversal [내부링크]

https://leetcode.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/ Construct Binary Tree from Preorder and Inorder Traversal - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 또 다시 만난 Binary Tree 문제입니다 여러 문제를 풀다보니까 이제야 Binary Tree의 구조가 입체적으로 조금이나마 그려지는 것 같습니다 이..

Leetcode 62. Unique Path(BFS, DP) [내부링크]

https://leetcode.com/problems/unique-paths/ Unique Paths - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 왼쪽 상단에서 우측하단까지 아래쪽과 오른쪽으로만 이동이 가능할 때, 고려할 수 있는 unique한 경로를 구하는 문제입니다 오랜만에 만난 matrix문제로 BFS로 풀이를 시작했습니다. class Solution: def uniquePaths(self, m: int, n: int) -> int: matrix = ..

Leetcode 623 . Add one Row to Tree (Binary tree) [내부링크]

https://leetcode.com/problems/add-one-row-to-tree/ Add One Row to Tree - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 정해진 depth 까지 도달했을 때, 주어진 val을 왼쪽과 오른쪽 노드로 삽입하고 기존의 왼쪽 노드는 새로운 노드의 왼쪽, 기존의 오른쪽 노드는 새로운 노드의 오른쪽으로 재배열 하는 문제입니다. 제가 처음에 접근했던 방식은 BFS로 stack을 통해 아래 로직을 전개하는걸로 생각했습니다..

알고리즘, Big O Notation Cheatsheet [내부링크]

이전에 padas, numpy, sql 등 여러 cheat sheet 링크를 공유했었는데요 2022.09.10 - [데이터 공부 TIP] - Git/ SQL / Pandas Cheatsheet 요약본 공유 Big O notation을 공부를 하다보니 알고리즘도 cheatsheet가 있더라구요 면접이나 공부를 위해 유용하게 활용하기 위해 기록겸 공유드립니다! 한 3개 정도 가지고 와봤는데요 그 외에 다른 디자인이 필요하다면 구글에 Big o cheatsheet, algorithm cheatsheet를 검색하셔도 됩니다 Big O Cheatsheet Source : https://www.bigocheatsheet.com/ https://www.bigocheatsheet.com/pdf/big-o-cheat..

Leetcode 78. Subsets (DFS backtracking) [내부링크]

https://leetcode.com/problems/subsets/ Subsets - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 이 문제는 DFS의 Back tracking 을 활용한 문제인데요 저는 아래와 같이 풀이를 했습니다 from itertools import combinations class Solution: def subsets(self, nums: List[int]) -> List[List[int]]: #방법 1 tertools.combinat..

Big O notation 예시 위주 정리 [내부링크]

Time Complexity 계산법 n이 input하는 변수의 사이즈(샘플값)이라고 할 때, 전체 시간 T를 아래와 같이 나타냅니다 T = an + b 1. find the fastest growing term 가장 차수가 큰 항을 찾는다 -> fastest going term is 'an' 2. take out the coefficient 앞에 상수를 제외 한다 -> O(n) 예시) T = cn**2 + dn + e 1. cn**2 2. n**2 -> O(n**2) T = c 1. c 2. 1 -> O(1) O(1) Constant time 예시) def function(array): total = 0 -> O(1) return total -> O(1) T = O(1) + O(1) = c1 + c2..

[ Pandas ] DataFrame 컬럼 추가 / 삭제 방법 [내부링크]

SQL에서는 insert, update,delete 등의 구문을 통해 데이터를 추가, 삭제 등이 가능했는데요 DataFrame에서는 어떻게 이러한 기능을 실행할 수 있는지 보겠습니다. 컬럼 추가 1. DataFrame.assign(추가컬럼이름 = 값) 여기서 '값'에는 값을 나열한 리스트가 올 수도 있고, 조건문이 담긴 함수가 올 수도 있습니다. 예를 들어, 기존에 4행을 가진 DataFrame 이 있다면 기존의 길이에 맞춰서 df = df.assign(score=[70,80,90,100]) 을 추가할 수 있습니다. 혹은, 아래와 같이 lambda를 이용해서 새로운 컬럼을 추가할 수도 있습니다. df temp_c Portland 17.0 Berkeley 25.0 df.assign(temp_f=lamb..

[ Pandas ] Filter 함수 적용하기 [내부링크]

c pandas.DataFrame.filter DataFrame.filter(items=None, like=None, regex=None, axis=None) : 특정 조건의 행열을 포함한 데이터 프레임을 반환하는 함수 Filter의 각 파라미터가 어떻게 활용되는지 예시코드를 통해서 알아보겠습니다 예시코드_ >>> df one two three mouse 1 2 3 rabbit 4 5 6 >>> df.filter(items=['one', 'three']) one three mouse 1 3 rabbit 4 6 이렇게 items는 어떤 열을 보겠다는 걸 컬럼명 나열을 통해서 필터링 할 수 있습니다 다음은 정규표현식 regex 를 이용해 열을 필터링하는 예시입니다 문자열이 e로 끝나야 한다는 $ 표현을 활용..

Leetcode 416. Partition Equal Subset Sum [내부링크]

https://leetcode.com/problems/partition-equal-subset-sum/ Partition Equal Subset Sum - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 이 문제는 처음에 만만하게 보고 간단한 코드를 짰다가 에러가 나서 애를 먹은 문제입니다 ㅜㅠ 여러 풀이를 보면서 어떤 식으로 해결 될 수 있는지 보겠습니다. Brute-Force class Solution: def canPartition(self, nums): d..

Leetcode 139. Word Break (Trie, BFS, DP) [내부링크]

https://leetcode.com/problems/word-break/ Word Break - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 이전에 Trie의 개념과 기본 구조를 다루는 문제를 풀었었는데요 2022.09.27 - [Data Structure & Algorithm] - Trie (트라이, Digital tree, prefix, Retrieval tree) + 예제 코드 Trie (트라이, Digital tree, prefix, Retrieval..

Leetcode 75. Sort Colors (Dutch National flag, pointers) [내부링크]

https://leetcode.com/problems/sort-colors/ Sort Colors - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 이 문제는 sort 없이 0,1,2로 대표되는 빨강,하얀,파랑 3가지 색깔 순서대로 정렬시키는 문제입니다 다른 문제와 달리, return 없이 값을 교체해야 한다는 조건이 붙어있습니다 class Solution: def sortColors(self, nums: List[int]) -> None: colors = [0..

[ Scikit-learn ] Train, test데이터 분리(train_test_split, StratifiedShuffleSplit) [내부링크]

데이터셋을 train 데이터와 test 데이터로 분리할 때 사용할 수 있는 sklearn.model_selection.train_test_split 과 sklearn.model_selection.StratifiedShuffleSplit에 대해서 알아보겠습니다 sklearn.model_selection.train_test_split => 주어진 array 혹은 matrice를 랜덤한 train, test 데이터로 나누는 방법 sklearn.model_selection.train_test_split(arrays, test_size=None, train_size=None, random_state=None, shuffle=True, stratify=None) test_size와 train_size는 어떤..

[ Pandas ] Pandas.cut, qcut 개념 및 차이 정리 [내부링크]

Pandas.cut 란? 이산적인 간격으로 분포 되어 있는 값들을 n개의 구간으로 나눠주는 기능입니다 연속적인 변수들을 카테고리화시켜주는데 유용하게 사용됩니다 pandas.cut(x, bins, right=True, labels=None, retbins=False, precision=3, include_lowest=False, duplicates='raise', ordered=True) x : 1차원 형태의 input array bin: 어떤 간격으로 나눌것인지 결정 right: 가장 오른쪽 끝값의 포함 여부 명시 **각 변수의 세부 기능은 제일 하단의 pandas 사이트를 참조하시길 바랍니다 예시 코드) 활용방법이 와닿을 수 있도록 예시 코드를 보겠습니다. input array와 간격, 각 간격에 ..

[ Scikit-learn] Preprocessing.PolynomialFeatures 정리 [내부링크]

공부하다가 Polynomial Feature이 등장해서 그 기능과 사용방법을 짚고 넘어가려 합니다. PolynomialFeatures의 기능 공식문서에 'Generate polynomial and interaction features' 라고 되어 있는 것처럼 다차항 피처를 만든다! 라고 생각하시면 됩니다. Kaggle을 봤을 때 피처의 수가 부족하거나, 기존 피처가 유의미하지 않을 경우 여러 피처간에 일종의 상호작용을 통해 만들어지는 또 다른 피처를 사용해보는거죠. 다차항인만큼 몇차(degree)를 지정가능한데요 예를 들어 a,b가 있다면 1, a, b, a^2, ab, b*2 이렇게 새로운 피처들을 만들 수 있는겁니다 PolynomialFeatures의 파라미터 sklearn.preprocess..

[ Pandas ] corr 상관관계수 반환 모듈 알아보기 [내부링크]

데이터 분석을 할 때 하나의 데이터와 또 다른 데이터가 얼마나 상관관계를 가지는지 알아보기 위해 '상관계수' 를 알아보는데요, 이를 쉽게 구할 수 있는 Pandas의 corr 사용방법을 알아보겠습니다. √ Series.corr Series.corr(other, method='pearson', min_periods=None) method = {'pearson','kendall','spearman'} min_periods 는 유효한 결과값 도출을 위해 필요한 최소 관찰값을 지정하는 것을 의미합니다 아래는 Kaggle 노트북에서 가져온 코드인데요 corr = df['target].corr(df[var_name]) 이렇게 Series.corr(compared series) 로 구성하면됩니다 √ DataFrame..

[ Pandas] 데이터프레임 align 알아보기 [내부링크]

Kaggle 노트북을 보다가 align 을 발견해서 가지고 와봤습니다 DataFrame.align(other, join='outer', axis=None, level=None, copy=True, fill_value=None, method=None, limit=None, fill_axis=0, broadcast_axis=None)[source] 이 기능은 행/열에 명시된 join 방법을 통해 2개의 다른 데이터프레임의 align을 맞추는 기능인데요 Kaggle에서는 주로 train 데이터와 test 데이터간에 피처들이 서로 다르지 않도록 맞춰주는데에 사용되더라구요 반환 값은 aligh에 사용한 각 데이터프레임 혹은 시리즈로 반환되기 때문에 변수 2개를 unpacking 하는 방식으로 사용됩니다 train..

파이썬 reduce 함수 정리 [내부링크]

from functools import reduce reduce함수는 functools 의 내장 모듈로 이렇게 호출을 통해서 사용이 가능한데요 이 함수는 여러 데이터에 대한 누적연산을 반환하는 기능을합니다 functools.reduce (함수, sequence) => Value 반환 특히 이 함수에 어떤 값을 넣는지에 따라서 유용한 활용이 가능한데요 몇가지 예시를 통해 이 함수가 어떤 기능을 하는지 살펴보겠습니다 from functools import reduce def sum(a,b): return a+b reduce(sum,[1,2,3,4]) >> 10 이렇게 간단한 sum 함수를 인자로 넣고 뒤의 sequence를 적용하면 ((1+2)+3)+4 = 10이 나오죠 reduce함수는 복잡한 연산이 ..

[Pandas] DataFrame 개념 및 생성/조회 방법 [내부링크]

c DataFrame 이란? Pandas에서는 DataFrame을 여러 다른 타입의 컬럼을 가진 2차원의 데이터 구조로 정의하고 있습니다 처음에 저도 DataFrame이라는 개념을 들었을 때 잘 이해가 안 갔는데요 간단히 생각하면 엑셀의 피벗테이블, 일반 표 등 말그대로 Data를 담은 Frame이다! 정도로 이해가능 할 것 같습니다 여기서 반드시 짚고 넘어가야 하는 부분은 DataFrame과 관련된 기본 용어인데요 DataFrame은 반드시 가장 왼쪽에 index label 이 있고 열이름이 위쪽에 위치해 있습니다 일반적으로 행은 axis = 0, 열은 axis =1로 표현합니다 여기서 데이터프레임의 한 줄, 즉 열 데이터는 Series로 지칭되니 꼭 기억하시길 바래요! DataFrame 만들기 1..

Leetcode 721. Accounts Merge (Union Find) [내부링크]

https://leetcode.com/problems/accounts-merge/ Accounts Merge - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 또 다시 만난 Union Find 문제,,,, 하지만 다시 헤매고 문제의 취지에 맞지 않게 풀이를 작성한 제 풀이를 보며 반성하는 마음으로,,,풀이를 분석해보겠습니다 class Solution: def accountsMerge(self, accounts: List[List[str]]) -> List[Lis..

Python bisect 배열 이진 분할 알고리즘 정리 [내부링크]

2022.09.26 - [분류 전체보기] - Binary Tree & Binary Search Tree Binary Tree & Binary Search Tree Binary Tree란? Binary tree is a tree for which every node has at most two child nodes. Binary Tree는 체리처럼 자식 노드가 2개 이하로 구성된 나무 형태의 데이터 구조를 의미합니다 Binary Tree traversa.. psygo22.tistory.com 이전에 Binary Search Tree가 무엇인지 알아봤었는데요 파이썬에서 이러한 배열 이진 분할/삽입이 유용한 함수를 찾아서 탐구해보려합니다 :) √ Bisect 수행 방법 From bisect import bis..

Fenwick Tree (Binary Indexed Tree, 이진인덱스 트리) [내부링크]

√ 펜윅 트리란? Data structure that supports sum range queries as well as setting values in a static array and getting the value of the *prefix sum up some index efficiently >> 위키백과의 설명을 빌리자면, 요소 업데이트와 접두사의 합계 계산을 효과적으로 수행하도록 하는 트리를 의미합니다 ** 구간합 Prefix sum (Cumulative sum, inclusinve sum, inclusive scan) Prefix sum이 감이 잘 안와서 찾아봤는데요, 일반적으로 생각하면 이런 누계합을 의미하는데요 computer science 알고리즘과 functional programmi..

[Numpy] Flatten 기능 및 사용법 정리 [내부링크]

numpy.ndarray.flatten 이 기능은 주어진 array를 1차원, 즉 쉽게 생각하면 한줄로 쭉 늘어놓는 함수인데요 ndarray.flatten(order='C') 세부 파라미터 order 중 가장 유용한 'C', 'F' 옵션에 대해서 더 알아보겠습니다 'C' => 행단위로 추출 'F' => 열단위로 추출 즉, 아래와 같은 array a를 flatten할 때 default인 'C' 행 기준으로 나열할 수도 있고 'F' 열 단위로 나열할 수도 있습니다 a = np.array([[1,2], [3,4]]) a.flatten() array([1, 2, 3, 4]) a.flatten('F') array([1, 3, 2, 4]) Source: https://numpy.org/doc/stable/refer..

[Numpy] 열 Column간 순서, 위치 바꾸기 [내부링크]

가끔 이렇게 열간 순서를 바꿔야 할 때가 있는데요 이 때 할 수 있는 가장 간단한 방법은 인덱싱을 적용한 Swap을 사용하는건데요 import numpy as np my_array[:, [2, 0]] = my_array[:, [0, 2]] 이런식으로 첫번째 열과 3번째 열을 Swap 해주겠다!고 명시만 하면 간단하게 할 수 있습니다 Reference: https://www.geeksforgeeks.org/how-to-swap-columns-of-a-given-numpy-array/

Leetcode 56. Merge Intervals [내부링크]

https://leetcode.com/problems/merge-intervals/ Merge Intervals - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 에러코드) class Solution: def merge(self, intervals): res = [] intervals.sort(key= lambda x: x[0]) if len(intervals) == 1: return intervals for i in range(len(intervals)-1):..

Hash Table (HT, 해쉬테이블) [내부링크]

Hash function 이란? Hash table is a data structure that provides a mapping from keys to values using a technique called hasing. Key-values pair (key must be unique) 이는 주로 빈도수를 tracking하기 위해 사용되는데요 Hash function 특징 1. 결정론적 (Deterministic) H(x) = y라고 했을 때 y이외의 다른 값을 생성하면 안됨 아래 예시처럼, H(5) = 6을 재호출하면 H(5) = 7이 되면서 y값이 변경되면 안된다는 거죠 2. 유일성 보존 H(x) = H(y)처럼 값이 같을 때를 hash collision이라고 하는데 이러한 hash collisi..

[Numpy] 넘파이 범용/유틸리티 함수 정리 [내부링크]

데이터 분석 시, 유용하게 사용가능한 대표적인 범용함수(universal function)를 정리해보려 합니다 ▷ 항이 1개인 범용함수 함수 이름 기능 abs 절대값 반환 around 0.5기준 올림/내림 round n소수점 자리수까지 반올림 실행 rint 가장 가까운 정수로 올림/내림 ceil 크거나 같은 가장 작은 정수 반환 floor 작거나 같은 가장 큰 정수 반환 trunc 소수점 버림 reciprocal 역수 처리 (2 -> 1/2) sqrt 제곱근 파이썬과 유사한 점이 많은데 rint와 reciprocal은 처음 보는거 같네요 사용하는 방법은 간단합니다. import numpy as np np.abs(array) np.around(array) np.ceil(array) ... ▷ 항이 2개인 ..

Leetcode 19. Remove Nth node from end of the list (Linked List, two-pointer) [내부링크]

https://leetcode.com/problems/remove-nth-node-from-end-of-list/submissions/ Remove Nth Node From End of List - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 처음 풀이) # Definition for singly-linked list. # class ListNode: # def __init__(self, val=0, next=None): # self.val = val # se..

Leetcode 33. Search in Rotated Sorted Array(Binary Search) [내부링크]

https://leetcode.com/problems/search-in-rotated-sorted-array/ Search in Rotated Sorted Array - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 얼핏보면 간단한 문제 같지만 O(logn)이라는 조건이 붙어있는만큼, Binary Tree 로 풀어야 하는 문제였습니다 class Solution: def search(self, nums: List[int], target: int) -> int: r..

Trie (트라이, Digital tree, prefix, Retrieval tree) + 예제 코드 [내부링크]

Trie 란? : 탐색트리의 일종으로 동적 집합이나 연관배열을 저장하는데 사용되는 트리 자료 구조 (출처: 위키백과) **문자열, 접두사와 관련된 검색에 매우 유용하게 사용됨 Leetcode의 Trie관련 문제를 통해서 더 자세히 알아봅시다! https://leetcode.com/problems/implement-trie-prefix-tree/ Implement Trie (Prefix Tree) - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 예시 답안 풀이)..

다중 리스트 원소 포함 여부 파악하기 [내부링크]

오늘 코딩을 하다가 재밌는 의문점과 해결법을 찾아서 정리해두려 한다. 일반적으로 리스트에 특정 원소가 있는지 여부는 value in List 이런식으로 쉽게 할 수 있지만 List[List]의 구조는 어떻게 해야 할까? 해결법1. Any 사용하기 x = [[0,0,0],[2,0,0]] if any(2 in i for i in x): print(True) 첫번째는 any를 사용하는 방식이다. any 안에는 List comprehension을 통해서 리스트 속의 리스트를 하나씩 꺼내주고, 하나라도 2가 있으면 True를 반환하도록 했다. 간단하지만 알아두면 유용하다. 해결법2. 원소의 개수 사용하기 x = [[0,0,0],[2,0,0]] if len([i for i in x if x==2]) != 0: pr..

Leetcode 200. Number of Islands (Union Find) [내부링크]

https://leetcode.com/problems/number-of-islands/ Number of Islands - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 이 문제는 Union Find와 관련된 문제로 관련된 개념은 아래에서 참고하실 수 있습니다 https://psygo22.tistory.com/59 Union Find Union Find 란? : Data structure that keeps track of elements which are sp..

파이썬 Map function 다중 변수, 다중 리스트 적용방법 [내부링크]

Python map 기능은 코딩할 때 많이 사용되는 유용한 기능인데요 제일 기본 생김새는 map(함수, 적용변수) 이렇게 생겨서 뒤에 값에 앞에 함수를 적용해라! 는 간단한 기능을하는데요 def addition(n): return n + n numbers = (1, 2, 3, 4) result = map(addition, numbers) >> [2,4,6,8] map() 에는 여러 변수와 리스트에 함수를 한번에 적용할 수도 있는데요 그 방법을 알아보겠습니다 map(함수, list1, list2) 아래 예제처럼 2개의 변수가 필요한 함수 뒤에 2개의 리스트가 주어지면 각 리스트에서 차례대로 하나씩 변수를 들고와서 함수를 적용해줍니다 def sum(a,b): return a+b lst1=[2,4,6,8] l..

[Numpy] 넘파이 개념 및 필수 함수 정리 [내부링크]

√ Numpy 란? 다차원배열(ndarray)의 효과적 처리를 도와주는 라이브러리 [[ ]] 대괄호 2개는 2차원, [[[ 3개는 3차원으로 차원 벡터와 행렬 선형대수 계산에 주로 사용 차원의 수(ndim), 차원의 모양은 shape 기능이용 벡터 연산이 가능해서 연산속도가 매우 빠름 √ Numpy 특징 numpy 의 배열은 반드시 동일한 데이터 타입으로 자동 변환/저장된다. x = [1,2,'K'] a = np. array(x) print(a) >>> ['1' '2' 'K'] #전체 데이터 타입을 string으로 자동으로 통일시킴 √ Numpy 필수 함수 1차원 배열 형성 x = np.array(리스트 or 튜플) --------------- 차원의 크기 = x.ndim 총 요소 갯수 = x.size ..

Binary Tree & Binary Search Tree [내부링크]

Binary Tree란? Binary tree is a tree for which every node has at most two child nodes. Binary Tree는 체리처럼 자식 노드가 2개 이하로 구성된 나무 형태의 데이터 구조를 의미합니다 Binary Tree traversals Binary Tree가 순회할 때 이렇게 3가지 종류로 나뉠 수 있는데요, 이는 재귀적으로 구현할 때 언제 node.value를 print 하느냐가 가장 큰 차이라고 합니다 여기서 신기한 점은 Binary Search Tree를 inorder traversal 시키면 오름차순 형태로 배열이 완성된다는 점인데요 상황에 따라 BST와 inorder 코드를 잘 구현해서 사용할 수 있을 것 같습니다 Level order..

Python - Oracle DB 연동 방법 [내부링크]

DB 연동 python 프로그램에서 여러 DB(Oracle, My SQL등)과 연동이 가능한데요 연동을 위해서는 sql과 python을 연결하는 라이브러리 설치가 필요합니다 -> (드라이버)라이브러리가 필요함 Oracle 라이브러리 설치 (cmd 관리자 권한 실행하여 입력) python -m pip install cx_Oracle --upgrade 위 코드를 cmd에 입력! 이제 라이브러리를 설치했으면 Python(저는 pycharm을 사용했어요) 에 가서 DB를 아래와 같이 연결합니다 ** user,pw,dns는 각 DB를 만들때 입력했던 값으로 속성에서 확인 가능합니다 import cx_Oracle user = '유저이름' pw = 'password' dns = 'localhost: ddd/xe" c..

Leetcode 238. Product of Array Except Self [내부링크]

https://leetcode.com/problems/product-of-array-except-self/ Product of Array Except Self - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 처음 접근) import math class Solution: def productExceptSelf(self, nums: List[int]) -> List[int]: answer = [] total = math.prod(nums) if 0 not in n..

Union Find [내부링크]

Union Find 란? : Data structure that keeps track of elements which are split into one or more disjoint sets 위키백과의 설명을 빌리자면, Union Find는 상호 배타적으로 이루어진 집합을 효율적으로 표현하기 위해 만들어진 자료 구조를 의미합니다. 주요 기능 : Find , Union Find Operation (어떤 set에 속해있는지 판별) : To find which component a particular element belongs to find the root of that component by following the parent nodes until a slef loop is reached(a node w..

Leetcode. Coin Change (DP, BFS) [내부링크]

https://leetcode.com/problems/coin-change/ Coin Change - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 처음 접근) 몫과 나머지, 그리고 각 변수가 사용된 개수를 활용하는 문제여서 당연히 dict지!라는 생각으로 접근을 했다 class Solution: def coinChange(self, coins: List[int], amount: int) -> int: coins.sort(reverse=True) cal, res..

Dynamic Programming Steps [내부링크]

코딩문제에 단골로 등장하는 Dynamic Programming에 대해 더 알아보기 위해 공부한 유투브 동영상을 정리해봤습니다 https://www.youtube.com/watch?v=aPQY__2H3tE&t=10s&ab_channel=Reducible Dynamic Programming 이란? - 부분문제(subproblem)을 식별하고 해결해서 큰 문제를 해결하는 방식 [ 5 Steps to solve DP ] 1. Longest Increasing Subsequence (LIS) 문제 정의하고 살펴보기 a1에서 a(n)까지 [3,1,8,2,5]가 있을 때, 1,2,5는 연속되면서 계속 증가하는 Subsequence 중에서 3개로 가장 긴 길이에 해당 2. Visualize Examples => Dra..

Leetcode 207. Course Schedule 풀이 (Topological Sorting, BFS, DFS) [내부링크]

https://leetcode.com/problems/course-schedule/ Course Schedule - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 이 문제를 풀기 위해서는 Topological Sorting에 대한 이해가 필요하기 때문에 정리해보려합니다 √ Topological Sorting (위상정렬) 이란? Directed Acyclic Graph (방향성비순환그래프, DAG)의 꼭지점들이 선형적으로 정렬된 것을 의미합니다 DAG이름이 어렵지..

[Scikit-learn] sklearn.feature_selection.SelectFrom Model [내부링크]

√ Class구성요소 이 기능의 목적은 여러 피처들을 다 고려하기에는 시간이 많이 들고 비효율적이기 때문에, 모델에 적합한 피처들을 골라줘! 라는 모델인데요. 주요한 구성요소를 살펴보겠습니다 class sklearn.feature_selection.SelectFromModel(estimator, *, threshold=None, prefit=False, norm_order=1, max_features=None, importance_getter='auto') estimator : 어떤 모델을 사용하냐 (Logistic Regression 등등) threshold: median, mean 등 기타 임계값이 되는 수치 더보기 https://scikit-learn.org/stable/modules/generat..

Leetcode 150. Reverse Polish Notation (Stack) [내부링크]

https://leetcode.com/problems/evaluate-reverse-polish-notation/ Evaluate Reverse Polish Notation - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com Polish Notation이 궁금하신 분들은 아래 위키 백과를 참조하시길 바랍니다 더보기 https://ko.wikipedia.org/wiki/%EC%97%AD%ED%8F%B4%EB%9E%80%EB%93%9C_%ED%91%9C%EA%B8%B..

Leetcode 102. Binary Tree Level Order Traversal (BFS) [내부링크]

https://leetcode.com/problems/binary-tree-level-order-traversal/ Binary Tree Level Order Traversal - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com Binary Tree는 간단하면서도 아직 완벽히 이해가 가지 않는 부분이기 때문에 여러 사람들의 코드를 보면서, 어떤 구조로 실제 프로그래밍 될 수 있는지 공부해보려 한다 √ Level Order기반 Binary Tree 풀이 더보기 Co..

[Scikit-learn] Impute.SimpleImputer [내부링크]

***이전의 sklearn.preprocessing.Imputer을 현재 sklearn.impute.SimpleImputer가 대체했습니다 √ sklearn.impute.SimpleImputer 이 기능은 데이터 전처리 과정에서 결측값을 좀 더 편리하게 처리하는 방법입니다 class sklearn.impute.SimpleImputer(*, missing_values=nan, strategy='mean', fill_value=None, verbose='deprecated', copy=True, add_indicator=False) missing_values 는 default가 np.nan이며 nan, pd.NA 이런식으로 표현이 가능합니다 strategy는 뭘로 채울꺼냐? 라고 했을 때 mean, medi..

[Pandas] Groupby / Count / Value_counts 차이점 정리 [내부링크]

√ DataFrame.groupby 데이터프레임의 그룹핑은 groupby를 통해 비교적 간단하게 실행이 가능한데요 DataFrame.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=_NoDefault.no_default, squeeze=_NoDefault.no_default, observed=False, dropna=True) 더보기 Pandas 공식 웹사이트에서 세부기능 참조 https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.groupby.html "어떤 데이터프레임을 by 무엇으로 axis 행/열을 기준으로 묶겠다" 를 생각하면서 작성하면 좀 수월한 것 같습..

Stack & Queue 개념 정리 [내부링크]

Stack 이란? : Push와 pop 기능을 가진 one-ended linear data (LIFO) Complexity Analysis Pushing O(1) Popping O(1) Peeking O(1) Searching O(n) Size O(1) 벽돌을 길게 쌓아서 벽돌을 넣고(push) 벽돌을 빼는(pop)을 상상하면 훨씬 이해가 잘 되는 것 같아요 Queue 이란? : Enqueue 와 Dequeue 주요 기능을 가진 선형 데이터 구조 (FIFO) 식당 줄 서는걸 생각해보면 queue와 상당히 비슷한 걸 알 수 있습니다 줄을 서고(Enqueue) 줄에서 빠지고(Dequeue) ! Complexity Analysis Enqueue O(1) Dequeue O(1) Peeking O(1) Conta..

Leetcode 15. 3Sum (two-pointer) [내부링크]

https://leetcode.com/problems/3sum/ 3Sum - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 제출코드) class Solution: def threeSum(self, nums: List[int]) -> List[List[int]]: answer = [] nums.sort() if len(nums) 0: j -= 1 elif total < -val: i += 1 return answer 이전에 Leetcode 1번 twoSum 문제를..

Python 딕셔너리 키 값, value 값으로 정렬하는 법 [내부링크]

Hash문제를 풀다보면 dict를 정렬이 필요한 경우가 생기기 때문에 정렬하는 법을 정리해보려 합니다! Key 값 기준으로 딕셔너리 정렬하는 법 1) OrderDict 사용 from collections import OrderedDict dict = OrderedDict(sorted(dict.items())) OrderedDict는 무작위 순서를 기억하는 일반 dict와 달리, 데이터가 삽입된 순서를 기억하는 똑똑한 dict입니다 (그래서 두 딕셔너리간 값과 정렬순서까지 동일한지를 확인할 때 유용하게 사용됩니다) 2) sorted 사용 dict(sorted(d.items())) lambda로 x[0]을 굳이 명시해줄 필요 없습니다 Value 값 기준으로 딕셔너리 정렬하는 법 sorted(dict.item..

Leetcode 973. K Closest Points to Origin (Heaqp 등) [내부링크]

https://leetcode.com/problems/k-closest-points-to-origin/ K Closest Points to Origin - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 처음 접근) from collections import OrderedDict class Solution: def kClosest(self, points: List[List[int]], k: int) -> List[List[int]]: q= [] ; ck = {} ..

Heapq 알고리즘 개념 및 활용방법 정리 [내부링크]

√ Heap 데이터 구조란? : 최대/최소값 연산에 용이한 이진트리구조의 데이터 구조 Heap의 종류는 부모노드가 최대값을 가지고 자식노드는 그 보다 작은 값을 가지는 Max Heap과 반대로 자식노드가 부모노드보다 큰 값을 가지는 Min Heap 2가지가 있습니다 바로 여기서 heapq 모듈은 Min Heap 기능을 가지는 알고리즘에 해당합니다 √ Heapq 모듈 기능 정리 import heapq : heapq사용을 위해서는 모듈 import가 선행되어야 합니다 heapq.heapify(list) : list를 heap으로 변환시킵니다 → Heap으로 변신 import heapq l = [3,5,2] heapq.heapify(l) >> [2,3,5] heapq.heappush(heap,element) ..

[Pandas] Reset_index, set_index 비교 [내부링크]

pandas.DataFrame.reset_index : 데이터프레임의 인덱스를 리셋하여 default index를 사용함 (멀티인덱스의 경우, 1개 이상의 인덱스를 삭제할 수 있음) DataFrame.reset_index(level=None, drop=False, inplace=False, col_level=0, col_fill='', allow_duplicates=_NoDefault.no_default, names=None) 여기서 default index란, 0,1,2,3,4... 이런 식으로 숫자형의 index를 의미합니다 예시_ 아래 와 같은 df에 reset_index를 진행하면, 기존 첫 index가 컬럼이 되고 sequential index가 추가되게 됩니다 class max_speed fa..

Singly & Doubly Linked List [내부링크]

Linked List 란? A sequential list of nodes that holds data which point to other nodes also containing data 데이터를 가지고 있는 노드들의 연속적인 리스트 어디에 사용될까? List, Queue & stack, circular list separate chaining, hashtable 등등 Singly Linked List와 Doubly Linked List 비교 장점 단점 Singly Linked List 사용하기 용이함 메모리를 덜 사용함 이전의 요소에 쉽게 접근하기 어려움 Doubly Linked List 역방향 순회가 가능함 2배의 메모리가 소요됨 Singly Linked List와 Doubly Linked ..

Leetcode 542. 01 Matrix [내부링크]

문제. m*n의 행렬이 주어졌을 때, 각셀에서 0이 가장 가까운 거리를 반환하라 https://leetcode.com/problems/01-matrix/ 01 Matrix - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 처음 접근) 코딩테스트와 프로그래밍 대회에서 만나서 엄청 당황했던 행렬형태의 문제를 다시 만났다.... 이번 기회에 확실히 원리를 이해해야겠다! 가장 최단거리를 계산하라 했으므로 BFS임을 직감하고 행과 열을 인덱싱을 통해 호출해야겠다는 생각이..

Python List append/extend와 +=의 차이점 정리 [내부링크]

문제를 풀다가 += 와 append를 섞어서 썼었는데, append가 아닌 +=를 쓰면서 에러가 나는 사례를 만나서, 둘의 차이점에 대해 정리해보려 합니다! Append Extend += 기존 리스트의 마지막에 값을 추가함 extend하는 iterable의 값들을 리스트에 추가함 extend와 유사 [1,3].append([4,5]) > [1,3,[4,5]] [1,3].extend([4,5]) > [1,3,4,5] [1,3] += [4,5] > [1,3,4,5] ['a','b'].append('cat') > ['a','b','cat'] ['a','b'].extend('cat') > ['a','b','c','a','t'] 아래 코드로 실험해보세요! k = [1, 3] k.append([4,5]) k.ext..

Leetcode 53.Maximum Subarray(Kadane, brute-force algorithm) [내부링크]

문제. 숫자형 array nums가 주어졌을 때 인접한 subarray 중 가장 큰 sum 을 반환하라 Input: nums = [-2,1,-3,4,-1,2,1,-5,4] Output: 6 Explanation: [4,-1,2,1] has the largest sum = 6. https://leetcode.com/problems/maximum-subarray/ Maximum Subarray - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 처음 접근은 for문으..

Big O notation & Array [내부링크]

Complexity Analysis : Programmer은 아래 2가지를 고민한다 How much time does this algorithm need to finish? How much space does this algorithm need to finish? Big-O Notation Big-O Notation gives an upper bound of the complexity in the worst case, helping to quantify performance as the input size becomes arbitrarily large n : input 사이즈 Constant Time O(1) Logarithmic Time O(log(n)) Linear Time O(n) Linearith..

코딩 프로그래밍 웹 사이트 추천 리스트 [내부링크]

안녕하세요, 오늘은 제가 사용하는 프로그래밍 연습 웹 사이트 리스트를 가지고 왔습니다! 간단히 설명드리자면 코딩도장, 백준코딩, 프로그래머스는 국내 웹사이트이고 국내 코딩테스트를 준비할 때는 백준코딩과 프로그래머스를 많이들 쓰시더라구요 사실 어느 웹사이트를 쓰느냐 보다는 얼마나 꾸준히, 다른 사람들의 코드를 보면서 얻어가느냐가 중요한 것 같아요 저는 우왕좌왕하면서 이 웹사이트 썼다가 저 웹사이트 썼다가 했는데, 지금 생각해보면 하나의 웹 사이트를 꾸준히 했다면 완료한 문제들을 보면서 좀 더 동기부여를 받고 보람을 느낄 수 있지 않았을까 싶네요! 1. 코딩도장 https://codingdojang.com/list/1?sort=level&sort_order=fw 코딩도장 프로그래밍 문제풀이를 통해서 코딩 실..

Leetcode 10. Regular Expression Matching (정규표현식, Dynamic Programming) [내부링크]

문제. input string s과 '.'와 '*'가 포함된 정규표현식 pattern p가 주어졌을 때, matching이 전체 input string을 포함하는지 여부를 반환하라 https://leetcode.com/problems/regular-expression-matching/ Regular Expression Matching - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 풀이방법) import re class Solution: def isMatch(..

Leetcode 5. Longest Palindromic Substring (Dynamic programming) [내부링크]

문제. 주어진 문자열 s에서 부분 문자열 중, 역순으로 읽어도 값이 같은 가장 긴 부분 문자열을 찾아서 반환하시오 https://leetcode.com/problems/longest-palindromic-substring/ Longest Palindromic Substring - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 첫 시도) 가장 첫 번째 아이디어는 어떤 과정으로 조건을 충족하는 부분문자열을 만들 수 있을까?였습니다. 그래서 고민을 통해 문자열의 길이..

Leetcode 03.Longest Substring Without Repeating Characters [내부링크]

문제. 주어진 문자열에서 가장 긴 부분 문장열의 길이를 반환하는 코드를 작성하라 https://leetcode.com/problems/longest-substring-without-repeating-characters/ Longest Substring Without Repeating Characters - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 처음에 문제를 보고 저는 쉬운 문자열 문제인 줄 알았지만, 또 다시 해시문제임을 눈치채지 못한 ㅜㅠㅠㅠ 바보였습..

Leetcode 02. Add Two Numbers [내부링크]

https://leetcode.com/problems/add-two-numbers/ Add Two Numbers - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 문제. 2개의 linkedlist가 주어졌을 때 각 항목을 더한 결과값을 reverse order로 반환하는 코드를 짜라. Input: l1 = [2,4,3], l2 = [5,6,4] Output: [7,0,8] Explanation: 342 + 465 = 807. 모범 답안) class Solutio..

Linked List 총정리 [내부링크]

LinkedList란? : 리스트와 달리 원소를 메모리에 저장하는 방식이 다른 선형 자료구조 개인적으로 Linked List는 꼬치와 비슷하다고 생각하는데요, 꼬치에 있는 각 재료들 = 원소들은 '노드'라고 불리고, 이 노드는 값을 지니고 있는 '데이터'와 다음 노드의 참조값을 가지고 있는 'Next'로 분류됩니다 빈 막대기에 재료를 끼운다고 가정하면, 처음으로 끼우는 재료를 Head라고 부르는데요 우리가 꼬치에 재료를 다 끼우면 꼬치를 다 만들었다고 하죠? 마찬가지로 Linked List에서는 재료를 다 끼우고 나면 None을 반환합니다 그러면 코드상에서 이러한 개념들이 어떻게 나타내질 수 있는지 봅시다 def __init__(self, nodes=None): self.head = None if nod..

SQL DDL 데이터 정의어 총 정리 [내부링크]

DDL은 DB구조를 생성하거나 수정 및 삭제하는 SQL문에 해당합니다 SQL종류 명령문 Data Definition Language (데이터 정의어) CREATE ALTER DROP RENAME TRUNCATE *오라클의 데이터타입 DATA TYPE 특징 CHAR(SIZE) 고정길이 문자저장 최소 1BYTE, 최대 2000BYTE VARCHAR2(SIZE) 가변길이 문자저장 최소 1BYTE, 최대 4000BYTE NVARCHAR(SIZE) 국가별 국가 집합에 따른 문자 OR 바이트의 가변길이 문자 최소 1BYTE, 최대 4000BYTE NUMBER(P,S) 가변길이 숫자 저장 방식, P(전체자리수) S(소수점자리수) DATE 날짜 및 시간 ROWID 테이블 내 행의 고유 주소를 가지는 64비트 문자 BL..

SQL DML(데이터 조작어) [내부링크]

SQL Type 명령문 Data Manipulation Language 데이터 조작어 INSERT UPDATE DELETE MERGE Transaction Control Language 트랜젝션 제어어 COMMIT ROLLBACK SAVEPOINT 1) INSERT 컬럼명을 지정 하는 경우)) INSERT INTO 테이블명(컬럼명,컬럼명2) #컬럼과 값의 개수, 데이터 타입이 동일해야함 VALUES (값,값2) 지정되지 않은 컬럼의 값은 NULL처리됨 (NOT NULL조건이 없는 전제아래) 예시) INSERT INTO TABLE(A,B) VALUES(1,2)이면 TABLE의 C컬럼은 NULL처리가 되는 것 컬럼명을 지정 하지 않는 경우)) INSERT INTO 테이블명 #테이블에 컬럼 값이 2개 일때 V..

SQL Subquery 서브쿼리 사용하기 [내부링크]

[조인과 서브쿼리의 차이점 및 특징] Join Subquery 원하는 data가 여러 테이블에 분산되어 있을 때 원하는 data가 한번의 select만으로는 불가능할 때 여러번의 select문을 사용해야 할 때 컬럼을 사용할 수 있는 위치면 모두 사용가능 (select-from-where-group by-having-order by, insert문,delete,update문 등) 괄호가 반드시 들어감 (select~~~) Subquery select문 실행의 결과는 단일행(레코드 1개) 혹은 복수행 (레코드 여러개) 2가지로 분류됨 단일행 : 비교연산자 사용 (>, 13000 ); 주의) 결과값이 복수행이 반환되는데 비교 연산자를 사용하면 에러 발생하므로 반환 값에 주의 할 것! 복수행: in/any/a..

[Oracle] Join (Inner, Outer, ANSI Join) [내부링크]

JOIN의 목적 : 찾는 데이터가 여러 테이블에 분산되어 있기 때문임 1 ) Oracle 조인 > JOIN조건과 검색조건이 WHERE절에 명시됨 1.1 Inner join : 반드시 일치하는 data를 반환함 (교집합) Equi Join : 동등 연산자를 이용한 조인 (FK/PK를 주로 사용함) SELECT table1.column, table2.column FROM table1, table 2 WHERE table1.column = table2.column; *Oracle에서는 공통컬럼을 지칭할 때 어떤 Table에서 나왔는지 지칭하지 않으면 "column ambiguously defined" 에러 발생! join테이블에 둘 다 있는 컬럼 명이라면 컴퓨터에서 어떤 컬럼을 말하는거지? 헷갈리게 되는 것 ..

Leet code #1 Two Sum > 수식의 역발상과 enumerate사용 [내부링크]

문제. nums라는 array가 주어졌을 때, target 숫자의 합이 나오는 각 숫자의 순번(=인덱스)가 담긴 array를 반환하라 (단, 각 input에는 하나의 조합만 존재한다 -> 여러 조합이 가능한 경우 없음) Input: nums = [2,7,11,15], target = 9 Output: [0,1] Explanation: Because nums[0] + nums[1] == 9, we return [0, 1]. 처음 접근 > nums의 변수를 앞에서부터 하나씩 더해보면서 target을 충족하는 숫자의 index를 반환하면 되지 않을까? class Solution: def twoSum(self, nums: List[int], target: int) -> List[int]: answer = [] ..

2진법, 8진법, 16진법, 10진법 파이썬 변환 총정리 [내부링크]

코딩 문제 풀때마다 이 문제들은 알면 쉬운데 모르면 복잡해져서 틀리곤 하는데요 ㅜㅠ 오늘 정리해서 안 까먹도록 해보겠습니다 1. 내장함수로 10진수를 2/8/16진수로 변환하기 => 문자열 반환 변환 대상 진수 함수명 2진수 bin() 8진수 oct() 16진수 hex() 다른 진수에서 10진수로 바꿀 때 str() 2. Format으로 10진수 변환하기 => 문자열 반환 변환 대상 진수 함수명 2진수 format(10진수,'b') 8진수 format(10진수,'o') 16진수 format(10진수,'x') **주의점은 여기서 '#b', '#o','#x'처럼 앞에 #을 붙이면 반환값 앞에 아래와 같은 문자열이 붙는데요 일반적으로 1010이 나온다면 이진법인지 그냥 1010을 말하는지 헷갈리겠죠? 그래서 ..

Git/ SQL / Pandas Cheatsheet 요약본 공유 [내부링크]

안녕하세요, 오늘은 프로그래밍 혹은 벼락치기를 할 때 유용하게 사용할 수 있는 Cheat sheet를 공유드리려 합니다 유용하게 사용해서 도움이 될 수 있길 바랍니다 :) Git Cheatsheet https://doabledanny.gumroad.com/l/git-commands-cheat-sheet-pdf Git Commands Cheat Sheet PDF I was tired of looking up the same common Git commands - so I made this Git commands cheat sheet PDF. I thought others would find it useful too, so I made it available here on Gumroad.It contains..

BFS/DFS 탐색 개념 정리 [내부링크]

코딩테스트를 풀다보면 꼭 만나면 BFS와 DFS를 정리해보면서 기본을 다져보려 해요! 더보기 자료 참고 웹사이트 출처: https://www.geeksforgeeks.org/difference-between-bfs-and-dfs/ https://www.tutorialspoint.com/difference-between-bfs-and-dfs#:~:text=BFS%2C%20stands%20for%20Breadth%20First,to%20find%20the%20shortest%20path. BFS (Breadth First Search, 넓이 우선 탐색) - Level order 최단거리 검색을 위해 Queue 사용 -> First in Frist Out (FIFO) 개념 사용 전체 노드를 같은 레벨에서 돌며..

Leet code #94 Binary Tree Inorder Traverse (DFS, BFS) [내부링크]

문제. 다음과 같은 Binary Tree가 주어졌을 때, 노드 값들의 inorder traversal 를 반환하는 코드를 짜라 # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right = right Discussion 섹션의 Andvary님의 그림을 보고 좀 이해가 갔는데요. preorder/inorder/postorder/bfs이던 이런 Binary tree와 관련된 노드를 순회하는 문제에서는 어떤 순서대로 돌아가는지 구간을 나누는게 포인트였습니다 예를 들어, 아래 그림에서 1,2,3,4,5가 가는 방향을 보면 preorder은 노드 > 왼쪽 다 돌..

Python Class 개념 한번에 이해하기 (객체,인스턴스,어트리뷰트) [내부링크]

오늘은 파이썬 공식 홈페이지 자료를 기반으로 공부해도 해도 헷갈리는 개념인 파이썬의 클래스를 , 정리해보려 해요! 클래스란? 특정 값을 가진 데이터 혹은 함수 기능을 묶어서 프로그래밍에 사용할 수 있는 종합패키지라고 보시면 되는데요 파이썬 공식문서 상의 내용을 그림으로 구현해봤는데요 클래스 내부에는 데이터나 기능을 구현하는 빨간박스 내부 -> 이름 공간이 있는데 그 내부에 있는 변수나 함수 재료들이 객체인 것이죠! 예를 들어, 큰 패키지 내부에 면도기와 면도 크림이 있다면 그 내용물이 객체라고 볼 수 있는데요 이 클래스의 기능은 크게 2가지가 있다고 합니다. 클래스를 사용하기 위한 1) 인스턴스 만들기 2) 클래스 내부 객체를 활용하기 위한 어트리뷰트 참조라고 합니다. 첫 번째 인스턴스 만들기의 경우, ..

[Oracle] SQL 주민등록번호로 나이 계산하기 [내부링크]

처음 이 문제를 접했을 때, 현재 연도 - 출생연도의 포맷을 생각했지만 어떻게 표현해야 할지 약간 헤맸었다. 스스로 푼 방법과 다른 웹사이트를 참고해서 크게 3가지의 해결책을 찾았다. JUMIN : 주민등록번호 컬럼 주민번호의 구성을 생각해보면 총 13자리가 앞 6자리 + 뒤 7자리로 구성되어 있다 출생연도 뒷자리(2자리) + 출생월(2자리) + 출생일(2자리) + '-' + '성별을 구분하는 숫자' (1자리)+ (나머지 6자리) 1. 현재 연도 - 문자열이나 컬럼을 합쳐주는 '||' 를 이용해 '19' + 출생연도 뒷자리 붙이기 TO_NUMBER(TO_CHAR(SYSDATE,'YYYY')) - TO_NUMBER("19" || SUBSTR(JUMIN,1,2)) 2. 현재 연도 - 숫자1900을 숫자 변환..

[Oracle] SQL 그룹 함수 (Group By, Having) [내부링크]

Group by + 컬럼 ','를 이용한 다중 그룹핑이 가능함 (Group by 연령, 성별, 학교 등) 주의할 점은 SELECT 절에 일반 컬럼을 쓰려면 Group by 를 통해 그룹핑이 필요함 예시) SELECT ID, MAX(BONUS) FROM INFO --> MAX(BONUS)는 1개인데 SELECT ID는 많으므로 에러 발생 **주의할점 GROUP BY는 ORDER BY 와 달리, 별칭 혹은 순서 기반 넘버링으로 지칭 할 수 없고 표현식을 통해 지칭해야함 표현식이란, SELECT문에서 사용한 컬럼의 표현식을 의미함 GROUP BY 1 (X) GROUP BY ID (X) GROUP BY STUDENT_ID (O) Having + 조건 그룹핑 된 데이터 중에서 조건을 제시하는 것 (where의 조..

[Oracle] SQL (DECODE, CASE 함수) [내부링크]

조건함수 (DECODE, CASE) DECODE : 조건이 반드시 일치하는 경우에 사용되는 함수 (오라클 전용) DECODE(컬럼, 비교값1, 결과값1, 비교값2, 결과값2,... 비교값N, 결과값N, 기본 결과값) ==> 컬림이 비교값N과 일치하면 결과값N을 반환하고, 모두 일치하지 않으면 기본적으로 마지막의 결과값을 반환해라 SELECT last_name,salary, DECODE(salary,2000, salary*0.3, 1000, salary*0.2, salary) FROM employees; CASE : 조건이 꼭 일치 안해도 범위/비교가 가능한 경우에 사용 (오라클 아니어도 사용 가능) 1) 동등의 경우 CASE 컬럼 WHEN 비교값1 THEN 결과값1 WHEN 비교값1 THEN 결과값1 W..

[Oracle] SQL BASICS (Phrase, 날짜, 변환 함수) [내부링크]

1) Select + column - From + table as 별칭 (Oracle) : 기본적으로 전체 레코드를 조사함 중복된 데이터를 한번만 보겠다 --> distinct 활용 2) Select + column - From + table - Where (행 선택 조건식) : 비교연산자(=,,!=,,^=), 범위 (between A and B), 동등연산자 (in + 값) like + wild연산자, escape sth, And /or / not, is null **SQL에서는 LIKE %로 인해서 %가 나머지가 아니라, WILD카드로 인식됨. 따라서 나머지는 MOD함수를 이용할 것 example. WHERE loc like '%@%%' ESCAPE '@' 예시 출처: 그루비 강좌 3) (정렬) Sl..

빅데이터 분석기사 응시환경체험 작업형 1번 예제 [내부링크]

Q. mtcars 데이터셋의 qsec컬럼을 최소최대 척도로 변환 후 0.5보다 큰 값을 가지는 레코드의 개수를 구하시오. 인터넷의 풀이를 보니 풀이방법은 크게 3가지인 것 같다. 1) MinMaxScaler의 개념을 이용해서 (X- X.min())/(X.max()-X.min()) 으로 qsec 컬럼을 변환하는 방법 2) MinMaxScaler을 전체 데이터에서 수치형 데이터가 아닌 항목을 [:,1:] 로 슬라이싱을 통해 제외한 뒤, data 전체에 스케일링을 적용하는 방법 3) 마지막은 MinMaxScaler을 특정 qsec열에만 별도로 적용하는 것이다. --> 3번째 방법을 계속 시도했으나, 에러가 나서 애를 먹다가 방법을 찾았다 제일 애를 먹었던 부분은 a['qsec'] = mms.fit_transf..

Select_dtypes, mutual_info_classif [내부링크]

특정 data type을 가진 열을 골라내고 싶을 때: data.select_dtypes(include='',exclude='') train.select_dtypes(include=['float64']) DataFrame.select_dtypes(include=None, exclude=None) 의 구조에서 include = ['float64'] include = ['int64'] -> 숫자형은 [ ] 를 이용해서 표현 include = np.number (or 'number') include = np.datetime64 (or 'datetime') include = 'category' include = 'bool' -> 숫자, 날짜, bool, category등 특정 type을 표현할 때는 ' ' 혹은..

마라톤 완주 못한 선수 찾기 코테 _ Counter, List Subtraction [내부링크]

Q. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요. https://programmers.co.kr/learn/courses/30/lessons/42576?language=python3 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수 programmers.co.kr 구현 필요한 기능 1) List와 List간의 교집합 파악 필요 -> 단,중복값을 별개의..

소수만들기 코테 Error _ for문 끊기의 이해, itertools [내부링크]

https://programmers.co.kr/learn/challenges Q. 주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 소수가 되는 경우의 개수를 return 하도록 solution 함수를 완성해주세요. 코딩테스트 연습 기초부터 차근차근, 직접 코드를 작성해 보세요. programmers.co.kr 구현 필요한 기능 1) 숫자 3개를 조합하는 함수 2) 선별된 3개의 함수 합을 소수로 판별하는 함수 기존의 에러코드 def solution(nums): answer = 0 check = [] l = [] is_prime =True for a in..

An intuitive introduction of Probability_Prof.Karl Schmedders #Week4,5 [내부링크]

Discrete Random Variables " A random variable assigns a single number a single numerical value to every basic outcome" Probability Distribution --> P(X=x) Notation Cumulative Distribution -> P(x 편차 제곱의 평균 We must see mean and variance together! Binomial Distribution 성공과 실패 같은 2가지 결과 밖에 없는 분포 E(B) = np Var(B) = np(1-p) Continuous Random Variables Probability Density Function (PDF) Normal Distribu..

Algebra and Differential Calculus for Data Science _ University of Colorado Boulder #Week2,3 [내부링크]

Proof by Induction (예제를 통한 증명) Limits at infinity Continuity of a Function Derivative (미분) (e^x)' = e^x Derivative a Constant Constant는 y=2처럼 constant한 값을 의미함 --> 미분 시 0 Product Rule (f*g)' = f'g+fg' Quotient Rule (f/g)' =(f'g-fg')/g^2 Chain Rule (f(x))^k = {k(f(x))^(k-1)} * f'(x) Finding Concavity with the second Derivative(f''(x)) concvity 즉, 위로 오목한지 밑으로 오목한지 알 수 있음

An intuitive introduction of Probability_Prof.Karl Schmedders #Week3 [내부링크]

Birthday Problem How many people have to be present so that the answer to Q1 exceeds 50%? https://en.m.wikipedia.org/wiki/Birthday_problem Complement Rule P(A) = 1- P(A여집합) The Monty Hall Problem -> Always change the door to yield better chances of winning the goat Structuring Risk (Applications) 대기업의 신용등급 default risk X 10% risk losing money Y 10% rish losing money Implact of Dependece : Financ..

An intuitive introduction of Probability_Prof.Karl Schmedders #Week2 [내부링크]

Conditional Probability P(A|B) : the conditional probability of A given B Multiplication Rules P(A교집합B) = P(B) * P(A|B) Independence P(A) = P(A|B) and P(B) = P(B|A) P(A교집합B) = P(A) * P(B) Probability Tables To structure the Probability Marginal Probability(주변확률) Joint Probability(결합확률) Bayes Rule We "flipped" conditional probability P(A|B) * P(B) = P(B|A) * P(A) 즉, P(A|B) = (P(B|A)*P(A))/P(B)

Algebra and Differential Calculus for Data Science _ University of Colorado Boulder #Week1 [내부링크]

미국 교수님이어서 그런지 훨씬 영어를 알아듣기 쉽고 필서를 하는 방식이 상당히 특이한데 재밌다 ㅎㅎ Week1은 사실 수능을 쳤다면 누구나 쉽게 할 수 있는 정도이지만, 퀴즈가 많다. 그리고 기존 한국어로 배운 내용이 영어로 이렇게 표현될 수 있구나를 이해할 수 있게 해준다. What is Function (함수)? : input에서 output이 나오는 Box Domain and Range Domain != 0, Range y != 0 Piecewise Functions x가 0보다 클때 x+1, x가 0보다 작을 때 x^2라면 piecewise 구간이 분리된 함수를 의미 *x cube = x^3 세제곱이라는 의미 Exponent Rules는 (x^a) *(x^b) = X^(a+b) Logarithms..

고려대 컴퓨터정보통신대학원 인공지능융합학과 지원/면접 후기 [내부링크]

안녕하세요, 오늘은 제목과 같이 고려대 특수대학원 인공지능 융합학과 면접 후기를 남겨보려해요! 제가 면접 준비할 때 참고할 수 있는 정보가 없었기 때문에 앞으로 지원하는 분들께 도움이 되었으면 하네요 :) 서류전형 서류는 결론적으로 말하자면 탈락자가 없는 형식이었어요 그래서 따로 서류 결과 발표를 하지 않고 공지사항에서 면접 조를 확인하고 면접을 보러 가면 되는 형식이었습니다. 그렇다고 서류를 대충 써도 되는건 아닙니다! 면접 시간이 짧기 때문에 자소서에 자신의 이력, 경험, 지원동기 등을 잘 기술하는게 오히려 중요한 것 같아요 면접전형 배정받은 조에 맞춰서 면접대기실에 가면 대형강의실에서 신분증 + 수험표 확인을 하고 다들 쪼르르 앉아있는데요 면접 대기실내에서는 폰 사용이 불가하기 때문에 물이나 자소서..

Kaggle 데이터셋 Google Colab에서 이용하기! [내부링크]

안녕하세요, 오늘은 Kaggle의 데이터 셋을 Google Colab에서 연결하는 법을 알려드리려 합니다! Kaggle에는 정말 많은 데이터 셋이 있지만, 데이터셋 용량이 큰만큼 개인 컴퓨터에서 일일이 다운로드 받고 Jupyter Notebook으로 돌리기란 용량낭비도 많고 시간도 많이 걸리기 때문에 여러 데이터 대학원에서는 Google Colab로 작업을 하더라구요. 사실 Kaggle Notebook으로 버텨보겠다 생각했지만, 얼마전 이러 에러가 뜨더군요. 이제 Kaggle에서 코드를 돌리기 한계가 있겠다 싶어서, Google Colab에서 Kaggle 데이터를 다운로드 받기로 했습니다. 저는 아래 사이트를 참고 했는데, 영어가 어려우신 분들을 위해 간단히 요약하여 전달드리겠습니다. https://me..

ADSP 후기/공부법 [내부링크]

SQLD 이후 2021년 2번째 도전한 자격증 ADSP! 사실 사설자격증이기 때문에 자격증 제시의 목적보다는 데이터분석(AI,ML등) 기본 개념을 공부하려는 목적이 컸다. SQLD와는 전혀 다른 내용이었기 때문에, 처음에 당황스러웠지만 전반적으로 내용을 딥하게 보기보다는 기본 개념을 흝는 느낌이 강했기 때문에 초보자라도 도전하기 충분히 괜찮은 자격증 같다. 1.공부법 책은 위에 보이는 데이터 에듀 책을 썼다. 설명이 상세히 잘되어 있다는 후기를 보고 샀는데 빅분기도 그렇고 ADSP책 역시 개념의 중요도에 따라 요약제시하기 보다는, 사전처럼 설명을 나열해놓은 느낌이 강했다. 1회독 : 설명을 책 읽듯이 읽으면서 문제풀기 2-4회독: 중요한 개념 위주로 형광펜 그으면서 다시 보기 5회독: 기출을 풀고 미흡한..

An intuitive introduction of Probability_Prof.Karl Schmedders #Week1 [내부링크]

교수님이 매우 열정적이고 확률을 사랑하는 모습이 보인다. 3 Definition of Probability (Exact) Objective - 5장 중 1장의 가능성 -> 20% Empirical - 과거의 결과값 기준 Subjective - 직관, 경험을 기준 Random Experiment Basic Outcome이 sample space(s)의 subset 이 Event(A,B,C...) A event: 0

빅데이터분석기사 3회 후기 _ #2 실기 [내부링크]

바로 어제 치고 온 빅분기 3회 실기 후기를 공유하려 한다. 필기 이후 준비시간이 촉박해서 4회차에 재도전 해야겠지만..ㅜㅠㅜㅠㅜ우선 빅분기 실기 준비는 시중에 나온 자료도, 기출도 없었기 때문에 활용가능한 자료를 위주로 공부했다. 1. 데이터자격시험 홈페이지의 '응시환경 체험' https://www.dataq.or.kr/www/board/view.do?bbsKey=eyJiYnNhdHRyU2VxIjoxLCJiYnNTZXEiOjUxNjM0NX0=&boardKind=notice 빅분기 홈페이지에서는 응시환경체험에 예시문제를 유형별로 1개씩 게재하는데, 시험환경과 유형을 익히기에 좋았다. 다만, 한 문제씩 제공해줘서 아쉽긴 하지만 시험전에 3번 이상은 풀어보는게 좋을 것 같다. 작업형 마지막 문제의 형식은 예..

빅데이터분석기사 3회 후기 _ #1 필기 [내부링크]

데이터 공부를 마음먹으면서 하루 평균 10시간 이상, 주말근무도 자주하는 컨설턴트의 특성상 동기부여가 되면서 이론도 단기간에 흝어볼 수 있는 최적의 방법은 자격증이었다. 이후 SQLD, ADSP 시험 합격 후기를 공유할 예정이지만 불과 어제 치고 온 따끈따끈한 빅분기 필기/실기 후기를 공유하려 한다. 1. 빅데이터분석기사 필기 필기, 실기 모두 시행한지 얼마 되지 않았기 때문에 문제집간의 차별성이 없다는 말이 많았다. 그래서 사실 문제집 검색시에 바로 처음 보인 데이터 에듀책을 샀다. 분량이 500페이지가 넘기 때문에 모든 개념의 내용이 세세하게 나와있고 각 단원별 문제, 예상문제가 제시되어 있기 때문에 개념이 부족한 사람들에게 딱 좋은 책인 것 같다. 필자는 ADSP를 치고 빅분기를 쳤는데 내용이 많이..

파이썬을 만나다! [내부링크]

데이터 공부를 시작하자! 마음을 먹고 가장 먼저 시작한건 파이썬이었다. 주위에 물어봐도 일단 파이썬부터 공부하라는 공통적인 조언을 듣고 주저없이 시작했다. 사실 아직 배우는 중이고 부족함이 많지만 어떻게 공부했는지, 공부해오고 있는지 파이썬 공부법을 소개한다. 1. 유투브 K-MOOC 가천대학교 최성철 교수님의 강의 https://youtu.be/kBPKUSujrws - 무작정 갈피를 못 잡고 있을 때 무턱대고 유투브를 듣기 시작했다. 알던 모르던 무작정 받아적으면서 인강 70개를 약 3주만에 끝냈다. 노트에 받아 적은 내용들이 계속 공부해나가면서 이해가 조금씩 되기 때문에 필자처럼 잡을 지푸라기라도 필요하다면 꼭 추천한다. 돈도 없고 시간도 없는 직장인에게 유투브라는 매체는 마치 빛과 같았다. 2. 점..