분류 전체보기
결정트리와 타이타닉 가설 설명 (2) - 결정트리 분류기 훈련
2016. 11. 24.결정트리와 타이타닉 가설 설명 (2) - 결정트리 분류기 훈련 결정트리 분류기 훈련 먼저 훈련과 테스트 데이터를 분리한다.12>>> from sklearn.cross_validation import train_test_split>>> X_train, X_test, y_train, y_test = train_test_split(titanic_X, titanic_y, test_size=0.25, random_state=33)csDecisionTreeClassifier 를 만들고 학습을 수행하기 위해 분류기의 fit 메소드를 사용한다. 123>>> from sklearn import tree>>> clf = tree.DecisionTreeClassifier(criterion='entropy', max_dept..
list object has no attribute write_png
2016. 11. 22.pydot, graphviz 사용시 아래와 같은 에러가 발생하는 경우 AttributeError : 'list' object has no attribute 'write_png' 123456789101112131415161718192021222324>>> import pydot,StringIO>>> >>> dot_data = StringIO.StringIO() >>> >>> tree.export_graphviz(clf, out_file=dot_data,feature_names=['age','sex','1st_class','2nd_class','3rd_class']) >>> >>> graph = pydot.graph_from_dot_data(dot_data.getvalue()) >>> >>> graph.wr..
결정트리와 타이타닉 가설 설명 (1) - 데이터 전처리
2016. 11. 22.결정트리와 타이타닉 가설 설명 (1) - 데이터 전처리 결정트리는 매우 간단하지만 강력한 지도학습기법이다. 이 모델의 중요한 장점은 사람이 쉽게 이해할 수 있고, 새로운 인스턴스의 목적 범주를 이해하기 위해 결정트리를 따라 결정한다는 것이다. 훈련데이터가 무엇을 제시하느냐보다 결정의 이유를 보여주길 원하는 카드 승인이나 의료 진찰과 같은 태스크에 매우 유용하다. 해결하고자하는 문제는 탑승객의 나이, 선실 등급, 성별을 고려하여 타이타닉호의 탑승객이 생존했는지를 결정하는 것이다. 데이터는 아래 링크에서 다운로드할 수 있다. http://biostat.mc.vanderbilt.edu/wiki/pub/Main/DataSets/titanic.txt데이터셋의 각 인스턴스는 다음과 같은 형태를 갖는다. 123456..
Numpy로 수치계산하기 (3)
2016. 11. 19.Numpy로 수치계산하기 (3) NumPy 로 밀도지도 그리기 하루 중 특정 시간대의 승하차 위치에 대한 2D 밀도 지도를 계산하고 그려보자. 먼저, 택시 운행을 선택해보자. 데이터셋에서 저녁 운행수는 242,818건이다. 12345>>> evening = (data.pickup_datetime.dt.hour >= 19).values>>> n = np.sum(evening)>>> n 242818Colored by Color Scriptercs 밀도 지도를 그리는 방법은 다음과 같다. 먼저 저녁 운행수 n 에 대한 모든 승하차 위치를 생각해본다. 이러한 위치에 대한 2n 을 만든다. 모든 위치에서 승차는 -1 의 가중치를, 하차는 +1 의 가중치를 부여한다. 주어진 위치에서 산술 밀도는 이 위치에서 출발하..
Numpy로 수치계산하기 (2)
2016. 11. 19.Numpy로 수치계산하기 (2) 기본 배열 조작 먼저 1부터 10까지의 정수 배열을 만든다.1234567>>> import numpy as np>>> >>> x = np.arange(1, 11)>>> >>> x array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10])cs 조작 테이블을 만들기 위해 먼저 x 를 행과 열로 변환하자. x 는 1D 배열이지만 행과 열 벡터는 2D 배열(매트릭스)이다. 1) reshape( ) 를 이용한 방법12345>>> x_row = x.reshape((1, -1))>>> >>> x_row>>>array([[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]])csreshape( ) 메소드는 파라메터로 새 크기를 받는다. 원소의 총 개수는 그대로 유지해야..
Numpy로 수치계산하기 (1)
2016. 11. 18.Numpy로 수치계산하기 (1) ndarray 일반적으로 n 차원 배열을 ndarray 라고 말하며, n 차원 매트릭스다. 모든 수를 인덱스로 식별한다. ndarray는 기본적으로 다음으로 정의된다. 차원수 dimensions 세이프 shape 스트라이드 stride데이터 타입 data type실제 데이터배열에서 모든 원소는 같은 데이터 타입(homogeneously typed)을 가져야한다. 순수 파이썬과 NumPy 계산비교 1,000,000개의 무작위 원소를 갖는 두 벡터를 만들어, NumPy의 계산속도가 순수 파이썬 코드에 비해 얼마나 더 빠르지 확인해보자.먼저 순수 파이썬 코드로 278ms 가 소요되었다. 123456789101112>>> from random import random>>> lis..
텍스트 분류를 위한 나이브 베이즈 (2) - 분류기 훈련 및 성능평가
2016. 11. 15.텍스트 분류를 위한 나이브 베이즈 (2) - 분류기 훈련 및 성능평가 나이브 베이즈 분류기 훈련 sklearn.naive_bayes 모듈의 MultinomialNB 클래스와 3개의 벡터라이저를 각각 복합해 서로 다른 3개의 분류기를 만들고 기본 매개변수를 사용해 어떤 것이 더 낫게 수행하는지 비교한다. 123456789101112131415161718>>> from sklearn.naive_bayes import MultinomialNB>>> from sklearn.pipeline import Pipeline>>> from sklearn.feature_extraction.text import TfidfVectorizer, >>> HashingVectorizer, CountVectorizer>>>>>> c..
우분투에 스칼라 설치하기 Install Scala on Ubuntu 14.04
2016. 11. 14.1. Java JDK 설치1# conda install -c cyclus java-jdk=8.45.14cs 2. 스칼라 설치 및 실행1# conda install -c anaconda-cluster scala=2.11.1cs Hello, World! 실행12345678910# scala Setting up SCALA_HOME for scala to /root/anaconda/envs/tensorflow/share/scala-2.11.1 ...Launching scala Welcome to Scala version 2.11.1 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_45).Type in expressions to have them evaluated.Type :h..
텍스트 분류를 위한 나이브 베이즈 (1) - 데이터 전처리
2016. 11. 12.텍스트 분류를 위한 나이브 베이즈 (1) - 데이터 전처리 나이브 베이즈를 통한 텍스트 분류 범주를 가진 텍스트 문서가 있고, 보지 못한 새로운 인스턴스의 범주를 예측하도록 나이브 베이즈 알고리즘을 훈련시킨다.사이킷런에서 구할 수 있는 데이터셋을 사용하여 20개의 다른 주제로 19,000개 뉴스 그룹 메시지를 분류한다. 1) 데이터셋 가져오기학습에 필요한 데이터를 가져온다. 12345678910>>> %pylab inline>>> >>> import logging>>> logging.basicConfig()>>> >>> from sklearn.datasets import fetch_20newsgroups>>> >>> news = fetch_20newsgroups(subset='all')>>> Popul..
ImportError: The pandas.io.data module is moved to a separate package (pandas-datareader)
2016. 11. 12.ImportError: The pandas.io.data module is moved to a separate package (pandas-datareader) 1234567891011121314151617#-*- coding: utf-8 -*- import pandas as pdimport pandas.io.data as webimport datetime def download_stock_data(file_name, company_code, year1, month1, date1, year2, month2, date2): start = datetime.datetime(year1, month1, date1) end = datetime.datetime(year2, month2, date2) df = web...
AICPA 시험 응시까지 프로세스 정리
2016. 11. 11.1 학점취득현황 확인 AICPA(미국공인회계사)시험은 본인이 취득한 학점에 대한 확인이 출발점입니다. 출신대학으로부터 영문성적표를 발급받아,「회계학점」과「경영학점」을 얼마나 취득했는지부터 확인하시기 바랍니다. 카운트될 수 있는 회계학점과 경영학점은 응시주 및 출신대학의 학제에 따라 달라질 수 있으므로, 전문가로부터 정확한 어드바이스를 받는 것이 필요합니다. 2 응시주 선택 각주마다 법률이 상이하므로, 「응시요건」 및 「라이센스요건」 또한 주별로 차이가 있습니다. 본인이 응시하고자하는 주의 요건을 미리 확인한 후, 본인의 목적에 맞는, 또는 응시 가능하거나 응시에 유리한 주를 선택하는 것이 중요합니다. 3 학력평가 미국 이외의 대학에서 취득한 학점에 대해서는, 각 주의 시험위원회가 지정한 학력평가기관에서 ..
서포터 벡터 머신과 이미지 인식 (4) - 서포트 벡터 머신 훈련 (2)
2016. 11. 6.서포터 벡터 머신과 이미지 인식 (4) - 서포트 벡터 머신 훈련 (2) 서포트 벡터 머신 훈련 논의를 확장시켜 이제 안경을 쓴 사람과 그렇지 않은 사람으로 얼굴을 분류해보자. 먼저 해야할 것은 안경을 쓴 사람의 이미지의 범위를 정의하는 것이다. 다음 리스트는 안경을 쓴 사람의 색인이다. 12345678>>> # the index ranges of images of people with glasses>>> glasses = [ (10, 19), (30, 32), (37, 38), (50, 59), (63, 64), (69, 69), (120, 121), (124, 129), (130, 139), (160, 161), (164, 169), (180, 182), (185, 185), (189, 189), (..
서포터 벡터 머신과 이미지 인식 (3) - 서포트 벡터 머신 훈련 (1)
2016. 11. 6.서포터 벡터 머신과 이미지 인식 (3) - 서포트 벡터 머신 훈련 (1) 서포트 벡터 머신 훈련 scikit-learn 의 SVM 을 사용하기 위해 sklearn.svm 모듈에서 SVC 클래스를 임포트한다. SVC를 초기화할 때는 중요한 매개변수를 가진다. 분류기에서 사용하는 커널 함수를 정의하는 kernel 이다(커널 함수는 인스턴스 간의 유사도 측정을 다르게 한다). 가장 간단한 커널이 linear을 사용하자. 12>>> from sklearn.svm import SVC>>> svc_1 = SVC(kernel='linear')cs 데이터셋을 훈련 데이터와 테스트 데이터로 구분한다. 12>>> from sklearn.cross_validation import train_test_split>>> X_tr..
서포터 벡터 머신과 이미지 인식 (2) - 이미지 픽셀을 사용한 학습
2016. 11. 6.서포터 벡터 머신과 이미지 인식 (2) 접근법 1 - 학습 알고리즘에 대해 속성으로 이미지 픽셀을 사용하도록 하는 작업SVM은 매우 커다란 차원 공간을 가지는 이미지 인식에 적용할 수 있다(이미지 각 픽셀의 값을 속성으로 고려한다). 사람의 얼굴을 고려해 그 사람이 속한 리스트를 예측하는 것이다. 여기서 학습 데이터는 레이블된 사람 얼굴 이미지인 인스턴스 그룹이고, 보지 못한 새로운 인스턴스의 레이블을 예측하는 모델을 학습시킨다. 픽셀값 → 학습속성개별 레이블 → 목적 범주 데이터셋을 가져와서 출력해보자. 아래는 해당 데이터셋에 대한 설명 출력이다. 123456789101112131415161718192021222324252627>>> import sklearn as sk>>> import numpy a..
서포터 벡터 머신과 이미지 인식 (1) - 정의 및 장점
2016. 11. 6.서포터 벡터 머신과 이미지 인식 (1) - 정의 및 장점 서포터 벡터 머신(SVM, Support Vector Machine) 이란?데이터셋의 인스턴스가 다차원 공간의 점이라고 생각할 때, 서로 다른 범주에 속한 인스턴스 간의 거리를 최대한 크게 만드는 인스턴스들을 선택하는 방법으로 초평면을 얻는 지도 학습 기법으로 새 인스턴스는 놓여진 초평면의 축을 기반으로 특정범주로 분류된다 위의 이미지를 보면 빨간색 초평면과 파란색 초평면은 오류 없이 흑/백을 구별하지만, 이 중 빨간색 초평면이 최대한 넓은 폭으로 두 범주를 구별한다. 두 범주에서 가까운 인스턴스간 거리가 가장 먼 초평면이다. 이러한 접근법은 일반화 오차를 낮추고 모델이 과적합화되지 않도록 하는 장점이 있다.※ 이러한 접근법은 고차원 속성 공간으로..
scikit-learn (3) - 선형분류 (결과평가)
2016. 11. 6.scikit-learn (3) - 선형분류 (결과평가) 1. 예측하기꽃받침 너비가 4.7이고 꽃받침 길이가 3.1인 새로운 꽃이 있다고 가정하고, 이 꽃의 범주를 예측해보자. 예측 메소드는 인스턴스 배열을 입력받고, 예측 범주의 리스트를 반환한다. 다음과 같다12>>> print clf.predict(scaler.transform([4.7, 3.1]))[0]Colored by Color Scriptercs분류기가 정확했다면, 이 꽃의 범주는 세토사이다. 앞선 포스팅에서 선형 모델은 두 개의 분류를 나누는 것을 기억했다. 그러므로 예측절차는 세 개 이진 분류기의 결과를 합하고 좀 더 확실한 범주를 선택한다. 이 경우 인스턴스에서 멀리 떨어진 경계선을 선택한다. 분류기의 decision_function 메소..
scikit-learn (2) - 선형분류 (훈련데이터 만들기)
2016. 11. 6.scikit-learn (2) - 선형분류 (훈련데이터 만들기) 1. 훈련데이터셋 만들기이 문제는 속성에 따라 인스턴스의 레이블을 지정하는 분류 문제의 한 종류이다. 선택한 두 속성과 목적값으로 만든 본래 데이터셋의 일부 데이터이다. 데이터셋을 임포트한 후 약 75%의 인스턴스를 무작위로 선택하고 남은 인스턴스를 평가 목적을 위해 보유한다.12345678910111213141516>>> from sklearn import datasets>>> iris = datasets.load_iris()>>> X_iris, y_iris = iris.data, iris.target>>> print X_iris.shape, y_iris.shape (150, 4) (150,) >>> from sklearn.cross_va..
matplotlib - <matplotlib.text.Text at 0x7fc3298533d0>
2016. 11. 3.쥬피터 노트북에서 다음과 같이 그래프가 보이지 않는 경우 sklearn_1 In [3]: # 속성을 표준화한다 scaler = preprocessing.StandardScaler().fit(X_train) X_train = scaler.transform(X_train) X_test = scaler.transform(X_test) In [4]: import matplotlib.pyplot as plt colors = ['red', 'greenyellow', 'blue'] for i in xrange(len(colors)): xs = X_train[:,0][y_train == i] ys = X_train[:,1][y_train == i] plt.scatter(xs, ys, c=colors[i]) plt.le..
Jupyter Notebook 셀 크기 조절하기 How to increase/decrease the cell width of the jupyter notebook in browser
2016. 11. 3.Jupyter Notebook 셀 크기 조절하기How to increase/decrease the cell width of the jupyter notebook in browser 아래와 같이 쥬피터 노트북의 소스를 블로그 등에 html 형태로 가져올 때 가로폭이 너무 커서 아래와 같이 스크롤이 생기는 경우가 있다. 한 눈에 볼 수 있도록 창의 크기를 조절해보자. 1. 먼저 Jupyter Notebook 디렉터리를 찾는다. 123(tensorflow)root@localhost:~# jupyter --config-dir/root/.jupyter Colored by Color Scriptercs 2. 해당 디렉토리에 custom 디렉터리를 만들고 아래와 같은 custom.css 파일을 만든다.(width 는..
scikit-learn (1) - 기계학습이란?
2016. 11. 1.scikit-learn (1) - 기계학습이란? 1. 기계학습의 3가지 개념1) 태스크(T)를 해결하기 위해 학습해야 한다2) 태스크를 실행하기 위해 학습할 일부 경험(E)이 필요하다(데이터셋을 통해 표현된다) 3)얼마나 태스크를 잘 해결했는지 파악하기 위한 성능(P)을 측정할 필요가 있다 2. 기계학습기법은 보통 데이터셋으로 대표되는 과거 경험에 의존한다. 본 포스팅에서는 로널드 피셔가 소개한 아이리스 꽃 데이터셋을 사용한다. 해당 데이터셋에는 4개의 속성, 150개의 원소(인스턴스)가 있다. Iris flower data set https://en.wikipedia.org/wiki/Iris_flower_data_set Fisher's Iris Data Sepal length Sepal width Pe..
scikit-learn 을 통한 머신러닝 - 데이터셋 로딩, 학습, 그리고 예측
2016. 10. 31.scikit-learn 을 통한 머신러닝 - 데이터셋 로딩, 학습, 그리고 예측 scikit-learn 을 통한 간단한 머신러닝에 대해 알아본다. 1. 예제 데이터셋 로딩다음과 같이 iris 와 digits 데이터셋을 로딩한다. 123from sklearn import datasetsiris = datasets.load_iris()digits = datasets.load_digits()cs데이터셋은 데이터와 데이터에 대한 메타 데이터를 가지고 있는 일종의 딕셔너리같은 오브젝트이다. 데이터는 .data 로 저장되고, n_samples, n_features 배열을 가진다. 지도학습의 경우, 하나 또는 그 이상의 대응하는 변수가 .target 으로 저장된다. 숫자 데이터셋의 경우, digits.data를 통해..
텐서보드 사용법
2016. 10. 31.텐서보드는 텐스플로우 실행을 통해 생성할 수 있는 요약 데이터를 가지고 있는 텐서플로우 이벤트 파일을 읽음으로써 작동한다. 텐서보드 설치 위치 1/root/anaconda/envs/tensorflow/lib/python2.7/site-packages/tensorflow/tensorboardcs 텐서보드 실행은 다음과 같이 한다. 기본 포트는 6006 이다. 12345(tensorflow)root@localhost:~/tensorflow# tensorboard --logdir=tmp/tf_logsWARNING:tensorflow:IOError [Errno 2] No such file or directory: '/root/anaconda/envs/tensorflow/lib/python2.7/site-pack..
텐서플로우 코드 에러 - ResourceExhaustedError
2016. 10. 31.Deep MNIST for Experts 튜토리얼 실행시 발생할 수 있는 텐서플로우 코드 에러 ResourceExhaustedError 가 발생하는 경우 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120step 18500, training accuracy 1step 18600, training accuracy..
Deep MNIST for Experts - 전체 코드 (2)
2016. 10. 31.텐서플로우 첫걸음에 나오는 전체 코드입니다. 구글 홈페이지 튜토리얼과는 다소 다르네요. mnist_for_expert-1 In [1]: from tensorflow.examples.tutorials.mnist import input_data mnist = input_data.read_data_sets('MNIST_data/', one_hot=True) Extracting MNIST_data/train-images-idx3-ubyte.gz Extracting MNIST_data/train-labels-idx1-ubyte.gz Extracting MNIST_data/t10k-images-idx3-ubyte.gz Extracting MNIST_data/t10k-labels-idx1-ubyte.gz In [2]..
Deep MNIST for Experts - 전체 코드 (1)
2016. 10. 31.mnist_for_expert In [1]: import tensorflow as tf sess = tf.InteractiveSession() In [ ]: def weight_variable(shape): initial = tf.truncated_normal(shape, stddev=0.1) return tf.Variable(initial) def bias_variable(shape): initial = tf.constant(0.1, shape=shape) return tf.Variable(initial) In [3]: x = tf.placeholder(tf.float32, [None, 784]) In [4]: W = tf.Variable(tf.zeros([784, 10])) b = tf.Variabl..
텐서플로우 코드 에러 - FailedPreconditionError
2016. 10. 30.Deep MNIST for Experts 튜토리얼 실행시 발생할 수 있는 텐서플로우 코드 에러 FailedPreconditionError 가 발생하는 경우123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117for i in range(20000): batch = mnist.train.next_batch(50) if i%100 ==..
텐서플로우 코드 에러 - Cannot evaluate tensor using `eval()`
2016. 10. 30.Deep MNIST for Experts 튜토리얼 실행시 발생할 수 있는 텐서플로우 코드 에러 value error 가 발생하는 경우 12345678910111213141516171819202122232425262728293031for i in range(20000): batch = mnist.train.next_batch(50) if i%100 == 0: train_accuracy = accuracy.eval(feed_dict={x:batch[0], y_: batch[1], keep_prob: 1.0}) print "step %d, training accuracy %g" % (i, train_accuracy) train_step.run(feed_dict={x: batch[0], y_: batch[1],..
주피터 노트북 html 파일로 변환하기 How to copy/paste from IPython Notebook to other format
2016. 10. 29.다음과 같이 주피터 노트북의 데이터프레임을 html 포맷으로 변환할 수 있다.123(tensorflow)root@localhost:~/tensorflow# jupyter nbconvert mnist_for_beginner.ipynb[NbConvertApp] Converting notebook mnist_for_beginner.ipynb to html[NbConvertApp] Writing 260242 bytes to mnist_for_beginner.htmlcs 변환 관련 옵션 및 예제 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566..
텐서플로우 따라잡기 MNIST For ML Beginners (3) -Training & Evaluating Our Model
2016. 10. 29.MNIST For ML Beginners (3) -Training & Evaluating Our Model 모델을 훈련시키기 위해, 먼저 모델에게 좋다는 것이 무엇을 의미하는 것인지부터 정의해야한다. 사실 머신러닝에서는 전통적으로 모델에게 나쁜 것 - 통상 cost 혹은 loss 라고 부른다 - 을 정의하곤 하는데, 이는 우리가 만든 모델이 우리가 의도하는 결과에서 얼마나 떨어져있는가를 나타내는 것이다. 에러의 오차를 줄일수록, 모델은 훌륭해진다. 모델이 가진 loss 를 정의하는 좋은 지표중의 하나는 "cross-entropy" 라고 불리는 것이다. Cross-entropy는 우리의 예측이 얼마나 비효율적인지를 측정해주는 도구로서, 관심이 있으신 분들은 다음 링크를 통해 자세한 내용을 찾아볼 수 있다...
텐서플로우 따라잡기 MNIST For ML Beginners (2) - Implementing the Regression
2016. 10. 29.MNIST For ML Beginners (2) - Implementing the Regression 텐서플로우를 사용하기 위해 먼저 임포트한다. 1import tensorflow as tfcs 아래와 같이 변수를 생성하자.1x = tf.placeholder(tf.float32, [None, 784])cs 여기서 x 는 특정 값이 아니다. x는 placeholder라는 것으로 텐서플로우로 하여금 연산을 하도록 요청할 때 우리가 입력하게 되는 값이다. MNIST 이미지의 어떤 수라도 입력할 수 있도록 우리는 이것을 [None, 784] 형태를 가진 부동소수점수의 2-D 텐서로 표현할 것이다(여기서 None 이 의미하는 것은 어떤 값이라도 될 수 있다는 것이다). 그리고 가중치와 편향 역시 필요하다. 이 요..