728x90
- scikit-learn
- 파이썬에서 쉽게 사용할 수 있는 머신러닝 프레임 워크, 라이브러리
- 회귀, 분류, 군집, 차원축소, 특성공학, 전처리, 교차검증, 파이프라인 등 머신러닝에 필요한 기능을 갖춤
- 학습을 위한 샘플 데이터 제공
- KNN(K-Nearest Neighbors, k-최근접 이웃 알고리즘)
- 새로운 데이터 포인트와 가장 가까운 훈련 데이터셋의 데이터 포인트를 찾아 예측
- 이웃이 적을 수록 모델의 복잡도 상승 → 과대적합
- 이웃이 전체 데이터의 개수와 같아지면 항상 가장 많은 클래스로 예측 → 과소적합
- k값에 따라 가까운 이웃의 수가 결정
- 분류와 회귀에 모두 사용 가능(지도학습)
- 결정경계(Decision Boundary) : 클래스 분류하는 경계
- 데이터 포인트(sample) 사이 거리 값 측정 방법 : 유클리디언 거리 공식(EUclidean Distance)
- 거리를 측정하기 때문에 같은 scale을 같도록 정규화 필요
- 장점
- 이해하기 매우 쉽고 조정없이도 좋은 성능 발휘하는 모델
- 단점
- 훈련 데이터 세트가 크면 예측이 느림
- 수 백개 이상의 많은 특성을 가진 데이터 세트와 특성 값 대부분이 0인 희소(sparse)한 데이터 세트에는 잘 동작하지 않음
- 전처리 과정이 중요
- AND 연산 : 데이터의 모든 값이 1이여야 1을 반환
import pandas as pd
1. Data Collection
data1 = [0,0,0]
data2 = [1,0,0]
data3 = [0,1,0]
data4 = [1,1,1]
data = [data1, data2, data3, data4]
input_df = pd.DataFrame(data, columns=['feature1', 'feature2', 'target'])
input_df
2. Data Perparation
X_train = input_df.loc[:, 'feature1':'feature2']
y_train = input_df.loc[:, 'target']
X_train
y_train
3. Choose a model
from sklearn.neighbors import KNeighborsClassifier
knn_model = KNeighborsClassifier(n_neighbors = 3)
4. Train the model
knn_model.fit(X_train, y_train)
5. Evaluate the model
X_test = [[0,0], [1,1], [0,1], [1,0]]
y_test = [0, 1, 0, 0]
knn_model.score(X_test, y_test)
6. Hyperparameter tuning
knn_model = KNeighborsClassifier(n_neighbors = 1)
knn_model.fit(X_train, y_train)
knn_model.score(X_test, y_test)
7. Make predictions
data = [[0,1], [0,0], [1,1], [1,0]]
knn_model.predict(data)
- XOR 연산 : 두 입력값이 같으면 0, 다르면 1을 반환
import pandas as pd
1. Data Collection
data = [[0,0,0],
[0,1,1],
[1,0,1],
[1,1,0]]
df = pd.DataFrame(data, columns=['A','B','XOR'])
df
2. Data Preparation
X_train = df.loc[:, :'B']
y_train = df.loc[:, 'XOR']
3. Choose a model
from sklearn.neighbors import KNeighborsClassifier
knn_model = KNeighborsClassifier(n_neighbors = 1)
4. Train the model
knn_model.fit(X_train, y_train)
5. Evaluate the model
answer = [0,1,1,0]
metrics.accuracy_score(answer, pre)
6. Make predictions
data = [[0,0],
[0,1],
[1,0],
[1,1]]
pre = knn_model.predict(data)
pre
728x90
'AI > Machine Learning' 카테고리의 다른 글
[ML] 경사하강법- 미분 (0) | 2021.05.10 |
---|---|
[ML] 붓꽃의 품종 분류(지도학습 / 분류) (0) | 2021.04.29 |
[ML] KNN - bmi model (0) | 2021.04.29 |
[ML] 일반화, 과대적합, 과소적합 (0) | 2021.04.29 |
[ML] 머신러닝 기초 (0) | 2021.04.29 |
댓글