데이터로부터 거리가 가장 가까운 k개의 다른 이웃 데이터의 레이블을 참조하여 분류하는 알고리즘
여기서 이웃 데이터들은 거리(distance)를 기반으로 판단
장점
단점
x1 = np.arange(1,11)# 1부터 10까지의 숫자를 생성
x = x1.reshape(-1,1)#x1 배열을 2차원 배열로 재구성.
#-1은 해당 차원의 크기를 자동으로 계산하라는 의미이며, 1은 하나의 열(column)이 있음을 나타냄
y = np.arange(1,11)*5#1부터 10까지의 숫자를 생성한 후 각각에 5를 곱하여 y 배열을 생성
KNN
knn_re=KNeighborsRegressor(n_neighbors=2).fit(x,y)
KNeighborsRegressor 모델을 생성하고, n_neighbors 매개변수를 2로 설정하여 이웃의 수를 2로 지정한다. 그런 다음, fit() 메서드를 호출하여 모델을 입력 데이터 x와 대응하는 출력 데이터 y에 맞춘다.
이 매개변수들을 적절히 설정하여 KNN 모델을 조정하면, 모델의 성능을 향상시킬 수 있다.
난수 생성기에 동일한 시드를 성정하여 난수 생성 후 노이즈를 추가한다
그 후 n_neighbors = 5로 설절하여 모델을 만들고 시각화 하면
from sklearn.neighbors import KNeighborsRegressor
X,y = fetch_california_housing(return_X_y=True)#캘리포니아 주택가격 데이터셋 로드
데이터를 train,test로 나눈 후 다양한 k값에 대해 KNN 회귀 모델을 평가하여 최적의 k값을 찾기
for k in k_values:
knn = KNeighborsRegressor(n_neighbors=k)
scores = cross_val_score(knn, X_train, y_train, cv=3, scoring='neg_mean_squared_error')
mse_scores.append(-scores.mean())
각 k값에 대해 KNN 회귀 모델을 생성하고 교차 검증을 수행.
교차 검증은 훈련 세트를 여러 부분으로 나누어 모델을 평가하는 과정.
여기서는 3-fold cross-validation을 사용하고, 평균 제곱 오차의 음수 값을 계산하여 mse_scores 리스트에 저장.
그 후 MSE가 가장 낮은 k값을 찾고 이를 출력.
나온 결과값을 시각화하면
적정 k 값을 찾은 후 MSE가 다시 상승하는 것을 볼 수 있다
-> 훈련 데이터와의 과적합으로 인하여 MSE가 다시 증가하는 것
load_iris 데이터로 분류 작업 진행
train test로 나눠서 훈련 진행
각 K값에 대해 단순히 테스트 세트의 정확도를 측정하고 시각화
교차 검증을 통해 K값에 따른 모델의 성능을 평가하고 최적의 K값을 찾기
그리드 서치를 수행
훈련 데이터(X_train, y_train)를 사용하여 각 하이퍼파라미터 조합에 대해 교차 검증을 수행하고 최적의 조합을 찾기
최적의 하이퍼 파라미터: {'n_neighbors': 5, 'weights': 'uniform'}
최적의 스토어: 0.980952380952381
캘리포니아 주택 데이터셋을 사용하여 이상치를 탐지하는 것은 다소 복잡할 수 있습니다. 일반적으로 이상치는 데이터에서 벗어난 극단적인 값으로 정의되며, 이러한 값은 데이터 분포의 패턴을 깨뜨릴 수 있습니다. 이상치를 탐지하고 처리하는 방법에는 여러 가지가 있습니다. 이상치 탐지를 위한 간단한 방법 중 하나는 박스 플롯(box plot)이나 히스토그램과 같은 시각화 도구를 사용하여 데이터의 분포를 시각적으로 탐색하는 것입니다.
하지만 주어진 데이터셋이 캘리포니아 주택 데이터셋인 경우, 이상치를 직접적으로 확인하기는 어려울 수 있습니다. 일반적으로 이러한 데이터셋은 주택 가격과 관련된 여러 특성을 포함하며, 이러한 특성 간의 관계와 분포를 분석하여 이상치를 식별하는 것이 일반적입니다. 또한 주택 가격 데이터는 종속 변수로 사용되기 때문에 이상치를 식별하고 처리하는 데 특히 주의를 기울여야 합니다.
이상치를 탐지하고 처리하는 방법에는 여러 가지가 있으며, 일반적으로는 다음과 같은 접근 방법이 사용됩니다:
캘리포니아 주택 데이터셋에서 중간 소득(MedInc) 특성을 사용하여 KNN을 이용하여 이상치를 탐지
거리 기준으로 이상치 점수 계산
이상치 점수가 특정 기준을 넘으면 이상치로 판단
여기선 상위 5%를 이상치로 간주
시각화
그래프를 보면 중위 소득이 대부분 2-8 사이 분포하고 있고, 그때의 주택 가격은 0-5까지 고르게 분포하고 있는 것을 볼 수 있다.
이상치에 경우 중위소득 1과 8-14 사이에 분포하고 있다. 특히 주택가격이 높은 곳일수록 이상치가 많이 분포하고 있는 걸을 알 수 있다.
소득이 클수록 집값 또한 등가하는 것을 알 수 있다.
선형회귀분석(Linear_regression) (2) | 2024.05.25 |
---|---|
회귀분석 개념 공부 (0) | 2024.05.19 |
임계점평가지표 (1) | 2024.03.31 |
머신러닝, 평가지표 (2) | 2024.03.24 |
교차검증, (k-fold cross validation) (1) | 2024.03.24 |