DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)
dropna
는 pandas
라이브러리에서 제공하는 메서드이다.
데이터프레임에서 결측치(NaN, Null 등)가 있는 행 또는 열을 삭제하는 데 사용된다.
axis: 결측치를 기준으로 제거할 축을 지정한다.
axis=0
(기본값): 결측치가 있는 행을 삭제한다.axis=1
: 결측치가 있는 열을 삭제한다.how: 모든 값이 결측치인지, 일부 값이 결측치인지에 따라 삭제를 결정한다.
how='any'
(기본값): 하나라도 결측치가 있으면 삭제한다.how='all'
: 모든 값이 결측치인 경우에만 삭제한다.thresh: 특정 행 또는 열에서 결측치가 아닌 값의 최소 개수를 지정한다. 지정된 개수 이상이 아닌 경우 삭제된다.
subset: 특정 열이나 행만을 대상으로 결측치를 제거한다. 리스트 형태로 열 이름을 지정한다.
inplace: True
로 설정하면 원본 데이터프레임을 수정한다. False
일 경우(기본값), 수정된 데이터프레임을 반환한다.
data = dataset.dropna(subset=['PM10', 'PM25'])
subset=['PM10', 'PM25']
: PM10
과 PM25
열을 기준으로 결측치가 있는 행을 제거한다. 이 열들 중 하나라도 결측치가 있다면 해당 행이 삭제된다.PM10
또는 PM25
열에 결측치가 포함된 모든 행이 제거되며, 그 결과는 새로운 데이터프레임 data
에 저장된다.data
데이터프레임에는 PM10
과 PM25
열에 결측치가 없는 행만 포함되게 된다.train
과 test
로 분할하는 코드인덱스를 이용해 iloc
메서드를 사용하여 데이터를 분할할 수 있다.
linear regression
self.weights = np.linalg.inv(X.T.dot(X)).dot(X.T).dot(y)
fit 함수:
np.hstack((np.ones((X.shape[0], 1)), X))
를 사용하여 입력 데이터 X
의 앞에 절편에 해당하는 항(모든 값이 1인 열)을 추가합니다.W = (X^T * X)^-1 * X^T * y
로 표현됩니다.bias
가 되고, 나머지 값들은 weights
로 저장됩니다.predict 함수:
fit
함수에서 한 것처럼 입력 데이터 X
의 앞에 절편에 해당하는 항을 추가합니다.X
와 가중치 및 절편을 곱하여 예측값을 계산합니다. y_pred = X.dot(np.hstack((self.bias, self.weights)))
를 통해 수행np.zeros
함수에서 괄호를 두 번 사용하는 이유는 배열의 형상(Shape)을 지정하기 위해서입니다. np.zeros
함수는 주어진 형상에 맞는 배열을 생성합니다. 이 형상은 튜플로 전달되며, 튜플은 여러 차원을 가질 수 있습니다.
np.zeros
의 형상 인자:np.zeros(shape)
: 여기서 shape
는 생성할 배열의 형상을 나타내는 튜플입니다.예를 들어, np.zeros((2, 3))
은 2x3 배열을 생성합니다. 튜플 (2, 3)
은 배열의 행과 열의 개수를 지정하는 것입니다.
1차원 배열:
arr = np.zeros(3)
print(arr) # Output: [0. 0. 0.]
3
은 1차원 배열의 크기를 지정하는 단일 값입니다. 이 값은 튜플 (3,)
로 해석됩니다.2차원 배열:
arr = np.zeros((2, 3))
print(arr)
# Output:
# [[0. 0. 0.]
# [0. 0. 0.]]
2x3
배열이 생성됩니다. shape
인자는 (2, 3)
으로, 2개의 행과 3개의 열을 지정합니다.params['b1']
에 사용된 이유:params['b1']
는 은닉층의 바이어스 벡터입니다. 각 은닉 유닛마다 하나의 바이어스가 필요하며, 여기서 num_hiddens
는 은닉 유닛의 수를 의미합니다.
np.zeros((1, num_hiddens))
는 1xnum_hiddens
크기의 2차원 배열을 생성합니다. 이 배열은 하나의 행(1)과 num_hiddens
개의 열로 구성됩니다.(1, num_hiddens)
는 이 배열이 2차원임을 나타냅니다.이와 같이 2차원 배열로 생성하는 이유는, 행렬 연산 시 일관된 형상을 유지하기 위함입니다. 특히, 입력 데이터와의 행렬 곱에서 바이어스가 올바르게 더해지도록 하기 위해 이 형상으로 지정됩니다.
간단히 말해, np.zeros((1, num_hiddens))
에서 두 개의 괄호는 2차원 배열(1xnum_hiddens
)을 생성하는 데 필요합니다.
accuracy = np.mean(predictions == labels)
는 분류 모델의 정확도를 계산하는 간단한 코드입니다. 이 코드를 이해하기 위해 다음 사항들을 살펴보겠습니다.
predictions == labels
:
predictions
배열과 labels
배열의 요소별 비교를 수행합니다. True
, 다를 경우 False
를 반환합니다.True
와 False
로 구성된 불리언 배열을 생성합니다.np.mean(predictions == labels)
:
True
는 1
로, False
는 0
으로 간주됩니다.np.mean
함수는 불리언 배열의 평균을 계산합니다. 즉, True
값(즉, 맞춘 경우)의 비율을 계산하게 됩니다.import numpy as np
# 가정: 예측 값과 실제 라벨 값이 다음과 같다고 합시다.
predictions = np.array([0, 1, 2, 3, 4])
labels = np.array([0, 1, 2, 2, 4])
# 정확도 계산
accuracy = np.mean(predictions == labels)
print(f'Accuracy: {accuracy:.2f}')
이 예제에서
predictions == labels
는 array([ True, True, True, False, True])
를 반환합니다.np.mean([ True, True, True, False, True])
는 4/5
= 0.8
(즉, 80%)를 반환합니다.따라서 accuracy
는 0.8
또는 80%
가 됩니다.
예측 결과와 실제 라벨 간의 일치도를 평가하여 분류 모델의 정확도를 계산.
전체 데이터 중에서 예측이 얼마나 정확했는지를 비율로 나타내며, 분류 모델의 성능을 간단하게 평가