Python/머신러닝-딥러닝
(머신러닝)타이타닉 데이터 셋으로 보는 Classification(분류)_3. KNN (K-최근접 이웃)
하방주인장
2023. 6. 6. 13:12
목차
0. KNN
K-Nearest Neighbor(KNN)란 가장 모여있는 어떤 이웃과 가까이 근접해있는지를 통해 라벨(정답)을 분류하는 방식으로, Classification(분류)에 사용되는 간단한 supervised machine learning(지도학습)이다. 간단한 그림으로 설명하자면,
KNN은 '새로 들어온 ★이 ■ 그룹의 데이터와 가장 가까우니 ★은 ■ 그룹이다.' 라고 분류하는 방법으로 여기에서의 K는 몇 번째로 가까운 데이터까지 살펴볼 것인가를 정한 숫자이다.
1. Modeling
1-1. KNN_3
1. feature 6
feature_6 = ['Age', 'Fare', 'Parch', 'Pclass', 'Sex_num', 'SibSp']
X_train = train_data[feature_6]
# KNN_3 생성
knn_3 = KNeighborsClassifier(n_neighbors=3)
# train set으로 학습
knn_3.fit(X_train.values, y_train)
# 생성한 knn_3로 train set 예측
y_pred = knn_3.predict(X_train)
confusion_matrix(y_train, y_pred)
# array([[492, 57],
# [ 85, 257]])
accuracy_score(y_train, y_pred)
# 0.8406285072951739
# test set으로 예측하여 평가하기
X_test = test_data[feature_6]
model1 = knn_3.predict(X_test)
knn3_model1 = pd.DataFrame()
knn3_model1['PassengerId'] = test_data['PassengerId']
knn3_model1['Survived'] = model1
knn3_model1.to_csv('result/knn3_feature_6.csv', index=False)
=> 0.62679
2. feauter 3
feature_3 = ['Age', 'Sex_num', 'Pclass']
X_train = train_data[feature_3]
# KNN_3 생성
knn_3 = KNeighborsClassifier(n_neighbors=3)
# train set으로 학습
knn_3.fit(X_train.values, y_train)
# 생성한 knn_3로 train set 예측
y_pred = knn_3.predict(X_train)
confusion_matrix(y_train, y_pred)
# array([[492, 57],
# [ 85, 257]])
accuracy_score(y_train, y_pred)
# 0.8406285072951739
# test set으로 예측하여 평가하기
X_test = test_data[feature_3]
model1 = knn_3.predict(X_test)
knn3_model1 = pd.DataFrame()
knn3_model1['PassengerId'] = test_data['PassengerId']
knn3_model1['Survived'] = model1
knn3_model1.to_csv('result/knn3_feature_3.csv', index=False)
=> 0.73684
1-2. KNN_5
1. feature 6
X_train = train_data[feature_6]
knn_5 = KNeighborsClassifier(n_neighbors=5)
knn_5.fit(X_train.values, y_train)
y_pred = knn_5.predict(X_train)
confusion_matrix(y_train, y_pred), accuracy_score(y_train, y_pred)
# (array([[483, 66],
# [102, 240]], dtype=int64),
# 0.8114478114478114)
X_test = test_data[feature_6]
model = knn_5.predict(X_test)
knn5_model = pd.DataFrame()
knn5_model['PassengerId'] = test_data['PassengerId']
knn5_model['Survived'] = model
knn5_model.to_csv('result/knn5_feature_6.csv', index=False)
=> 0.64114
2. feauter 3
X_train = train_data[feature_3]
knn_5 = KNeighborsClassifier(n_neighbors=5)
knn_5.fit(X_train.values, y_train)
y_pred = knn_5.predict(X_train)
confusion_matrix(y_train, y_pred), accuracy_score(y_train, y_pred)
# (array([[492, 57],
# [ 92, 250]], dtype=int64),
# 0.8327721661054994)
X_test = test_data[feature_3]
model = knn_5.predict(X_test)
knn5_model = pd.DataFrame()
knn5_model['PassengerId'] = test_data['PassengerId']
knn5_model['Survived'] = model
knn5_model.to_csv('result/knn5_feature_3.csv', index=False)
=> 0.70334