반응형

프로그래밍/Python 37

[디자인 패턴] 싱글톤

안녕하세요 Dibrary입니다. 디자인패턴이 몇 개 있는데, 그 중에 싱글톤을 정리해두고자 합니다. 싱글톤은 아래와 같이 설명할 수 있습니다. 여러 사람이 접근 하더라도 해당 객체는 반드시 같은 객체여야 한다. 이러한 경우에 싱글톤 패턴을 적용할 수 있다. 여러 사람이 접근하더라도 해당 객체는 반드시 같아야 한다는게 무슨 의미일까요? 즉, '하나의 객체(인스턴스)'만 생성이 되고 이걸 여러 사람이 '돌려쓴다'는 개념입니다. 대표적으로 DB접속할 때 쓸 수 있습니다. Jupyter를 이용해서 코드를 확인해보겠습니다. Singleton이라는 클래스에 __new__ 메서드와, __init__메서드가 있습니다. __init__은 많이들 생성자로 알고 계실텐데요, 위 코드를 보면 __new__가 먼저 실행되었음을..

파이썬으로 폴더 생성, 삭제, 복사 해보기

안녕하세요 Dibrary입니다. 제가 데이터분석을 공부하다가, 데이터를 '목적에 맞는 폴더'에 분류하는 코드들을 보면 전부 파이썬 os 모듈을 사용하더라구요. 그래서 이참에 몇 가지 자주 쓰는 기능만 정리해보고자 합니다. 제 실행 환경은 Jupyter입니다. 먼저 import os를 해야 합니다. 설치는 자동으로 되어 있을 겁니다. 1. 폴더 내부에 있는 것들 확인하기 폴더 내부에 있는 것을 확인하려면 os.listdir 을 사용하면 됩니다. 제가 임의로 folder_test 폴더를 만들고 그 안에서 os.listdir 을 사용해 보았습니다. 하나는 되고, 하나는 안 되죠? 점 2개를 찍어야 상대경로로 인식한다는 것을 볼 수 있습니다. 당연한 얘기지만, 그냥 지금 있는 폴더만을 문자열로 넣어도 컴퓨터는 ..

파이썬으로 미분 해 보기

안녕하세요 Dibrary입니다. 물리 문제를 풀다보면 서스럼없이 자주 등장하는게 미분방정식이죠. 이 미분방정식을 손으로 계산 해도 되지만, 그저 값을 확인하고자 한다면 코딩으로 구하면 굉장히 편리합니다. 물론, 코딩은 수치적 기법으로 그나마 '근사치'를 내줄 뿐이긴 하지만요. 임의 함수에 대해 미분 결과와, 해당 값에 미분 값을 구해보겠습니다. 임의로 위의 함수를 만들었고, 미분결과도 같이 기록해 놓았습니다. 파이썬으로 미분을 할 때는 sympy 모듈의 Derivative를 사용하면 됩니다. 먼저 symbols로 "x"를 설정했습니다. 이는 Derivative에 같이 전달하며, 미분 대상이 x라는 의미입니다. 즉, x에 대한 기울기(도함수)를 구하겠다는 것이죠. Derivative에는 함수'식'과 sym..

파이썬을 사용한 회귀(Regression) 모델

안녕하세요 Dibrary입니다. 이번에는 파이썬을 이용해서 회귀 모형을 확인해 보겠습니다. 회귀는 통계학에서 자주 나오는데, 주어진 데이터를 토대로 선형 모델을 만들어서 해당 데이터 범주 이외의 값을 예측하는 것입니다. 실행 환경은 역시나 Jupyter입니다. 우선 회귀란 무엇인가 간단한 이미지를 보겠습니다. 점들과 직선 하나만 있네요. 저 직선은 점들의 '기준값'의 집합이라고 보시면 됩니다. 여기서 기준값은 평균으로 잡을 수도 있고, 분산으로도 잡을 수도 있고 보고자 하는 통계치를 기준으로 합니다. 즉, 해당 데이터가 저런 직선에 통계치가 근접하니 이 범주외의 값도 이 직선에 근접할 것이다~ 고 예측하는 것이죠. 그럼 먼저 모듈에 있는 데이터를 써보겠습니다. 60개를 가져왔고, print로 X와 y를 ..

파이썬을 사용한 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가 색상이 다른 특성..

파이썬으로 주택 매수 지수 확인해보기

안녕하세요 Dibrary입니다. 최근 2년간 부동산 난리가 끝나고 서서히 하락세로 돌연 변해가는 것 같습니다. 뭐든 흥망성쇠가 따르는 법인데, 마침 이런 기사가 있었습니다. 매물 늘어나는데..꿈쩍 않는 매수 | Daum 부동산 [아시아경제 황서율 기자] 윤석열 정부 출범 이후 매물은 증가세를 보이고 있지만 매수자들은 좀처럼 움직이지 않고 있다. 집값 고점 인식과 매수자의 관망세가 이어지면서 일부 지역에선 매매 realestate.daum.net 과연 매수는 꿈쩍 않는지 살펴보고자 합니다. 물론, 한명한명 물어보는게 제일 정확한데, 그럴 순 없으니까 지표를 제공해주는 사이트를 통해 확인해 보겠습니다. 저는 통계청의 자료를 사용하기로 했습니다. KOSIS 국가통계포털 내가 본 통계표 최근 본 통계표 25개가..

파이썬 데이터 분석 라이브러리 - 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개의 값은 해당 데이터를 뽑아낸 대상입니다. 즉, 우리는 데이터를 통..

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

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

파이썬 데이터 분석 준비! - Numpy배열 다루기 - 3(배열 응용하기)

안녕하세요 Dibrary입니다. 이번에는 그동안 배운 Numpy배열을 응용해 볼 것입니다. Numpy를 사용할 때 중요한 점은, 배열 단위로 연산을 한다는 것 이게 중요합니다. Numpy배열로 만들어놓고, 기존 list 처럼 계산 하면 Numpy의 장점이 드러나지 않습니다. 먼저 임의의 Numpy배열을 만들고, Numpy배열에 곧바로 비교 연산자를 사용하니 True, False로 결과가 나오죠? True인 것만 데이터가 있다는 의미 입니다. 그러면, 이렇게 True / False로 나오는 결과를 활용할 수 있습니다. 예를 들어, 각 회사마다 매출액이 Numpy배열로 만들어져 있다고 할 때, 특정 회사의 매출액만 볼 수 있는 것입니다. 바로 이렇게요. 지금 names == 'samsung' 문장은 위에서 ..

반응형