Ch. 03(03-1) 2번 문제 출력 그래프 인증샷
# k-최근접 이웃 회귀 객체를 만듭니다.
knr = KNeighborsRegressor()
# 5에서 45까지 x 좌표를 만듭니다.
x = np.arange(5, 45).reshape(-1, 1)
# n = 1, 5, 10일 때 예측 결과를 그래프로 그립니다.
for n in [1 , 5, 10]:
# 모델을 훈련합니다.
knr.n_neighbors = n;
knr.fit(train_input, train_target)
# 지정한 범위 x에 대한 예측을 구합니다.
prediction = knr.predict(x)
plt.scatter(train_input, train_target)
plt.plot(x, prediction)
plt.title('n_neighbors = {}'.format(n))
plt.xlabel('length')
plt.ylabel('weight')
plt.show()
모델 파라미터에 대해 설명하기
파라미터(Parameter)
- 모델의 구성 요소이자 데이터로부터 학습되는 것
- 예시) 선형 회귀 모델(Linear Regression)
- 예시) 신경망 : Feed-forward Network
파라미터는 매개변수이며 모델 내부에서 결정되는 변수입니다.
하이퍼 파라미터는 모델링을 할 때 사용자가 직접 설정해주는 값을 뜻합니다. , SVM의 C, SIGMA 값 KNN 에 사용하는 K 값는 사용자가 직접 설정 해야하는 값은 하이퍼 파라미터입니다.
회귀는 임의의 수치를 예측하는 문제입니다. 따라서 타깃값도 임의의 수치가 됩니다.
k-최근접 이웃 회귀는 k-최근접 이웃 알고리즘을 사용해 회귀를 풉니다. 가장 가까운 이웃 샘플을 찾고 이 샘플들의 타깃값을 예측으로 삼습니다.
결정계수(R^2)는 대표적인 회귀 문제의 성능 측정 도구입니다. 1에 가까울수록 좋고, 0에 가깝다면 성능이 나쁜 모델입니다.
과대적합은 모델의 훈련 세트 성능이 테스트 세트 성능보다 훨씬 높을 때 일어납니다. 모델이 훈련 세트에 너무 집착해서 데이터에 내재된 거시적인 패턴을 감지하지 못합니다. 과소적합은 이와 반대입니다. 훈련 세트와 테스트 세트 성능이 모두 동일하게 낮거나 테스트 세트 성능이 오히려 더 높을 때 일어납니다. 이런 경우 더 복잡한 모델을 사용해 훈련 세트에 잘 맞는 모델을 만들어야 합니다.
선형 회귀는 특성과 타깃 사이에 관계를 가장 잘 나타내는 선형 방정식을 찾습니다. 특성이 하나면 직선 방정식이 됩니다. 선형 회귀가 찾은 특성과 타깃 사이의 관계는 선형 방정식의 계수 또는 가중치에 저장됩니다. 머신러닝에서 종종 가중치는 방정식의 기울기와 절편을 모두 의미하는 경우가 많습니다.
모델 파라미터는 선형 회귀가 찾은 가중치처럼 머신러닝 모델이 특성에서 학습한 파라미터를 말합니다.
다항 회귀는 다항식을 사용하여 특성과 타깃 사이의 관계를 나타냅니다. 이 함수는 비선형일 수 있지만 여전히 선형 회귀로 표현할 수 있습니다.
다중 회귀는 여러 개의 특성을 사용하는 회귀 모델입니다. 특성이 많으면 선형 모델은 강력한 성능을 발휘합니다.
특성 공학은 주어진 특성을 조합하여 새로운 특성을 만드는 일련의 작업 과정입니다.
릿지는 규제가 있는 선형 회귀 모델 중 하나이며 선형 모델의 계수를 작게 만들어 과대적합을 완화시킵니다. 릿지는 비교적 효과가 좋아 널리 사용하는 규제 방법입니다.
라쏘는 또 다른 규제가 있는 선형 회귀 모델입니다. 릿지와 달리 계수 값을 아예 0으로 만들 수도 있습니다.
하이퍼파라미터는 머신러닝 알고리즘이 학습하지 않는 파라미터입니다. 이런 파라미터는 사람이 사전에 지정해야 합니다. 대표적으로 릿지와 라쏘의 규제 강도 alpha 파라미터입니다.
KNeighborsRegressor는 k-최근접 이웃 회귀 모델을 만드는 사이킷런 클래스입니다. n_neighbors 매개변수로 이웃의 개수를 지정합니다. 기본값은 5입니다. 다른 매개변수는 KNeighborsClassifier 클래스와 거의 동일합니다.
mean_absolute_error()는 회귀 모델의 평균 절댓값 오차를 계산합니다. 첫 번째 매개변수는 타깃, 두 번째 매개변수는 예측값을 전달합니다. 이와 비슷한 함수로는 평균 제곱 오차를 계산하는 mean_squared_error()가 있습니다. 이 함수는 타깃과 예측을 뺀 값을 제곱한 다음 전체 샘플에 대해 평균한 값을 반환합니다.
LinearRegression은 사이킷런의 선형 회귀 클래스입니다. fit_intercept 매개변수를 False로 지정하면 절편을 학습하지 않습니다. 이 매개변수의 기본은 True입니다. 학습된 모델의 coef_ 속성은 특성에 대한 계수를 포함한 배열입니다. 즉 이 배열의 크기는 특성의 개수와 같습니다. intercept_ 속성에는 절편이 저장되어 있습니다.
PolynomialFeatures는 주어진 특성을 조합하여 새로운 특성을 만듭니다. degree는 최고 차수를 지정합니다. 기본값은 2입니다. interaction_only가 True이면 거듭제곱 항은 제외되고 특성 간의 곱셈 항만 추가됩니다. 기본값은 False입니다. include_bias가 False이면 절편을 위한 특성을 추가하지 않습니다. 기본값은 True입니다.
Ridge는 규제가 있는 회귀 알고리즘인 릿지 회구 모델을 훈련합니다. alpha 매개 변수로 규제의 강도를 조절합니다. alpha 값이 클수록 규제가 세집니다. 기본값은 1입니다. solver 매개변수에 최적의 모델을 찾기 위한 방법을 지정할 수 있습니다. 기본값은 'auto'이며 데이터에 따라 자동으로 선택됩니다. 사이킷런 0.17 버전에 추가된 'sag'는 확률절 평균 경사 하강법 알고리즘으로 특성과 샘플 수가 많을 때에 성능이 빠르고 좋습니다. 사이킷런 0.19 버전에는 'sag'의 개선 버전인 'saga'일 때 넘파이 난수 시드 값을 지정할 수 있습니다.
Lasso는 규제가 있는 회귀 알고리즘인 라쏘 회귀 모델을 훈련합니다. 이 클래스는 최적의 모데을 찾기 위해 좌표축을 따라 최적화를 수행해가는 좌표 하강법을 사용합니다. alpha와 random_state 매개변수는 Ridge 클래스와 동일합니다. max_iter는 알고리즘의 수행 반복 횟수를 지정합니다. 기본값은 1000입니다.
reshape()는 배열의 크기를 바꾸는 메서드입니다. 바꾸고자 하는 배열의 크기를 매개변수로 전달합니다. 바꾸기 전후의 배열 원소 개수는 동일해야 합니다. 넘파이는 종종 배열의 메서드와 동일한 함수를 별도로 제공합니다. 이때 함수의 첫 번째 매개변수는 바꾸고자 하는 배열입니다. 예를 들어 test_array.reshape(2, 2)는 np.reshape(test_array, (2, 2))와 같이 바꿔 쓸 수 있습니다.
read_csv()는 CSV 파일을 로컬 컴퓨터나 인터넷에서 읽어 판다스 데이터 프레임으로 변환하는 함수입니다. 이 함수는 매우 많은 매개변수를 제공합니다. 그중에 자주 사용하는 매개변수는 다음과 같습니다.
sep는 CSV 파일의 구분자를 지정합니다. 기본값은 '콤마(,)'입니다.
HEADER에 데이터 프레임의 열 이름으로 사용할 CSV 파일의 행 번호를 지정합니다. 기본적으로 첫 번째 행을 열 이름으로 사용합니다. SKIPROWS는 파일에서 읽기 전에 건너뛸 행의 개수를 지정합니다. NROWS는 파일에서 읽을 행의 개수를 지정합니다.
혼공단 머신러닝+딥러닝 4주차 미션 - Chapter 05 (0) | 2022.02.24 |
---|---|
혼공단 머신러닝+딥러닝 3주차 미션 - Chapter 04 (0) | 2022.02.22 |
혼공단 자바스크립트 6주차 미션 - Chapter 07 ~ 08 (0) | 2022.02.22 |
혼공단 자바스크립트 5주차 미션 - Chapter 06 (1) | 2022.02.13 |
혼공단 머신러닝+딥러닝 1주차 미션 - Chapter 01 ~ 02 (0) | 2022.02.09 |
댓글 영역