Machine Learning knn from kaggle Digit Recognizer

knn을 배워서 책의 필기체 검사하는 코드를 토대로 캐글 101 중 필기체 검사를 해보았다.

결국 혼자의 힘으로는 해내지 못했다..

아직 파이썬 기술이 많이 부족하다는 것을 깨닫고

캐글에 올라와있는 스크립트 중에 knn을 사용하고 있는 스크립트를 갖고 돌려봤다..

파이썬이랑 그런지 엄청 오래 걸린다..

또 다른 스크립트들을 보면서 느낀 건 딥러닝이 너무 우세하다는 것이었다..

from numpy import *
import pandas as pd
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score

train_data = pd.read_csv("C:/Users/llewyn/Downloads/train.csv")
test_data = pd.read_csv("C:/Users/llewyn/Downloads/test.csv")

print("train data shape is : ", train_data.values.shape)
print("test data shape is : ", test_data.values.shape)

trainY = ravel(train_data.values[:10000, 0])
trainX = train_data.values[:10000, 1:]
trainX[trainX > 0] = 1print("trainX[0] is :")
print(trainX[0].reshape((28, 28)))

validY = ravel(train_data.values[40000:, 0])
validX = train_data.values[40000:, 1:]
validX[validX > 0] = 1print("validX[0] is :")
print(validX[0].reshape((28, 28)))

testX = test_data.values
testX[testX > 0] = 1print("testX[0] is :")
print(testX[0].reshape((28, 28)))


clf = KNeighborsClassifier(n_neighbors=5)
clf.fit(trainX, trainY)

#cross validationpredictions = clf.predict(validX)
accuracy = accuracy_score(validY, predictions)
print("the accuracy of kNN is : %f" % accuracy)

#predict test datasetpredictions = clf.predict(testX)

#save predictionskNN_Result = pd.DataFrame(predictions, index=range(1, predictions.shape[0]+1))
kNN_Result.columns=["'Labels'"]
kNN_Result.index.name = "'ImageId'"kNN_Result.to_csv("C:/Users/llewyn/Downloads/kNN_Result.csv")
출처 : https://www.kaggle.com/charleswuyy/digit-recognizer/knn4digitrecognition

우선 위의 코드를 보면서 깨달은 점은

1. 검증할 때 모든 데이터를 할 필요 없이 위처럼 1만개의 샘플을 가지고 검증했다.
2. 위의 코드는 교차 검증을 통해 정확도를 높였다.
3. scikit learn의 함수를 통해 코드를 간단히 하였다.
4. 아직 한 참 남았다는 것을 느꼈다..

댓글

이 블로그의 인기 게시물

윈도우 설치에서 파티션 설정 오류(NTFS)

[exploit writing] 1_스택 기반 오버플로우 (1) First

하둡 설치 오류 정리