2016. 11. 18. 14:19ㆍApplication Programming/머신러닝
1)Error rate
알고리즘이나 데이터 셋 둘 중 하나라도 다르다면 즉 '모든 조건이 같지 않다'면 분류기의 수행 능력이 달라진다. 각각의 경우에 대해 성능을 수치로 평가하고 싶다면 아주 간단한 방법이 있다.
우리가 이미 답을 알고있는 데이터를 분류기에게는 답을 가린 채 건네준 뒤 예측하게 한다. 분류기가 구해낸 답과 실제 답이 얼마나 다른지를 비율로 계산해 내면 그것이 바로 error rate이며 이 수치로 분류기의 성능을 나타낼 수 있다.
error rate = (분류기가 잘못된 값으로 예상해 낸 경우의 수)/(전체 테스트의 개수)
2)텍스트 파일로부터 데이터 파싱하기
앞의 kNN 포스팅에 이어서 이번에는 좀 더 큰 데이터에 알고리즘을 적용하려고 한다. 실습용 데이터를 찾는 것은 어렵지 않지만 책에서 제공하는 예제를 보고 해보자.
머신러닝 인 액션에서 제공하는 txt 예제 데이터를 이용하기 위해서는 우리가 만든 kNN알고리즘이 받아들일 수 있는 형식의 데이터로 변환해주어야한다.
**이렇게 사용가능한 데이터를 추출하는 일련의 과정을 파싱(Parsing)이라 한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | def file2mat(filename): fr=open(filename) numOfLines=len(fr.readlines()) returnMat=zeros((numOfLines,3)) classLabelVector=[] fr=open(filename) index=0 lines=fr.readlines() for line in lines: line=line.strip() listFromLine=line.split('\t') returnMat[index,:]=listFromLine[0:3] classLabelVector.append(listFromLine[-1]) index+=1 return returnMat,classLabelVector | cs |
우선 우리가 파싱하고자 하는 텍스트 파일의 내부는
13711 6.226962 0.287251 smallDoses
...
55783 3.612548 1.551911 didntLike
과 같은 식으로 매 줄마다 실수형 데이터 세 개와 클래스 명으로 되어있다. 각각의 값은 탭으로 구분되어있다.
위의 코드의 각 줄이 수행하는 것은 다음과 같다.
2-3 라인 : 텍스트 파일을 오픈하고 데이터의 개수(텍스트 파일의 줄 수)를 센다.
4-5 라인 : 추출의 결과로 함수 끝에서 반환할 행렬과 라벨벡터의 틀을 만든다.
6 라인 : 위에서 readlines를 한 번 호출해서 파일을 읽어들이는 커서가 맨 끝으로 이동했으므로, 8번 라인에서 다시 readlines를 호출하기 전에 다시 파일을 불러들인다.
7 라인 : 텍스트 파일을 한 줄 읽을 때마다 증가시킬 변수 index를 선언한다.
8 라인 : readlines()로 텍스트 파일의 모든 내용을 리스트 형식으로 불러온다.
readlines의 리턴타입은 [첫째줄,둘째줄...,마지막줄]과 같은 리스트 형식이다.
9-14라인: 한 줄 마다 strip()으로 양끝의 공백을 지운 뒤
탭을 기준으로 잘라 리스트 형식의 listFromLine에 넣어둔다. 예)[55783, 3.612548, 1.551911,'didntLike']
returnMat의 index번째 줄에 방금 구한 listFromLine의 0,1,2번째 인덱스의 값을 넣어준다.
classLabelVector에는 listFromLine의 마지막 인덱스의 값을 넣어준다.
다음 루프에서는 밑에 returnMat의 다음 줄에 값이 입력 될 수 있게 index를 1증가시킨다.
15 라인 : returnMat과 classLabelVector를 반환한다.
3)Matplotlib로 데이터 분포 확인하기
이번 코드를 실행하기 위해서는 matplotlib를 임포트해야한다. 설치는 아래의 링크에서 확인할 수 있다.
http://doongkibangki.tistory.com/15 <--설치방법
'Application Programming > 머신러닝' 카테고리의 다른 글
[딥러닝] Deep Learning from scratch (0) | 2021.02.24 |
---|---|
2-1. K-Nearest Neighbors (0) | 2016.11.12 |
1. 기계학습이란, 개발환경구축 (0) | 2016.10.31 |