728x90
분류 전체보기
544

[실습]주성분 분석(Principal Component Analysis, PCA)

1. 데이터 생성 import pandas as pd df = pd.DataFrame(columns=['calory', 'breakfast', 'lunch', 'dinner', 'exercise', 'body_shape']) df.loc[0] = [1200, 1, 0, 0, 2, 'Skinny'] df.loc[1] = [2800, 1, 1, 1, 1, 'Normal'] df.loc[2] = [3500, 2, 2, 1, 0, 'Fat'] df.loc[3] = [1400, 0, 1, 0, 3, 'Skinny'] df.loc[4] = [5000, 2, 2, 2, 0, 'Fat'] df.loc[5] = [1300, 0, 0, 1, 2, 'Skinny'] df.loc[6] = [3000, 1, 0, 1, 1, '..

주성분 분석(Principal Component Analysis, PCA)

주성분 분석(Principal Component Analysis)이란 고차원의 데이터를 저차원의 데이터로 차원 축소하는 알고리즘이다. 주로 고차원의 데이터를 3차원 이하의 데이터로 바꿔서 시각화하는데 많이 사용되며, 유용한 정보만 살려서 적은 메모리에 저장하거나 데이터의 노이즈를 줄이고 싶을 때도 사용하는 알고리즘이다. 이해하기 쉽게 시각화 가능한 2차원 데이터를 1차원 데이터로 축소하는 과정을 알아보겠다. 위와 같은 2차원 공간의 데이터들을 직선상의 데이터로 변환하면 다음과 같다. 보다시피 x1과 x2 선상에 옮기면 중첩되는 데이터가 많이 생긴다. 하지만 1차원 직선 상에 옮겨진 데이터들은 하나도 중첩되지 않고 육안으로 7개의 점을 확인할 수 있다.이를 정보이론 측면에서 해석해본다면 고차원 데이터를 저..

[실습] 단일, 다중 입력 로지스틱 회귀와 소프트맥스(다중 분류 로지스틱 회귀)

단일 입력 로지스틱 회귀 1. Import from keras.models import Sequential from keras.layers import Dense, Activation import numpy as np 2. 모델 생성 #sigmoid(wx+b)의 형태를 갖는 간단한 로지스틱 회귀 구현 model = Sequential() model.add(Dense(input_dim=1, units=1)) # 입력 1개, 출력 1개 model.add(Activation('sigmoid')) # 출력값을 시그모이드에 연결 model.compile(loss='binary_crossentropy', optimizer='sgd', metrics=['binary_accuracy']) 3. 데이터 생성 X = np..

로지스틱 회귀(Logistic Regression)

로지스틱 회귀에 대해 설명하기 전 일단 시그모이드 함수에 대해서 알아보자. 시그모이드 함수는 입력값이 크면 클수록 1이라는 값으로 수렴하고, 입력값이 작을수록 0이라는 값으로 수렴하는 함수이다. 또한 0부터 1까지의 값을 가지는 특성 때문에 시그모이드의 출력값은 확률로도 사용될 수 있고, 출력값이 0.5 이상일 경우에는 참, 0.5 이하일 경우에는 거짓이라고 분류하는 분류 모델로도 사용될 수 있다. 선형 회귀의 입력값(x), 출력값 및 로지스틱 회귀의 출력값에 따른 이진 분류 결과를 표로 정리하면 다음과 같다. [표] 선형 회귀 입력값(x) 선형 회귀 출력값(wx) 로지스틱 회귀 입력값(z) 로지스틱 회귀 출력값(y) 이진 분류 0.5 이상: O, 0.5 이하: X -2 -2 0.12 X -1.5 -1...

[실습] Linear Regression(선형회귀)

필요한 라이브러리를 임포트한다. Import from keras import optimizers from keras.models import Sequential from keras.layers import Dense import numpy as np import pandas as pd import matplotlib.pyplot as plt 데이터 생성 임의의 데이터를 생성한다. X = np.linspace(0, 10, 10) Y = X + np.random.randn(*X.shape) 데이터 조회 어떤 데이터가 만들어졌는지 확인한다. for x, y in zip(X, Y): print((round(x, 1), round(y, 1))) [출력] (0.0, -0.3) (1.1, 1.5) (2.2, 2.9)..

선형회귀(Linear Regression)

선형회귀 모델이란 회귀 계수를 선형적으로 결합할 수 있는 모델을 의미한다. 여기서 회귀 계수란 무엇이고 선형적으로 결합한다는 것은 무슨 말인지 알아보겠다. 회귀 계수 간단하게 설명하면 1차 함수의 기본 형식인 y = ax+b에서 a 와 b를 회귀 계수라고 한다. 선형 결합 선형 결합(linear combination)은 선형 대수의 벡터의 합에서 나온 개념이다. 즉, 서로 다른 a와 b 벡터를 더해 새로운 벡터를 얻는 과정이라고 말할 수 있다. 또한 가중치를 곱한 후 더하는 것도 선형 결합이다. 예를 들어 2a + b, a + 2b와 같은 것도 a 벡터와 b 벡터의 합을 말한다. 다시 선형회귀에 대해 말하면 선형회귀는 회귀 계수들이 선형 결합된 함수를 뜻하여 이 함수를 통해 데이터의 값을 예측하는 것을 ..

[실습] KMeans (K 평균 군집화)

KMeans를 사용한 실습은 간단한 키, 몸무게에 대한 데이터를 생성하여 진행해보았다. Import import pandas as pd import numpy as np from sklearn.cluster import KMeans import matplotlib.pyplot as plt import seaborn as sns 데이터 생성 df = pd.DataFrame(columns=['height', 'weight']) df.loc[0] = [185, 60] df.loc[1] = [180, 60] df.loc[2] = [185, 70] df.loc[3] = [165, 63] df.loc[4] = [155, 68] df.loc[5] = [170, 75] df.loc[6] = [175, 80] df [출..

K 평균 알고리즘(kmean++)

순서 데이터 준비 몇 개의 클래스로 분류할 것인지 설정 클러스터의 최초 중심 설정 데이터를 가장 가까운 클러스터로 지정 클러스터 중심을 클러스터에 속한 데이터들의 가운데 위치로 변경 클러스터 중심이 바뀌지 않을 때까지 4번부터 5번 과정을 반복적으로 수행 1. 데이터 준비 데이터 간의 거리를 사용해 가까운 거리에 있는 데이터끼지 하나의 클래스로 묶는 알고리즘이다. 물론 데이터는 수치화된 데이터여야 한다. 2. 몇 개의 클래스로 분류할 것인가 k는 몇 개의 클래스로 분류할 것인지를 나타내는 변수이다. 3. 클러스터의 최초 중심 설정 k 평균의 표준 알고리즘은 클러스터의 최초 중심을 무작위로 설정한다. 그리고 사이킷런의 k 평균 라이브러리는 기본적으로 kmean++라는 알고리즘을 써서 클러스터의 최초 중심을..

[실습] 랜덤 포레스트(Random Forest)와 앙상블(Ensemble)

랜덤 포레스트 모델을 사용하여 손글씨 분류를 실습해보았다. 랜덤 포레스트 손글씨 분류 Import from sklearn import datasets, tree from sklearn.ensemble import RandomForestClassifier from sklearn.model_selection import cross_val_score, train_test_split from sklearn.metrics import accuracy_score import matplotlib.pyplot as plt import pandas as pd import numpy as np 데이터 불러오기 mnist = datasets.load_digits() features, labels = mnist.data, m..

728x90