파이썬에는 networkx 라는 그래프를 만들고 그리는 모듈이 있습니다. 요즘 그래프 이론을 기반으로 인공지능을 만드는 작업이 진행중인 것 같습니다. 그러다 보니 networkx가 반드시 필요합니다. 사용방법은 튜토리얼에 아주 자세히 나와 있습니다. https://networkx.org/documentation/stable/reference/introduction.html 그런데 튜토리얼대로 그림을 그려보면 아래와 같은 오류가 뜹니다. 이것에 대한 아무 언급이 없어서 공유합니다. 파이썬의 내장된 모듈인 networkx는 한번도 건드려본 적이 없는 사람이라면 누구나 이런 오류에 빠지는데요. 혹시 튜토리얼이 제대로 설명하지 못한 건 아닌지 열심히 구글링을 하며 허송세월을 보내고는 해답을 못 찾곤 합니다. 한..
MySQL이나 오라클 제품으로 데이터 관리를 할 수 있는데 규모가 큰 데이터처리에 적합한 제품이라서 설치도 복잡하고 서버처리와 user 설정 때문에 가볍게 프로그램을 사용하기에는 무리가 있습니다. 파이썬 자동매매나 간단한 데이터 처리를 원하시는 분들은 가볍게 데이터 관리를 하고 싶기 때문에 위 제품은 적합하지 않습니다. 가볍게 sql을 쓰고 싶은 분들을 위해서 DB browser for sqlite를 소개합니다. DB browser for sqlite는 프로그램 이름대로 sqlite로 작성된 db, sqlite,db3, sqlite3 파일을 보기 위한 프로그램이고 간단한 sql 작업도 할 수 있습니다. 파이썬의 sqlite3이나 판다스로 db,sqlite 파일을 만든다면 DB browser for sql..
일차식으로 이루어진 선형회귀에 대한 내용입니다. 선형회귀는 간단한 상관관계에 대해 사용할 수 있습니다. 예를 들면, 키와 몸무게의 관계나 공부량과 성적의 관계와 같이 상관되는 특성이 단순한 경우입니다. 그래프로는 증가함수를 보여주거나 감소함수를 보여주는 경우를 의미합니다. 회귀는 과학실험을 통해 팩터를 찾고 공식을 만들어가던 것과 같이 주어진 데이터를 해석해 적당한 그래프 모양을 수학식으로써 표현해나가는 과정이라고 볼 수 있는데 그 중에서 선형 회귀는 일차식으로 이루어진 식으로 결정짓는 것을 말합니다. 이전 포스팅(회귀)는 일반화된 경우였고 기저를 정하는 것부터 시작했다면 선형회귀는 기저가 {1,x} 로만 이루어진 식으로 볼 수 있습니다. 변수(특성)의 개수가 여러개로 나타날 수 있는데 이건 스스로 판단..
MNIST를 이용한 다중분류기 구현 방법입니다. 다중분류기는 여러 개의 클래스로 구별하기 위해서 만드는데 SGD, 랜덤 포레스트 ,나이브 베이즈 같은 분류기로 직접 처리가 가능합니다. 다중 분류기를 사용해 직접 사용하기 전에 이진 분류기인 서포트 벡터 머신 분류기를 이용해 다중 클래스로 분류하는 방법을 소개할까 합니다. 원리를 설명하기에 좋고 전략을 세워가는 재미(?)를 아시게 되지 않을까 싶습니다. One-versus-the-rest(OvR) OvR은 숫자 하나 대 나머지를 비교하는 전략입니다. One-versus-all(OvA)라고도 합니다. 숫자별로 숫자 하나만 구별하는 이진 분류기를 만들어서 점수를 매깁니다. 그럼 10개의 점수가 나오는데 이중에서 가장 높은 점수가 나오는 것을 선택하는 방식입니다..
이전 포스팅에서 MNIST에서 이진 분류기를 만들어 보았는데 글이 길어지다 보니 검증에 대한 개념을 위한 포스팅을 따로 합니다. 이진 분류기를 만드는 과정과 검증방법은 이전 포스팅에서 확인해주시기 바랍니다. 2021.11.28 - [데이터 사이언스/머신러닝 딮러닝] - [분류문제] MNIST로 이진분류기 만들기 [분류문제] MNIST로 이진분류기 만들기 머신러닝의 가장 기초중의 기초 머신러닝의 'Hello World' MNIST입니다. 머신러닝은 기본적으로 주어진 데이터를 가지고 컴퓨터를 훈련을 시키기 때문에 훈련,검증의 두단계를 거칩니다. 주어진 데 seong6496.tistory.com 혼동행렬은 약간 복잡합니다. 교차 검증을 통한 정확도를 하면 좋겠지만 분류기의 예측값과 정답과의 차이를 반영했는지와..
머신러닝의 가장 기초중의 기초 머신러닝의 'Hello World' MNIST입니다. 머신러닝은 기본적으로 주어진 데이터를 가지고 컴퓨터를 훈련을 시키기 때문에 훈련,검증의 두단계를 거칩니다. 주어진 데이터는 유한하니 데이터를 분리시켜 하나는 훈련을 시키고 다른 하나로는 검증을 시행합니다. 여기서 주의할 점은 훈련데이터와 검증데이터가 겹치면 안됩니다. 이미 훈련을 한 문제로 검증을 하면 당연히 100점이 나오기 때문에 의미가 없습니다. 적당한 훈련 끝에 데이터를 아무거나 가져와도 내가 원하는 답을 해주는지를 기대하기 때문에 주어진 환경안에서 잘 훈련되어 정확한 답을 끌어내게끔 만들어내는게 목적이라고 볼 수 있습니다. MNIST는 손으로 쓴 숫자이미지로 이를 이용해 컴퓨터를 학습시켜 컴퓨터가 아무 숫자를 보..
이어서 회귀를 하겠습니다. 이전 포스팅에서는 메커니즘을 설명하기 위해 이미 알려진 데이터로 했는데요. 이번에는 데이터가 3차원인 경우에 대해 회귀를 진행해보겠습니다. 행렬을 이용해 구성할 수 있습니다. 실제로 회귀는 아는 데이터가 아니라 잘 모르는 데이터의 모양을 보고 진행을 합니다. 하지만 메커니즘을 위해 데이터의 모형을 다 안다는 전제하에 연습용으로 그려내겠습니다. 셋팅 먼저 데이터 값인 f(z)를 정의하겠습니다. 그리고 x, y 를 meshgrid를 이용해 격자로 펼치겠습니다. def f(z): x, y =z return np.sin(x)+0.25*x+np.sqrt(y) x = np.linspace(0,10,20) y = np.linspace(0,10,20) X, Y = np.meshgrid(x,y..
회귀 분석을 파이썬으로 구현(?)해보겠습니다. 회귀분석을 통해서 데이터 분석을 많이 하게 되는데요. 보통 선형 회귀 모델을 많이 쓰고 있는데 이번 포스팅에서는 일반적인 모형을 통해 전체적인 메커니즘을 정리해볼까 합니다. 오차에 대한 얘기는 빼겠습니다. 추후에 오차체크종류나 선형 회귀나 로지스틱 회귀에 대해 포스팅하겠습니다. 기회가 있다면요 ㅎㅎ 회귀 분석 회귀 분석이란 어떤 실험에 의해서 모여진 데이터(x,y 변수)에 대해 두 변수 사이의 모형을 구해 적합도를 측정하는 것이라 볼 수 있습니다. x에 따라 y값을 정할 수 있는 경우에 회귀분석을 쓰고 이런 관계에서 x는 독립변수, y는 종속변수라고 합니다. 적합한 모형의 선택은 분석자의 판단에 따라 달라지고 그에 따른 결과 또한 달라지게 됩니다. 회귀 분석..
보간법은 데이터만으로 그래프를 만들어갈 때 쓰는 방법입니다. 생각해보면 얻어낸 데이터 연속적일 수 없습니다. 왜냐하면 x축을 시간이라고 보면 시간은 연속이지만 저는 특정 시간마다 데이터를 추출해오기 때문이죠. 그렇지 않다면 규칙이 확실히 이미 정해진 데이터라고 볼 수 있습니다. 규칙이 있으니 함수로 수식으로 나타낼 수 있기 때문에 데이터를 굳이 받아올 필요가 없습니다. 어쨋든 늘 빈 곳이 존재합니다. 한정된 데이터를 가지고 연속적인 그래프로 나타내야 하는데 사이사이를 나름의 규칙을 정해서 메꾸는 작업을 하는게 보간법입니다. 사실 보간법 전체로 보면 머신러닝에 가깝진 않습니다. 보간법도 근사하는 방식으로 접근을 하기 때문에 그 부분만 강조해서 보고 regression 기반인 머신러닝과 비교를 위해서 포스팅..
파이썬에서 SQLite3을 이용해 db파일의 행추가 ,삭제를 해볼까 합니다. 행 추가 행을 추가하려면 'INSERT INTO 테이블명 VALUES (삽입할 내용)'을 입력합니다. 삽입할 내용은 테이블과 열이 맞아야 합니다. 그렇지 않으면 오류 발생하고 써지지 않습니다. stock이라는 테이블을 만들겠습니다. import sqlite3 as sq3 con = sq3.connect('./stocks.db') cursor = con.cursor() con.commit() q = con.execute q('SELECT * FROM sqlite_master').fetchall() 현재 테이블은 3 개의 열로 되어 있으니 3개의 내용으로 넣어줍니다. 아무거나 넣어보겠습니다. insert = "INSERT INTO ..
파이썬에서 SQL을 간단하게 쓸 수 있는 SQLite3 테이블 생성,변경,제거 방법입니다. SQLite3은 파이썬에 내장되어 있어서 파이썬 내에서 바로 쓸 수 있고 SQL 구문을 사용하기 때문에 다른 SQL 프로그램과 유사한 문법으로 할 수 있습니다. 다만, 말그대로 lite 한 버전이기 때문에 시스템 규모가 커지면 PostgreSQL이나 MySQL 같은 프로그램을 사용하는게 좋습니다. 입문자용으로 보면 될 것 같습니다. 파일 만들기 파일이 있어야 데이터를 넣을 수 있기 때문에 파일부터 만들겠습니다. connect 메쏘드를 이용하면 해당 db에 연결됩니다. 파일이 없는경우 db 파일을 생성하게 됩니다. import sqlite3 as sq3 con = sq3.connect('./stocks.db') 탐색..
요즘에는 파이썬에 SQL을 지원하는 다른 라이브러리도 많아서 반드시 MySQL을 쓸 필요는 없지만 SQL을 할 때 가장 많이 쓰는 툴이 MySQL입니다. 설치하기 아래 링크에서 설치파일을 다운로드합니다. https://dev.mysql.com/downloads/installer/ MySQL :: Download MySQL Installer Select Operating System: Select Operating System… Microsoft Windows Select OS Version: All Windows (x86, 32-bit) Windows (x86, 32-bit), MSI Installer 8.0.25 2.4M (mysql-installer-web-community-8.0.25.0.msi) ..