Numpy를 이용한 기계학습 프로젝트 - 8
오늘은 로지스틱 회귀를 이용한 말의 배앓이 치사율 평가를 위한 로지스틱 회귀를 사용하는 예제를 풀어 보기로 하였다. 우선, 데이터에서 누락된 값이 있기 때문에 이를 다루는 효과적인 방법들이 필요하게 된다. 이에는 몇 가지 선택사항이 있다. 선택사항은 아래와 같다.
-------------------------------------------------------------------------------------------
* Numpy 기계학습의 모든 문서는 제가 머신러닝을 공부하고, 제 프로젝트에 필요한 알고리즘을 찾기 위해 정리하는 일종의 '요점정리 노트' 입니다. 혹여나 오해 없으시기 바랍니다. (2016.03.14 추가)
-------------------------------------------------------------------------------------------
* 사용 가능한 모든 데이터에서 속성의 평균값 사용
* 알려지지 않은 값은 특별한 값으로 채우기
* 혹은 무시
* 유사한 아이템들의 평균값 사용
* 값을 예측하기 위한 기계학습 알고리즘 사용
이 경우, 사용하게 될 데이터 집합은 전처리가 된것이다. 따라서 기존의 알고리즘으로 쉽게 사용할 수 있다는 장점이 있다. 내가 사용하는 로지스틱 회귀 분류 함수 소스코드는 아래와 같다.
def classifyVector(inX, weights): prob = sigmoid(sum(inX*weights)) if prob > 0.5: return 1.0 else: return 0.0 def colicTest(): frTrain = open('horseColicTraining.txt'); frTest = open('horseColicTest.txt') trainingSet = []; trainingLabels = [] for line in frTrain.readlines(): currLine = line.strip().split('\t') lineArr =[] for i in range(21): lineArr.append(float(currLine[i])) trainingSet.append(lineArr) trainingLabels.append(float(currLine[21])) trainWeights = stocGradAscent1(array(trainingSet), trainingLabels, 1000) errorCount = 0; numTestVec = 0.0 for line in frTest.readlines(): numTestVec += 1.0 currLine = line.strip().split('\t') lineArr =[] for i in range(21): lineArr.append(float(currLine[i])) if int(classifyVector(array(lineArr), trainWeights))!= int(currLine[21]): errorCount += 1 errorRate = (float(errorCount)/numTestVec) print "the error rate of this test is: %f" % errorRate return errorRate def multiTest(): numTests = 10; errorSum=0.0 for k in range(numTests): errorSum += colicTest() print "after %d iterations the average error rate is: %f" % (numTests, errorSum/float(numTests))
그 다음, 파이썬 쉘에 아래와 같이 입력한다.
내가 사용하는 데이터 값은 아래와 같다.
누락된 값은 아래와 같이 0.35가 나왔다.
이는 누락된 값이 30% 이상이므로 나쁘지 않은 결과이다. colicTest() 함수에서 반복 횟수를 변경할 수 있고, 오류율 20%에 근접하기 위해 stochGradAscent1()에서 alpha의 크기를 변경할 수 있다.
오늘은 여기까지 하기로 했다.
'Project > Dev Story' 카테고리의 다른 글
OpenCV를 Linux에서 쉘 스크립트로 쉽게 설치하는 법 (0) | 2016.10.13 |
---|---|
Numpy를 이용한 기계학습 프로젝트 - 9 (0) | 2016.03.14 |
Numpy를 이용한 기계학습 프로젝트 - 7 (0) | 2016.01.19 |
Numpy를 이용한 기계학습 프로젝트 - 6 (0) | 2016.01.12 |
Numpy를 이용한 기계학습 프로젝트 - 5 (0) | 2016.01.09 |