기본 콘텐츠로 건너뛰기

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

[data analysis] 원-핫 인코딩을 위한 함수들

원-핫 인코딩을 위한 함수들

pandas.get_dummies(x, prefix=None, dummy_na=False, dtype=None)
  • 전달되는 데이터인 x는 1차원 Array, pandas Series, 그리고 DataFrame 모두 가능
  • 데이터의 고유값(unique value)에 대응하는 클래스를 생성하여 값에 적합한 클래스에 True, 나머지 클래스에 False를 할당(one-hot encoding)
    • True와 False로 표시가 기본값
    • 인수 dtype = "int": True → 1, False → 0
  • dummy_na = True: 데이터의 포함된 Na를 포함
pd.get_dummies(['A', 'A', 'C', 'C', 'B'])
A B C
0 True False False
1 True False False
2 False False True
3 False False True
4 False True False
pd.get_dummies(['A', 'A', 'C', 'C', 'B'], dtype='int')
A B C
0 1 0 0
1 1 0 0
2 0 0 1
3 0 0 1
4 0 1 0
y=pd.DataFrame([['A', 'A', 'C', 'C', 'B'],['B', 'A', 'C', 'A', 'B']])
pd.get_dummies(y)
0_A 0_B 1_A 2_C 3_A 3_C 4_B
0 True False True True False True True
1 False True True True True False True
sklearn.preprocessing.OneHotEncoder()
  • 특정한 값에 해당하는 인덱스에 1, 나머지는 0을 할당하는 방식으로 데이터 변환하는 클래스
  • 전달하는 인수는 2차원 이상의 배열 구조 이어야 합니다.
  • .fit(data): estimator 생성하는 메서드
  • .transform(data): 변환된 결과를 생성하는 메서드. 이 결과는 자료형이 지정되지 않은 상태로 .toarray() 메소드에 의해 array 형으로 전환한 후 나타냄
  • 위의 두 메소드를 결합하여 .fit_transform(data)로 처리할 수 있습니다.
  • .inverse_transforme(변환된 data): 원시데이터로 환원된 결과를 반환하는 메소드
  • .categories_ : data의 클래스(목록)를 즉, 각 변수의 고유값을 반환하는 속성
torch.functional.one_hot(tensor, num_classes=-1)
  • num_classes는 원-핫 인코딩을 위한 클래스 수(컬럼수)
    • 이 함수 내부적으로 생성되는 클래스 수는 0~tensor 객체의 최대값
    • 예를 들어 month의 경우 객체의 최대값은 12이므로 실제적으로 생성되는 클래스 수는 [0, 12]로 13개 입니다.
    • num_classes의 기본값은 -1이고 이 경우는 위 과정이 자동으로 계산됩니다.
    • 수동으로 지정하기 위해서는 위의 자동지정된 값보다 커야 합니다. 즉, month의 경우 13이상이어야 합니다.
    • 여러개의 변수(열)을 동시에 변환할 경우 그 객체의 최대값을 기본으로 하므로 각 열의 클래스수는 동일해집니다. month의 경우 12개의 클래스가 맞지만 한개의 클래스가 더 생성됩니다. 그러나 여분이 되는 이 클래스의 값은 모두 0이므로 계산 결과에 영향에 없습니다. 그러나 메모리 관리 측면에서 불리합니다.
  • 텐서의 행 단위로 변환합니다.

댓글

이 블로그의 인기 게시물

[Linear Algebra] 유사변환(Similarity transformation)

