반응형

파이썬 68

[혼공머신러닝] 3장(최근접 이웃회귀, 선형회귀) 정리

안녕하세요 Dibrary입니다. 이번에는 혼자공부하는 머신러닝 책의 3 챕터, '회귀'에 대해 정리해보겠습니다. 회귀는 간단하게 클래스 중 하나로 분류하는 것이 아니라, 임의 숫자를 예측하는 것입니다. 두 변수 사이의 상관관계를 분석하는 방법이 회귀입니다. 1. k-최근접 이웃 회귀 예측하려는 샘플에 가까운 샘플 k개를 선택하는데, 샘플의 타겟은 '수치값'입니다. 간단히 예를 들자면, 이 수치값의 평균을 구하고 이를 예측 값으로 사용하는 것이 일종의 회귀 방법입니다. 2. 선형회귀 샘플 데이터들의 특성을 가장 잘 나타내는 직선을 구하고, 해당 선을 기준으로 예측값을 구하는 방법입니다. 과대적합 = 모델이 훈련에 너무 익숙해져 있는 상황입니다. 따라서, 실제 데이터가 주어지더라도 훈련과 다르면 틀리다고 판..

파이썬으로 임의 데이터 생성, 데이터파일 만들기

안녕하세요 Dibrary입니다. 데이터 분석이나, 데이터 엔지니어링을 할 때 생각보다 많은 양의 데이터가 필요한데 구하기가 마땅치 않을 때가 많죠. 이럴 때 파이썬을 이용해서 임의 데이터 파일을 만들어서 '동작여부, 기능 상태 확인'등을 진행해볼 수는 있습니다. 데이터를 임의로 생성할 때 필요한 것은 faker 모듈입니다. tmp라는 Faker 객체를 만든 후에, name을 불러보니 제가 입력한 적도 없는 데이터가 마치 '이름'처럼 나왔죠? 그럼 이 Faker 객체로 어떤 것들을 만들 수 있는지는 dir(tmp) 를 해 보시면 알 수 있습니다. 아주 많은 것을 만들 수 있죠. 그럼, 이제 임의로 제가 csv 파일 꼴의 데이터를 생성해 보겠습니다. 날짜, 시간, 이름, 지역 이렇게 구성된 데이터를 한 번 ..

파이썬에서는 연결리스트를 배울 필요가 없는걸까?

안녕하세요 Dibrary입니다. 파이썬으로 설명된 자료구조 책을 보면 여느 다른 책들과 같이 '리스트, 트리, 정렬, 탐색, 그래프' 등이 나와있습니다. 근데 파이썬을 자주 써 본 사람이라면 이런 의문이 들죠. 파이썬에서는 어차피 리스트 자료형이 있는데.... 물론, 저도 그런 생각을 한 적이 있습니다. (그리고 그 리스트 자료형은 여기서 말한 연결리스트도 아니죠;;) 그런 혼란을 가지고 있지만 불편함은 없어서 그냥 유야무야 넘어가다가, 자료형 리스트가 아닌 자료구조 '단순 연결리스트, 이중 연결리스트, 원형 연결리스트' 등을 배워야 하는 이유를 최근에 알고리즘을 풀다가 깨달았습니다. 1. 불필요한 공간 낭비를 위해서 사용할 수 있다. 애초에 리스트를 배열 대신에 쓰는 이유는 공간 사용의 효율을 높이기 ..

파이썬으로 JSON 파일에서 필요한 것만 뽑아내기

안녕하세요 Dibrary입니다. 이번엔 JSON파일을 파이썬으로 파싱해보겠습니다. JSON은 ElasticSearch를 사용하면 정말정말 자주 보게 될 텐데요, 처음 접한 경우에는 좀 어색할 수 있습니다. 먼저 임시 JSON 파일을 만들어보겠습니다. 대충 코드가 비슷하게 들어가 있죠? 이 파일을 저는 Jupyter를 이용해서 확인해 보겠습니다. 항상 import json을 해 주셔야 합니다. 그리고 가장 위에 있는 'users'에 속한 내용들을 가져와봤습니다. 위에 있는 내용을 통으로 다 가져온걸 볼 수 있습니다. 참고로 해당 데이터는 'list' 타입입니다. 그래서 하나씩 확인 해 보니 인덱싱이 가능한걸 볼 수 있습니다. 좀 더 편하게 for문으로 확인해 보면 아래와 같습니다. 자 그럼 해당 데이터 중..

[Trie] 문자열 검색이 용이하게 만든 트리

안녕하세요 Dibrary입니다. Trie 자료구조는 트리 형태의 자료구조인데, '문자열' 검색을 용이하게 하기 위한 자료구조 입니다. 먼저 구글에 Trie python를 검색해보면 여러 이미지들이 나옵니다. 그 중에 한 개를 살펴 보죠. 이게 뭘 의미하는거냐면, to와 tea와 ten이라는 단어는 똑같이 t로 시작하죠? 그래서 t라는 노드 밑에 위치합니다. to에서 o는 tea와 ten에 없으므로 t 노드 밑에 o가 있음으로써, 해당 경로로 검색을 하게 되면 to가 나오는 것이죠. tea와 ten은 t도 똑같고, e도 똑같습니다. 따라서 t노드 밑에 e노드가 있고, e노드 밑에 a와 n으로 나뉘는 것이죠. 이런식으로 문자열을 저장해두고, 찾을 때는 금방 찾게 만든 자료구조가 Trie 입니다. 파이썬으로 ..

자료구조 2022.07.06

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

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

파이썬으로 미분 해 보기

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

[BOJ][9095번] - 1,2,3 더하기

안녕하세요 Dibrary입니다. 이번에는 제가 개인적으로 어려워해서 푸는데 시간이 꽤나 걸린 동적프로그래밍 문제를 풀어보겠습니다. 지금도 까딱하면 동적프로그래밍 '감'을 잃을거 같아서 조심스럽네요... 문제는 아래와 같습니다. 처음에 이 문제를 보자마자 어디서 '생각'이 멈췄냐면 1을 쓰는 것과 2를 쓰는 것의 '순간'을 어떻게 알지? 2 외에 3이 있다다는 것을 어떻게 알지? 이런 생각 때문에 문제를 못 풀었습니다... 그래서 그냥 하염없이 갯수를 세다가 문득 규칙성이 보이길래 좀 더 해봤습니다. 제가 이렇게 '규칙성을 찾아서 문제를 풀어야 한다'는 개념을 알게 된 문제는 아래 문제였습니다. 20500번: Ezreal 여눈부터 가네 ㅈㅈ 문제의 답을 $1\,000\,000\,007$로 나눈 나머지를 출..

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

반응형