반응형

파이썬 69

파이썬을 사용한 KNN(최근접 이웃) 구현해보기

안녕하세요 Dibrary입니다. 이번에는 KNN을 구현 해 보겠습니다. KNN은 약자이고 K-Nearest Neighbors 즉, 'K개의 근접 이웃'을 의미합니다. 모르는 대상이 있을 때, 그것의 근접에 있는 이웃을 통해 그것이 '어떤' 이웃과 비슷하다~ 는 판정을 컴퓨터가 하는 셈이죠. 저는 Jupyter를 켜고 하겠습니다. 우선 mglearn을 다운로드 하셔야 합니다. pip install mglearn을 하시면 자동으로 됩니다. 이 코드를 입력해서 본 결과는 mglearn에 make_forge라는 데이터의 시각화 입니다. 데이터는 discrete_scatter에 들어가서 표현이 된 것이고, X라는 데이터가 2개의 값을 가지고 있으므로, X[:,0] X[:,1] 로 나타냈고, y가 색상이 다른 특성..

스택과 데크(deque)

안녕하세요 Dibrary입니다. 이번에 소개할 자료구조는 스택 입니다. 연결 리스트보다 어찌보면 간단한? 자료구조입니다. (이해하기는 굉장히 쉬운데 실제 쓰임새는 연습하지 않고는 떠오르지 않는 괴랄한... ) 스택의 특징은 딱 하나 입니다 LIFO (LAST에 IN 한 데이터가 FIRST로 OUT 한다) 이거 한 개만 아셔도 스택 개념의 절반은 먹고 들어간다~ 이거죠. 스택은 반드시 LIFO만 유지되면 됩니다. 그럼 여기서 LAST에 IN한 다는 의미와 FIRST로 OUT한다는 의미가 무엇인가 코드로 살펴보겠습니다. (물론 파이썬으로요) 임의로 stack이라는 이름의 list를 만들어 보았습니다. 1, 2, 3을 순서대로 넣고 확인해 보니 순서대로 들어갔네요. pop을 하니까 맨 마지막에 넣은 3이 제일..

자료구조 2022.06.03

연결리스트 - 이중 연결 리스트

안녕하세요 Dibrary입니다. 앞에서 단일연결 리스트를 보셨다면, '역순으로도 확인할 수 있으면 좋겠다~' 싶은 생각이 드셨을 수 있는데, 이 기능도 같이 구현한 것이 이중연결 리스트 입니다. 2022.05.17 - [자료구조] - 연결리스트 - 단순 연결 리스트 이렇게 양방향 화살표인 셈이죠. 근데, 사실 '개념'은 이래도, 양방향으로는 각 Node별로 앞, 뒤가 나뉘어져 있습니다. 따라서, 아래와 같이 표현하는 게 좀 더 정확합니다. 그래도 앞에서 뒤로, 뒤에서 앞으로 올 수 있다는 사실은 변함이 없습니다. 이번에도 파이썬으로 코드 구현을 해보겠습니다. 먼저 노드만을 만들어 보고 기본 개념 확인을 해보겠습니다. A와 B와 C라는 노드를 만들고, A B C 이렇게 연결 했습니다. A부터 C까지 값을 ..

자료구조 2022.05.26

[알고리즘 첫걸음] 파이썬 문법부터 알고리즘으로 넘어가는 기본서

이 책은 카페에서 우연히 댓글을 남기고 당첨되어서 읽게 된 책이다. (감사합니다.) 제목을 잘 살펴보면 '알고리즘 첫걸음'이다. 즉, 기본적인 개념을 쌓을 수 있으리라 추측되는데 본문을 읽고 나니 왜 첫걸음인지 알게 되었다. 흔히 그런 말이 있다. '첫 단추를 잘 꿰어야 한다' 이 책은 파이썬 문법 기본을 공부한 후에 파이썬으로 알고리즘을 도전하기 전에 보면 가장 적합한 책이라고 생각된다. 바로 그 점에서 '첫걸음'이라는 제목이 적합한 것이다. 사실 알고리즘을 풀 때는 C++이 가장 널리 사용되는데 실제로 알고리즘풀이 사이트를 확인해 보면 파이썬이 굉장히 많이 쓰이는 것을 알 수 있다. 최근에 들어서 파이썬이 AI및 통계분석으로 각광을 받으며 사용자가 늘어난 것 뿐 아니라 알고리즘에도 파이썬이 적합한 언..

독서/서평 2022.05.20

연결리스트 - 단순 연결 리스트

안녕하세요 Dibrary입니다. 이번에 정리해볼 자료구조는 리스트 입니다. 일반적으로 리스트란 일련의 동일한 타입의 항목을 의미. 뭔 소리냐하믄, 비슷한 것을 줄줄이 소세지 마냥 엮어 놓은 것이라 보면 됩니다. 근데 우리는 이미 비슷한 자료구조를 알고 있죠? 배열. 배열과의 차이는 뭘까요? 배열은 데이터가 연속으로 위치해 있고, 리스트는 그럴수도 있고 아닐수도 있다는 것입니다. 리스트를 잘 보시면 군데군데 꼭 붙어있지 않더라도 연결을 해서 하나의 '배열 처럼' 만들었죠? 이렇게 떨어진 곳의 데이터를 하나의 '배열 처럼' 다루고자 하는 것이 리스트 자료구조 입니다. 보면 데이터 1개마다 1개의 화살표로 다음 데이터를 이어줬는데 한 방향입니다. 이렇게 만든 것이 단순연결리스트 이고,이 화살표가 양방향이라면 ..