유사변환(Similarity transformation) n×n 차원의 정방 행렬 A, B 그리고 가역 행렬 P 사이에 식 1의 관계가 성립하면 행렬 A와 B는 유사행렬(similarity matrix)이 되며 행렬 A를 가역행렬 P와 B로 분해하는 것을 유사 변환(similarity transformation) 이라고 합니다. $$\tag{1} A = PBP^{-1} \Leftrightarrow P^{-1}AP = B $$ 식 2는 식 1의 양변에 B의 고유값을 고려한 것입니다. \begin{align}\tag{식 2} B - \lambda I &= P^{-1}AP – \lambda P^{-1}P\\ &= P^{-1}(AP – \lambda P)\\ &= P^{-1}(A - \lambda I)P \end{align} 식 2의 행렬식은 식 3과 같이 정리됩니다. \begin{align} &\begin{aligned}\textsf{det}(B - \lambda I ) & = \textsf{det}(P^{-1}(AP – \lambda P))\\ &= \textsf{det}(P^{-1}) \textsf{det}((A – \lambda I)) \textsf{det}(P)\\ &= \textsf{det}(P^{-1}) \textsf{det}(P) \textsf{det}((A – \lambda I))\\ &= \textsf{det}(A – \lambda I)\end{aligned}\\ &\begin{aligned}\because \; \textsf{det}(P^{-1}) \textsf{det}(P) &= \textsf{det}(P^{-1}P)\\ &= \textsf{det}(I)\end{aligned}\end{align} 유사행렬의 특성 유사행렬인 두 정방행렬 A와 B는 'A ~ B' 와 같

[matplotlib] 히스토그램(Histogram)

히스토그램(Histogram) 히스토그램은 확률분포의 그래픽적인 표현이며 막대그래프의 종류입니다. 이 그래프가 확률분포와 관계가 있으므로 통계적 요소를 나타내기 위해 많이 사용됩니다. plt.hist(X, bins=10)함수를 사용합니다. x=np.random.randn(1000) plt.hist(x, 10) plt.show() 위 그래프의 y축은 각 구간에 해당하는 갯수이다. 빈도수 대신 확률밀도를 나타내기 위해서는 위 함수의 매개변수 normed=True로 조정하여 나타낼 수 있다. 또한 매개변수 bins의 인수를 숫자로 전달할 수 있지만 리스트 객체로 지정할 수 있다. 막대그래프의 경우와 마찬가지로 각 막대의 폭은 매개변수 width에 의해 조정된다. y=np.linspace(min(x)-1, max(x)+1, 10) y array([-4.48810153, -3.54351935, -2.59893717, -1.65435499, -0.70977282, 0.23480936, 1.17939154, 2.12397372, 3.0685559 , 4.01313807]) plt.hist(x, y, normed=True) plt.show()

R 미분과 적분

내용 expression 미분 2차 미분 mosaic를 사용한 미분 적분 미분과 적분 R에서의 미분과 적분 함수는 expression()함수에 의해 생성된 표현식을 대상으로 합니다. expression expression(문자, 또는 식) 이 표현식의 평가는 eval() 함수에 의해 실행됩니다. > ex1<-expression(1+0:9) > ex1 expression(1 + 0:9) > eval(ex1) [1] 1 2 3 4 5 6 7 8 9 10 > ex2<-expression(u, 2, u+0:9) > ex2 expression(u, 2, u + 0:9) > ex2[1] expression(u) > ex2[2] expression(2) > ex2[3] expression(u + 0:9) > u<-0.9 > eval(ex2[3]) [1] 0.9 1.9 2.9 3.9 4.9 5.9 6.9 7.9 8.9 9.9 미분 D(표현식, 미분 변수) 함수로 미분을 실행합니다. 이 함수의 표현식은 expression() 함수로 생성된 객체이며 미분 변수는 다음 식의 분모의 변수를 의미합니다. $$\frac{d}{d \text{변수}}\text{표현식}$$ 이 함수는 어떤 함수의 미분의 결과를 표현식으로 반환합니다. > D(expression(2*x^3), "x") 2 * (3 * x^2) > eq<-expression(log(x)) > eq expression(log(x)) > D(eq, "x") 1/x > eq2<-expression(a/(1+b*exp(-d*x))); eq2 expression(a/(1 + b * exp(-d * x))) > D(eq2, "x") a * (b * (exp(-d * x) * d))/(1 + b