목록분류 전체보기 (10)
이지훈님의 블로그
우선 빌드할 c파일을 생성한다. gcc option -o output 파일 이름 지정 -c object 파일 생성 -I header file 위치 지정 -I -l 라이브러리 파일 지정 -l -L 라이브러리 폴더 지정 -L main.c#include int main() { printf("Hello World\n"); return 0; } 이 파일을 빌드하기 위해서는 다음의 gcc를 이용해 실행파일을 만들어야 한다. gcc -c main.c gcc -o main.out main.o gcc를 이용해 실행파일을 만들어야 한다. 이를 조금 매끄럽게 처리하는 Makefile을 생성한다. Makefile main.out : main.o gcc -o main.out main.o main.o : main.c gcc -c..
Naive Bayesian Classification 나이브 베이즈 분류는 특성들 사이의 독립을 가정하는 베이즈 정리를 적용한 확률 분류기의 일종이다. 베이즈 정리 설명 전에 기본적인 확률에 개념을 확인해보자. 조건부 확률 (Conditional probability) 어떤 사건 B가 일어났을 때 사건 A가 일어날 확률을 의미한다. 사건 B가 발생했을 때 사건 A가 발생할 확률은 사건 B의 영향을 받아 변하는데 이를 조건부 확률이라 한다. 사건 A와 B가 독립사건일 경우 결합 확률 (Joint Probability) 두 사건이 동시에 일어날 확률이다. 두 사건이 서로 독립이라면 독립이 아니라면 아래 그림은 Probability Tree이다. 우도 (Likelihood) < AI_STUD..
Logistic Regression 독립 변수의 선형 결합을 이용하여 사건의 발생 가능성을 예측하는데 사용되는 통계 기법이다.Logistic Regression은 Regression(회귀)이름이 붙어있지만 Classification문제[비가온다 vs 비가 안온다, 종양이다 vs 아니다]를 해결한다. 선형회귀를 이용해서 분류를 한다면? 0.7을 기준으로 비가 온다(y = 1), 비가 오지않는다(y=0)로 구분한다고 가정하자.[그림 1]과 같은 경우로 결과가 나왔으면 '괜찮네'라고 생각할 수 있다.하지만 [ 그림 2 ] 와 같이 오른쪽에 특이한 녀석을 추가하여 학습하면 분류는 실패할 것이다. 또한 선형회귀는 0과 1 사이의 값을 가지지 않을수도 있다. (우리가 원하는 ..
Decision Tree + C4.5알고리즘 c4.5 특징1. 수치형 자료를 처리한다.2. 불완전한 데이터를 처리한다.3; 가지치기로 과적합을 해결한다. GainRatio Information Gain의 문제점은 많은 측정값을 가진 속성으로 편향된다는 것이다. ID_CODE와 Outlook의 Information Gain을 구해보자. Gain(Outlook) = E(Play) - E(Play, OutLook) = 0.94 - 0.69Gain(ID_CODE) = E(Play) - E(Play, ID_CODE) = 0.94 - 0 ID_CODE Outlook Play? 1 sunny No 2 sunny No 3 overcast Yes 4 rain Yes 5 rain Yes 6 rain N..
Decision Tree(결정트리) 어떤 항목에 대한 관측값과 목표값을 연결시켜주는 예측 모델로써 결정 트리를 사용한다. 장점 1. 결과를 해석하고 이해하기 쉽다.간략한 설명만으로 결정 트리를 이해하는 것이 가능하다.2. 자료를 가공할 필요가 거의 없다.다른 기법들의 경우 자료를 정규화하거나 임의의 변수를 생성하거나 값이 없는 변수를 제거해야 하는 경우가 있다.3. 수치 자료와 범주 자료 모두에 적용할 수 있다.4. 대규모 데이터 세트도 잘 동작한다. 한계 1. 휴리스틱 기법을 기반하기 때문에 최적 결정트리라고 보장할 수 없다.2. 너무 복잡한 결정트리를 만들 수 있다.3. 약간의 차이에 따라 (레코드의 개수의 약간의 차이) 트리의 모양이 많이 달라질 수 있다. 두 변수가 비슷한 수준의 정보력을 갖는다고..
주성분분석 (PCA) 고차원의 데이터를 저차원의 데이터로 환원시키는 기법이다. 새로운 변수를 원 변수의 선형결합으로 만들어 변수를 축약한다. 장점 : 고차원의 데이터를 큰 정보손실없이 변환해 준다.시각화 편리 -> 변수를 줄임 -> 학습집합의 크기를 줄여줌 -> 학습 시 빠름 한계 : 특징벡터의 Label을 고려하지 않음. 결과값이 특징구분을 좋게한다는 보장은 없음. PCA분석을 이해하기 위해서는 공분산, 고유벡터와 고유값에 대한 개념이 필요하다. 공분산 2개의 확률변수의 상관정도를 나타내는 값이다. cov(x, y) > 0 이면 x가 증가할 때 y도 증가 cov(x, y) < 0 이면 x가 증가할 때 y는 감소 cov(x, y) = 0 이면 상관관계가 없음 다른 차원과의 공분산을 모두 구하고 행렬에 넣..
Python 종목코드 가져오기 다음 금융의 코스피 시가총액 페이지에 있는 종목과 코드를 긁어온다. sudo pip3 install urllib3 sudo pip3 install beautifulsoup4 Code urllib로 html문서를 가져왔고, beautifulsoup을 사용해 필요한 데이터를 찾았다. 종목코드와 종목이름을 list에 넣어 파일로 저장한다. numpy의 savatxt를 사용하려고 했지만 atom에서 자꾸 인코딩 에러가 나서 codecs를 사용해 저장했다. #-*- coding: utf-8 -*- from bs4 import BeautifulSoup import numpy as np import urllib.request import sys import io import os imp..
Python 주가데이터 가져오기 yahoo finance가 historical data를 제공해주지 않아 URL을 사용해 csv파일을 받는 방법이나, 파이썬의 yahoo_finacne 패키지로 데이터를 가져오는 방법 등을 더 이상 사용할 수가 없게 되었다. 열심히 구글링을 하는 중 fix_yahoo_finance 패키지를 발견했다. fix_yahoo_finance : https://github.com/ranaroussi/fix-yahoo-finance Requirements Python >=3.4 Pandas (tested to work with >=0.18.1) Numpy >= 1.11.1 requests >= 2.14.2 multitasking >= 0.0.3 Install pip3 install f..
Linear Regression1. 개요통계학에서, 선형 회귀는 종속 변수 y와 한 개 이상의 독립변수 X와의 선형 상관관계를 모델링하는 회귀분석 기법 - 위키피디아 X = [1, 2, 3, 4, 5]Y = [1, 2, 3, 4, 5] Y = aX + b로 가정, 이것을 hypothesis라고 한다.위처럼 X와 Y의 값을 가질 때, 사람은 Y = X 관계이며 만약 X가 6일때 Y가 6의 값을 가지는 것도 알 수 있음. 하지만 컴퓨터는 Y = X의 관계를 바로 찾을 수 없음. 즉 컴퓨터로 학습을 통해 독립변수 X가 들어왔을 때, Y가 어떤 값을 가질수 있는지 구하는 가장 간단한 방법이 선형회귀임. 2. 방법0) 데이터총 4개의 데이터가 있고 각각 (x, y) 2차원 좌표로 이루어짐. 우리의..
Linear Classifier1. 개요기계학습 분야에서 통계적 분류는 개체의 속성을 이용하여 그 개체가 속하는 그룹, 또는 클래스를 판별하는 것을 목표로 한다. 선형 분류에서는 주어진 속성의 선형결합을 바탕으로 분류를 수행한다. 개체의 속성은 피쳐 값이라고 부르기도 하는데, 보통 피쳐 벡터라는 벡터 형태로 제공한다. - 위키피디아 선형분류는 두 개의 집합(혹은 그 이상)을 나눌 때 사용할 수 있다. 분류를 할 때 주로 Neural Network, SVM을 많이 사용하지만, 개인적인 생각이지만 가장 간단한 Linear Classifier을 먼저 이해하고 neuralnet이나 다른 머신러닝 알고리즘을 공부하는 것이 더 효율적인 것 같다. 2. 방법2차원 그래프 위에 두 집합의 특징을 나타내..