목록분류 전체보기 (767)
우노
스케일링이란? 머신러닝을 위한 데이터셋을 정제할 때, 특성별로 데이터의 스케일이 다르다면 어떤 일이 벌어질까요? 예를 들어, X1은 0 부터 1 사이의 값을 갖고 X2 는 1000000 부터 1000000000000 사이의 값을 갖고 y 는 1000000 부터 100000000 사이의 값을 갖는다고 가정한다면 X1 특성은 y 를 예측하는데 큰 영향을 주지 않는 것으로 생각할 수 있습니다. 때문에 특성별로 데이터의 스케일이 다르다면, 머신러닝이 잘 동작하지 않을 수 있습니다. 따라서, 저희는 데이터 스케일링 작업을 통해, 모든 특성의 범위(또는 분포)를 같게 만들어줘야합니다. 주로 사용되는 스케일링 개념 Standardization (표준화) 특성들의 평균을 0, 분산을 1 로 스케일링하는 것입니다. 즉,..
데이터 살펴보기 머신러닝 모델을 만들기 전에, 해당 문제가 머신러닝 없이도 풀 수 있는 문제는 아닌지, 혹은 필요한 정보가 누락되지는 않았는지, 데이터를 조사해보는 것이 좋습니다. 또한, 데이터를 탐색하면서 비정상적인 값이나 특이한 값들을 찾을 수도 있습니다. 데이터를 탐색하는 가장 좋은 방법 중 하나는 시각화이며, 시각화 방법 중 하나는 산점도 행렬(scatter matrix)입니다. 산점도 행렬(scatter matrix)은 데이터의 특성 중 하나를 x 축에 놓고 다른 특성 중 하나를 y 축에 놓아, 두 특성의 관계를 하나의 점으로 나타내는 그래프입니다. 즉, 2개의 특성을 묶어 2차원으로 표현하므로, 모든 특성의 관계가 나타나는 것이 아닌, 짝지어진 두 특성의 관계만 나타내게 됩니다. 따라서, 특성..
Epoch 모든 훈련 데이터셋을 학습하는 횟수입니다. 주의 사항 너무 많은 Epoch는 overfitting의 위험이 있습니다. Batch Size 훈련 데이터셋 중 몇 개의 데이터를 묶어서 가중치 값을 갱신할 것인지에 대한 정보입니다. 위 그림처럼, 훈련 데이터셋의 개수는 1000개이며, 1 Epoch를 진행한다고 했을 때 Batch Size를 100으로 설정하면 총 10번의 갱신 과정을 거칩니다. 주의 사항 Batch Size는 메모리에 적재시킬 수 있을 만큼의 Size로 정하는게 좋습니다. Batch Size를 너무 작게하면 iteration이 증가하여 학습시간 (forward + backward propagation)이 오래 걸릴 수 있습니다. Iterations 한 Epoch를 진행하기 위해, ..
경사하강법이란? 비용 함수를 최소화하는 매개 변수를 찾기 위해 사용되는 알고리즘입니다. 경사하강법의 대략적인 순서는 다음과 같습니다. 임의의 매개변수를 정해 비용함수의 시작지점(x축) 으로 지정합니다. 해당 매개변수로 모델의 오차를 구한 다음, 비용함수의 시작지점(y축) 으로 지정합니다. 시작 지점에서 다음 지점으로 갈 방향을 정하기 위해, 시작 지점의 기울기를 계산합니다. 기울기(Gradient)와 보폭(Learning rate)를 사용해 다음 지점으로 이동합니다. 위의 과정을 최소값에 도달 할 때 까지 반복합니다. 배치 사이즈란? 기울기 업데이트 시, 훈련세트를 몇 개씩 묶어서 사용할 지에 대한 정보입니다. 훈련세트의 사이즈가 크다면, 전체 훈련세트를 한 번에 처리해 기울기를 업데이트 하는 것 보단,..
케라스로 구현하는 단순 선형 회귀 튜토리얼 from tensorflow.keras.models import Sequential # keras의 Sequential()을 임포트 from tensorflow.keras.layers import Dense # keras의 Dense()를 임포트 from tensorflow.keras import optimizers # keras의 옵티마이저를 임포트 import numpy as np # Numpy를 임포트 X=np.array([1,2,3,4,5,6,7,8,9]) # 공부하는 시간 y=np.array([11,22,33,44,53,66,77,87,95]) # 각 공부하는 시간에 맵핑되는 성적 # Sequential()로 model이라는 이름의 모델 객체을 만듭니다..
회귀 분석 (Regression Analysis) 데이터의 연속적인 흐름을 파악해 입력이 들어왔을 때 float 형태의 값을 예측하는 것이다. 예 : 공부 시간을 바탕으로 한 최종 시험 점수 예측 즉, 데이터의 분포가 하나의 선 또는 면 안에 표현될 수 있는 최적의 모델을 찾는 것이다. 모델(가설)을 정의 후 비용함수(Cost Function)로 실제 값와 예측값의 오차를 구한 뒤 이를 최적화하며 학습을 진행한다. 모델(가설) 선형 회귀 (Linear Regression) H(x) = Wx + b 특성(입력값)이 하나이다. 다중 선형 회귀 (Multiple Linear Regression) H(x) = W1x1 + W2x2 + W3x3 + b 여러 특성(입력값)을 사용하여 좀 더 정교한 모델을 제시 H(..
Matplotlib 기초 https://wooono.tistory.com/89 scatter() 함수를 사용해 3차원 산점도(3D Scatter plot) 그리기 예제 코드 import matplotlib.pyplot as plt import numpy as np # 3차원 그래프를 그리기 위해서 from mpl_toolkits.mplot3d import Axes3D를 추가해줍니다. from mpl_toolkits.mplot3d import Axes3D # 0 ~ 10 까지 랜덤으로 20개씩 생성 x = [np.random.randint(10) for _ in range(20) ] y = [np.random.randint(10) for _ in range(20) ] z = [np.random.randin..
Matplotlib이란? Python 라이브러리 중 하나로 그림이나 도형을 그려준다. 데이터 입력을 위해 numpy나 scipy와 같이 사용하며, MATLAB 대신 쓸 수도 있다. 선 그래프 (line chart) 하나의 figure 안에 하나의 line 그리기 from matplotlib import pyplot as plt # x,y 축 데이터 years = [1950, 1960, 1970, 1980, 1990, 2000, 2010] gdp = [300.2, 543.3, 1075.9, 2862.5, 5979.6, 10289.7, 14958.3] # 표 내부 설정 plt.plot(years, gdp, color='green', marker='o', linestyle='..
K-최근접 이웃 알고리즘이란? K-최근접 이웃 (K-Nearest Neighbor) 알고리즘은 지도학습 알고리즘 중 하나입니다. 새로운 데이터를 입력 받았을 때, 해당 데이터와 가장 가까이에 있는 k개의 데이터를 확인해, 새로운 데이터의 특성을 파악하는 방법입니다. 아래 그림으로 자세히 살펴보겠습니다. 저 물음표에는 세모와 동그라미 중, 무엇이 들어갈까요? 최근접 이웃 알고리즘은 "?"의 주변에 있는 것이 동그라미이기 때문에 "?"를 동그라미라고 판단하는 알고리즘입니다. 매우 간단하고 직관적인 알고리즘이지만, 단순히 "?"를 가장 가까이 있는 것과 같게 선택하는 것이 옳은 분류가 될까요? 조금만 더 넓혀서 본다면 뭔가 부적절하다는 것이 느껴집니다. 따라서, 단순히 "주변에 가장 가까이 있는게 무엇인가?"..
행 삭제 drop() axis가 '0' 이라면 행 삭제, '1' 이라면 열 삭제 입니다. (default : 0) # index가 0인 행만 삭제 df = df.drop(index=0, axis=0) # index가 0,1,2인 행 삭제 df = df.drop(index=[0, 1, 2], axis=0) 조건문 사용 # 열 값이 1024이 아닌 행(index)만 저장 df = df[df['col'] != 1024] 열 삭제 drop() # 'col1', 'col2' 열 삭제 df = df.drop(columns=['col1', 'col2'], axis=1)