기본 콘텐츠로 건너뛰기

6월, 2020의 게시물 표시

[ML] 결정트리(Decision Tree) 모델

one-hot 인코딩 : tensorflow

one-Hot encoding 인코딩(Encoding) 카테고리 값이나 텍스트 정보를 저리가 쉬운 정수로 변환하는 과정 one-hot 인코딩은 one-of-k라고도 하며 0~k-1의 값을 가지는 정수 스칼라 값을 0 또는 1을 가지는 k차원(클래스수 =k)의 벡터로 변환합니다. 예로서 자료의 목록이 0~2의 범위를 가지는 경우에서 값들이 0, 1, 2라면 다음과 같이 변환됩니다. 0: 1,0,0 1: 0,1,0 2: 0,0,1 import numpy as np x=[0, 1, 2] x_oh=np.zeros((3,3));x_oh array([[0., 0., 0.], [0., 0., 0.], [0., 0., 0.]]) for i, j in zip([0,1,2], x): x_oh[i, j]=1 x_oh array([[1., 0., 0.], [0., 1., 0.], [0., 0., 1.]]) tensorflow.one_hot() tf.one_hot(indices, depth, on_value=None, off_value=None, axis=None, dtype=None, name=None) depth의 지정한 위치(indices)에 지정한 값(on_value), 나머지 위치에 off_value값을 입력합니다. on_value와 off_value의 기본값은 1과 0입니다. depth는 axis의 값에 따라 유동적입니다. indice가 feature 즉, 1차원으로 구성된 경우 axis=-1 → feature × depth axis=0 → depth × feature indice가 2차원 즉, [batch, feature]일 경우 axis=-1 → batch × feature × depth axis=1 → batch × depth × feature axis=0 → depth × batch ×

[data analysis] 정규화(Normalization)

Data의 정규화(Normalization) 개요 L 1 Normalization L 2 Normalization 개요 각 샘플들이 단위 벡터가 되도록 하는 스케일 과정입니다. 즉, 행과 열로 이루어진 데이터 구조에서 표준화 가 각 열 단위로 스케일을 조정(각 변수별 조정)한다면 정규화는 동일한 행에 위치한 데이터들의 스케일을 조정합니다(샘플별 조정). sklearn.preprocessing.normalizer(x, norm='l2') 함수를 사용합니다. 이 함수의 매개변수 norm의 인자로 'l2'이면 L 2 정규화, 'l1'이면 L 1 정규화를 실행합니다. sklearn.preprocession.Normalizer(norm="l2") 데이터의 각 샘플이 단위벡터가 되도록 변환 인수 norm에 l1, l2 또는 max norm = "l1" → L 1 정규화, x/(∑|x|) norm = "l2" → L 2 정규화, x/(∑x 2 ) 0.5 norm = "max" → x/(max|x|) 기본값은 l2 L 1 Normalization 각 행에서 절대 값의 합이 항상 1이되는 방식으로 데이터 세트 값을 수정하는 방법으로 최소 절대 편차라고도합니다(식 1). $$\begin{align} \text{벡터}\qquad \qquad& \qquad \qquad \text{L}_1\; \text{정규화에 의한 벡터}\\ \begin{matrix} x_{11}&x_{12}& \cdots &x_{1p}\\ x_{21}&x_{22}& \cdots &x_{2p}\\ \vdots&\vdots& \ddots

[TF]Sequential 모형 만들기

Sequential 모형 만들기  layer를 조합하여 모형을 만듭니다. 이것은 keras API를 적용하는 것으로 tf.keras.Sequential 모형입니다.  from tensorflow.keras imports layers  #시퀀스 모형의 frame을 작성하고 .add 메소드를 사용하여 층을 첨가합니다.  model = tf.keras.Sequential()  #모형에 64개 유닛의 층을 첨가합니다. 활성함수로 relu를 적용합니다.  model.add(layers.Dense(64, activation="relu")) #동일한 층을 첨가할 수 있습니다.  model.add(layers.Dense(64, activation="relu")) #10개 유닛을 가진 마지막 층을 첨가하며 활성함수로 softmax를 사용합니다.  model.add(layers.Dense(10, activation="softmax")) 위 함수들의 인수들은 다음을 포함합니다. activation 활성함수를 지정합니다. 기본으로 제공되는 함수이름 또는 사용자 정의 함수를 함수나 객체를 지정할 수 있습니다. 기본값은 활성함수를 지정하지 않는 것입니다. kernel_initializer, bias_initializer 가중치(weight), 절편 (bias)의 초기화 방법을 지정 내장함수 또는 호출가능한 객체를 지정 glorot_uniform이 기본값 kernel_regularizer, bias-regularizer L1, L2와 같이 정규화 방법을 지정, 기본값은 지정하지 않는 것입니다. 다음은 다양한 매개변수를 사용하여 층을 만드는 예입니다. #시그모이드 활성화 층 layers.Dense(64, activation="sigmoid") #다음과 같이 작성할 수 있습니다. layers.Dense(64, activation=tf.keras.activations.sigmo

[Probability]순열(permutation)

순열(Permutaion) 경우의 수 주사위 2개를 시행할 경우 발생되는 모든 경우는 다음과 같습니다. event=[] for i in range(1, 7): for j in range(1, 7): event.append((i, j)) print(event, end="") [(1, 1), (1, 2), (1, 3), (1, 4), (1, 5), (1, 6), (2, 1), (2, 2), (2, 3), (2, 4), (2, 5), (2, 6), (3, 1), (3, 2), (3, 3), (3, 4), (3, 5), (3, 6), (4, 1), (4, 2), (4, 3), (4, 4), (4, 5), (4, 6), (5, 1), (5, 2), (5, 3), (5, 4), (5, 5), (5, 6), (6, 1), (6, 2), (6, 3), (6, 4), (6, 5), (6, 6)] (1, 1) (1, 2) (1, 3) (1, 4) (1, 5) (1, 6) (2, 1) (2, 2) (2, 3) (2, 4) (2, 5) (2, 6) (3, 1) (3, 2) (3, 3) (3, 4) (3, 5) (3, 6) (4, 1) (4, 2) (4, 3) (4, 4) (4, 5) (4, 6) (5, 1) (5, 2) (5, 3) (5, 4) (5, 5) (5, 6) (6, 1) (6, 2) (6, 3) (6, 4) (6, 5)