train_test_split(cancer.data, cancer.target, stratify=cancer.target)
#strtify : classification에서 중요함 (비율 유지)
generalization : 목표
overfitting : 너무 복잡한 모델을 선택 -- 너무 복잡해지면 training data에 너무 민감해져 새로운 데이터에 일반화안됨
- 많은 데이터로 극복(다양성을 키워줌)
underfitting : 너무 간단한 모델 선택됨
np.bincount(cancer.target) : 빈도수 파악
interaction term 추가 : feature engineering
KNN
K 최근접 이웃 분류
from sklearn.neighbors import KNeighborsClassifier
clf = KNeighborsClassifier(n_neighbors=3)
clf.fit(X_train, y_train)
clf.predict(X_test)
clf.score(X_test, y_test)
fig, axes = plt.subplot(1,3, figsize=(10,3)) # 1*3 subplot자리 만듦
for loop 사용
ax.set_title(f'neighbors') #그래프 상단에 표시됨
ax.set_xlabel()
ax.set_ylabel()
ax[0].legent(loc=2)
------------------------------
그래프 한개
plt.ylabel("acc")
plt.xlabel("acc")
이웃의 수를 늘릴수록 결정 경계는 부드러워짐(더 단순한 모델이 됨) - data를 많이 봄
but 모델이 너무 단순해지면 underfitting 일어남 - 테스트 정확도 감소
K 최근접 이웃 회귀
이웃 간의 평균이 예측값이 됨
regression에서 score를 사용한다면 score는 R^2를 반환(예측의 적합도를 측정)
KNN에서는 k를 홀수로 지정(동률이 나올 수 있음)
중요매개변수 : 데이터 포인트 사이의 거리를 재는 방법(distance), 이웃의 수(uniform)
eg = KNeighborsRegressor(n_neighbors=3, weights='distance') #defalut = uniform
training set이 너무 크면 예측 느림, 잘동작안함, 희소한 데이터셋에서도 잘동작못함
'머신러닝' 카테고리의 다른 글
| MLP (0) | 2021.07.21 |
|---|---|
| svm (0) | 2021.07.15 |
| tree (0) | 2021.07.15 |
| linear model (2) | 2021.07.03 |
| ML_introduction (0) | 2021.06.29 |