군집화 - K-Means
·
머신러닝
군집화 K-means 알고리즘 K-means는 군집화에서 가장 일반적으로 사용되는 알고리즘이다. K-means는 군집 중심점이라는 특정한 임의의 지점을 선택해 해당 중심에 가장 가까운 포인트들을 선택하는 군집화 기법이다. 군집 중심점은 선택된 포인트의 평균 지점으로 이동하고 이동된 중심점에서 다시 가까운 포인트를 선택, 다시 중심점을 평균 지점으로 이동하는 프로세스를 반복적으로 수행한다. 모든 데이터 포인트에서 더 이상 중심점의 이동이 없을 경우 반복을 멈추고 해당 중심점에 속하는 데이터 포인트들을 군집화 하는 기법이다. 다음 그림에서 K-means가 어떻게 동작하는지 살펴보자. K-means 의 특징 일반적인 군집화에서 가장많이 활용 되는 알고리즘 알고리즘이 쉽고 간결. 거리 기반 알고리즘으로 속성의 ..
코딩야학 - 데이터 전처리, 효율높은 모델링
·
데이터 분석/코딩야학
판다스를 이용한 간단한 데이터 전처리 변수(칼럼) 데이터 확인 : 데이터.dtypes 변수를 범주형으로 변경 데이터['칼럼명'].astype('category') 변수를 수치형으로 변경 데이터['칼럼명'].astype('int') 데이터['칼럼명'].asfloat('float') NA 값의 처리 NA 갯수 체크 : 데이터.isna().sum() na 값 채우기 : 데이터['칼럼명'].fillna(특정숫자) # 라이브러리 사용 import pandas as pd # 파일 읽어오기 파일경로 = 'https://raw.githubusercontent.com/blackdew/tensorflow1/maste..
코딩야학 - 히든레이어
·
데이터 분석/코딩야학
히든 레이어 기존의 입력 부분과 출력 부분사이에 퍼셉트론을 이어주면 딥러닝이 깊어진다고 하는데, 그 추가된 퍼셉트론을 숨겨진 층 , 즉 히든 레이어 라고 한다 . 처음 인풋 데이터에서 총 5개의 퍼셉트론을 통해 히든레이어를 구성한다. 히든레이어 에서는 하나의 퍼셉트론으로 output Layer를 도출 할 수 있다. 히든레이어 구조를 생성하는 코드는 다음과 같다. 3개의 히든레이어를 만들고 싶으면 다음과 같이 코딩할 수 있다. 이렇게 하면 그전의 모델보다 더 똑똑한 모델을 학습할 수 있다. 보스턴 집값 예측 ########################## # 라이브러리 사용 import tensorflow as tf import pandas as pd # 1.과거의 데이터를 준비합니다. 파일경로 = &#3..
NMF(Non - Negative Matrix Factorization)
·
머신러닝
NMF(Non - Negative Matrix Factorization) NMF는 Truncated SVD와 같이 낮은 랭크를 통한 행렬 근사 방식의 변형이다. NMF는 원본 행렬 내의 모든 원소 값이 모두 양수라는것이 보장되면 다음과 같이 좀 더 간단하게 두 개의 기반 양수 행렬로 분해 될 수 있는 기법을 지칭한다. 이렇게 분해된 행렬은 잠재 요소를 특성으로 가지게 된다. 분해 행렬 W는 원본 행에 대해서 이 잠재 요소에 값이 얼마나 되는지에 대응하며, 분해 행렬 H는 이 잠재 요소가 원본 열 (즉, 원본속성)으로 어떻게 구성됐는지를 나타내는 행렬이다. NMF는 SVD와 유사하게 차원 축소를 통한 잠재 요소 도출로 이미지 변환 및 압축, 텍스트의 토픽 도출등의 영역에서 사용되고 있다. 사이킷런에서 NM..
Truncated SVD
·
머신러닝
Truncated SVD 를 이용한 행렬 분해 Truncated SVD는 Sigma 행렬에 있는 대각원소 ,즉 특이값 중 상위 일부 데이터만 추출해 분해하는 방식이다. 이렇게 분해하면 인위적으로 더 작은 차원의 U,∑, V^T를 분해하기 때문에 원본 행렬을 정확하게 원복할 수 없다. 그러나 데이터 정보가 압축되어 분해됨에도 불구하고 상당한 수준으로 원본 행렬을 근사 할 수 있다. Truncated SVD는 넘파이가 아닌 사이파이에서만 지원된다. 사이파이는 SVD뿐만 아니라 Truncated SVE도 지원한다. 일반적으로 사이v파이 SVD는 scipy.linalg.svd를 이용하면되지만 Truncated SVD는 희소 행렬로만 지원 돼서 scipy.sparse.linalg.svds를 이용 해야한다. imp..
SVD
·
머신러닝
SVD SVD 역시 PCA와 유사한 행렬 분해 기법을 이용한다. PCA의 경우 정방행렬 만을 고유벡터로 분해 할 수 있지만, SVD는 정방행렬 뿐만 아니라 행과 열의 크기가 다른 행렬 에도 적용할 수 있다. 일반 적으로 SVD는 m x n 크기의 행렬 A를 다음과 같이 분해하는 것을 의미한다. SVD는 특이값 분해로 불리며, 행렬 U와 V에 속한 벡터는 특이 벡터이며, 모든 특이 벡터는 서로 직교하는 성질을 가진다. ∑는 대각행렬이며, 행렬의 대각에 위치한 값만 0이 아니고 나머지 위치의 값은 모두 0이다. ∑가 위치한 0이 아닌 값이 바로 행렬 A의 특이값이다. 하지만 일반적으로 ∑ 의 비대각인 부분과 대각 원소중에 특이값이 0 인 부분도 모두 제거 하고 제거된 ∑에 대응되는 U와 V원소도 함께 제거해..
ariz1623
코딩의 숲