[Kaggle] Drug Classification 데이터셋을 이용한 KNN 분류 실습
2022. 1. 16. 21:29ㆍPython
반응형
https://www.kaggle.com/prathamtripathi/drug-classification
Drug Classification
This database contains information about certain drug types.
www.kaggle.com
위 사이트서 새 Kaggle Notebook을 만들면 아래와 같이 데이터셋을 쓸 수 있다.
path = "/kaggle/input/drug-classification/drug200.csv"
df = pd.read_csv(path)
header = df.columns
본문에서 유추할 수 있듯이 Drug label이 우리가 예측해야할 데이터다. 따라서, 데이터 프레임에서 Drug 부분을 Target으로 떼어내야 한다.
feature_names = ['Age','Sex','BP','Cholesterol','Na_to_K']
data = df[feature_names].to_numpy()
target = df[['Drug']].to_numpy()
다만 여기서 우리는 One-Hot-Encoding을 문자열 데이터에 적용하여 숫자 데이터로 바꾸어 주어야 한다. Scikit-Learn 모델에서 요구하기도 하고, 이것을 하는 이유에는 더 나은 표현성이 있다. 가령, 일반적인 문자가 어떤 계단적인 표현(low, normal, high 같은 것)이라면, 이것을 오름차순의 정수로 변환하면 그래프로 표기할때도 동일하게 그 언어의 표현이 적용된다.
one_hot_encoding_char = {"F":0, "M":1, "NORMAL":0, "HIGH":1,"LOW":2}
def one_hot_encode(arr, char):
result = arr
for i in range(0, arr.size):
result[i] = char[arr[i]]
return result
data[:,1] = one_hot_encode(data[:,1], one_hot_encoding_char)
data[:,2] = one_hot_encode(data[:,2], one_hot_encoding_char)
data[:,3] = one_hot_encode(data[:,3], one_hot_encoding_char)
Scikit learn의 train test split 메서드를 사용하여 훈련용 데이터셋과 예측 확인용 데이터셋으로 구분하자.
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(data, target, random_state=0)
그리고 적당히 이웃수를 조정한 모델을 만들어 적용한다.
from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier(n_neighbors=3)
knn.fit(X_train, y_train)
이후 예측한 값과 실제 값이 같은지 비교하는 코드를 짜서 보자.
predicted = knn.predict(X_test)
score = 0
for i in range(predicted.shape[0]):
boolean = predicted[i]==y_test[i]
print("{} == {} ? {}".format(predicted[i], y_test[i], boolean))
if(boolean == True):
score+=1
print("Score is {}%".format(score / predicted.shape[0] * 100))
반응형
'Python' 카테고리의 다른 글
Anaconda 환경 Pyinstaller Numpy, Pandas, SSL 문제 해결법 (0) | 2024.01.31 |
---|---|
손실함수에 대해서 (0) | 2022.07.24 |
The self COVID-19 diagnosis site of South Korea and make it it do some processing automatically by python. (0) | 2020.07.24 |
[파이썬][딥러닝] 3층 순방향 신경망 구현하기 (0) | 2020.03.31 |
[파이썬][딥러닝] 퍼셉트론 - 활성화 함수 (0) | 2020.03.28 |