자료구조 2022.05.17

파이썬 데이터 분석 라이브러리 - Pandas (Series편)

안녕하세요 Dibrary입니다. 파이썬으로 데이터 분석을 할 때 Numpy와 더불어 굉장히 많이 쓰는 라이브러리가 있습니다. 바로 Pandas죠. Pandas의 모든 기능을 알려면... 한 900페이지에 달하는 책을 달달 외우고 공부해야 하는데, 막상 데이터 분석을 간단히 수행하다 보면 쓰는 기능만 쓰는 것을 알 수 있습니다. 그래서 간단하게 라이브러리 사용하는 방법을 정리해 두겠습니다. 사용하려면 여느 라이브러리와 마찬가지로 pip install pandas 하는거 잊으시면 안되용~ Series 가장 먼저 다루기 쉬운 Pandas의 자료구조인 Series를 보겠습니다. 이름 그대로 1차원의 배열 꼴 자료구조입니다. 먼저 라이브러리를 pd라는 별칭으로 불러와서 Series를 만들었습니다. type을 확인..

[머신러닝] 붓꽃 데이터로 품종 분류해보기

안녕하세요 Dibrary입니다. 많이들 아시다시피 python은 데이터분석 및 머신러닝, 신경망 등에 많이 활용되는 언어입니다. 단순히 기능 구현만 하던 저도 조금이라도 알아는 둬야겠다 싶어서 파이썬으로 머신러닝을 해보는 코드를 기록해보고자 합니다. 먼저, 사용할 모듈은 sklearn 및 scipy입니다. 저는 Jupyter를 사용하겠습니다. 터미널을 열어서 pip install sklearn scpiy 를 먼저 입력해주시고 이하 코드를 따라해 보시면 됩니다. sklearn 모듈 안에 테스트로 붓꽃 데이터가 들어 있습니다. load_iris로 데이터를 가져오고, target_names를 넣어 보면 3개의 값이 나옵니다. 여기서 말하는 3개의 값은 해당 데이터를 뽑아낸 대상입니다. 즉, 우리는 데이터를 통..

[BOJ][10815번] - 숫자카드 (python)

안녕하세요 Dibrary 입니다. 이번에는 사전형을 써야만 풀리는 문제를 정리해보고자 합니다. 먼저 제가 몇 번을 틀린 방식은 아래와 같습니다. 문제에서 주어진 500000이라는 횟수의 비교를 너무 가벼이 생각했음. list가지고 해결이 안 되길래, set을 이용했음. 그럼에도 안 됨. 우선 500000이라는 횟수는 생각보다 간단하네~ 라고 착각했던게 큰 오판이었습니다. 차례대로 비교를 해 나가야 하는 것이므로, 500000*500000 의 경우의 수가 있죠... ... 그래서 리스트로 접근했던 아래 코드는 시작도 못해보고 시간초과에 걸렸습니다. sys.stdin.readline 을 이용해서 입력을 받았음에도 말이죠. 그래서 set으로 담으면 괜찮을까? 싶어서 set으로 시도를 해보았는데, 역시나 시간초..

[Fluent Python] 2장 - 데이터 구조체 정리

안녕하세요 Dibrary입니다. '전문가를 위한 파이썬' 2장 정리 내용 입니다. 컨테이너 시퀀스 = list, tuple, collections, deque 균일 시퀀스 = str, bytes, bytearray, memoryview, array.array 컨테이너 시퀀스는 객체의 참조를 담고 있습니다. 균일 시퀀스는 값을 직접 담고 있습니다. 값과 참조의 차이를 코드로 살펴보겠습니다. list를 예로 들면, alpha값이 변하니까 alpha를 가지고 있던 tmp의 값도 변하네요. (참조하고 있었기 때문이죠) 원래 튜플은 불변형인데, 이렇게 하면 변경이 됩니다. (즉, 이렇게 사용하면 안 됩니다.) 튜플도 컨테이너 시퀀스라서 참조를 담고 있기 때문에 변경이 되네요. 반면 str은 아래처럼 작성시 그저 ..

[Django 파이썬 웹 프로그래밍] 내가 아는 가장 쉬운 장고(Django)책

듣기로만 했던 장고. 기존 회사에서 개발을 할 때 필요한 무료 라이브러리 때문에 8개월을 들여서 배운 파이썬은 웹과는 거리가 멀었었다. 아무렴 그때당시는 웹을 JAVA로 하고, 필요한 기능만 파이썬으로 연동해서 사용했었기 때문이다. 그런데, 파이썬으로도 웹을 다루는 회사들이 많아졌음을 깨달았고, 시대에 뒤쳐지는 것이 아닐까 싶은 걱정 때문에 부랴부랴 서점에서 장고 책을 찾았다. 과연 프레임워크인 만큼 나에게 맞는 책을 찾는 게 쉽지 않았다. 그런 와중에 이 책이 보였다. (솔직히 표지 디자인은 음.... 별로다 ㅎ) 확실하게 말할 수 있는 것은 나에게는 정말 딱 맞는 기본서였다. 이 책의 구성은 전반적인 IT책과 비슷하다. 웹 개념설명 장고프레임워크의 구조 및 설명과 예시 미니 웹 프로그램 만들기 프로그..

독서/서평 2022.04.13
반응형