1번째 줄: |
1번째 줄: |
| == 개요 == | | == 개요 == |
| 사이킷런. 파이썬 머신러닝 라이브러리의 기준 격인 라이브러리. | | 사이킷런. 파이썬 머신러닝 라이브러리의 기준 격인 라이브러리. |
| + | |
| + | 기계학습을 구현하는데 필요한 대부분의 기능을 담고 있다. |
| | | |
| == 사용 == | | == 사용 == |
19번째 줄: |
21번째 줄: |
| | | |
| === 기초 사용법 === | | === 기초 사용법 === |
| + | 일반적으로 판단근거를 data, 판단결과를 label이라 구분하여 사용한다. 혹은 함수의 형태를 본따 x, y로. |
| {| class="wikitable" | | {| class="wikitable" |
| !의도 | | !의도 |
26번째 줄: |
29번째 줄: |
| |훈련데이터와 테스트데이터 분리 | | |훈련데이터와 테스트데이터 분리 |
| |귀찮은 일을 모듈이 해준다. | | |귀찮은 일을 모듈이 해준다. |
| + | {| class="wikitable" |
| + | |+자주 사용하는 옵션 |
| + | !의도 |
| + | !설명 |
| + | |- |
| + | |stratify=df['해당열'] |
| + | |범주별 비율을 비슷하게 맞춰 데이터를 분리한다. |
| + | (원 데이터에서 하나의 범주만 너무 많거나 적은 경우 사용하여 비율을 지킨다.) |
| + | |} |
| |<syntaxhighlight lang="python"> | | |<syntaxhighlight lang="python"> |
| from sklearn.model_selection import train_test_split | | from sklearn.model_selection import train_test_split |
| | | |
− | train_data, test_data, train_label, test_label = train_test_split(data, label)
| + | train_x, test_x, train_y, test_y = train_test_split(data, label, test_size=0.2, train_size=0.8, ,random_state=1) |
− | </syntaxhighlight>
| + | </syntaxhighlight>random_state는 random함수의 seed값을 고정하여 매번 같은 데이터를 얻게 하기 위함.(test용, 교육용에서 채점 등에 사용. 모델이 랜덤한 효과로 좋아지지 않도록.) |
− | |-
| |
− | |정답률 예측
| |
− | |
| |
− | |<syntaxhighlight lang="python">
| |
− | right =0; total =0
| |
− | for idx, answer in enumerate(label): # 레이블의 인덱스를 얻는다.
| |
− | p = pre[idx] # 인덱스값에 해당하는 예측값.
| |
− | if p = answer: right += 1 # 정답과 일치한다면 right에 하나 추가.
| |
− | total += 1
| |
− | print("정답률 : ", right/total)
| |
− | </syntaxhighlight>간단하게 모듈을 사용할 수도 있다.<syntaxhighlight lang="python"> | |
− | from sklearn import metrics # 추가로 가져온다.
| |
| | | |
− | score = metrics.accuracy_score(label, pre) # 레이블과 예측값을 넣는다.
| + | 일반적으로 이 대신 test_size=0.2 를 사용한다.(20%가 test 데이터로)(전체 값이 1이 아닌지, train_size와 같이 넣는다.) |
− | print('정답률 : ', score)
| |
− | </syntaxhighlight>
| |
| |- | | |- |
| |학습한 매개변수 저장하기 | | |학습한 매개변수 저장하기 |
64번째 줄: |
62번째 줄: |
| |} | | |} |
| | | |
| + | = 결측치 처리 = |
| + | {| class="wikitable" |
| + | !방법 |
| + | !설명 |
| + | |- |
| + | |DataFrame을 사용하는 경우 |
| + | |[[결측치 다루기:pandas]] 문서를 참고하자. |
| + | |} |
| + | = 모델 검증 = |
| + | {| class="wikitable" |
| + | !방법 |
| + | !설명 |
| + | |- |
| + | |평균 에러정도 검증 |
| + | |<syntaxhighlight lang="python"> |
| + | from sklearn.metrics import mean_absolute_error |
| + | |
| + | data = df..... # 예상에 쓰일 df. |
| + | y = data.판단할열 # 실제 결과 |
| + | # 근거데이터 만들기. |
| + | features = ['열1', '열2', ...] # 판단할 자료가 될 열을 지정한다. |
| + | x = data[features] # 판단근거를 준비한다. |
| + | |
| + | predict = machine.predict(data) # 결과 예상하기. |
| + | mean_absolute_error(y, predict) # 예상결과와 실제값을 비교하여 평균 에러를 반환한다. |
| + | </syntaxhighlight>둘 사이의 차이를 구하는 함수로, 순서는 달라져도 상관 없다. |
| + | |- |
| + | |정답률 검증 |
| + | |<syntaxhighlight lang="python"> |
| + | right =0; total =0 |
| + | for idx, answer in enumerate(label): # 레이블의 인덱스를 얻는다. |
| + | p = pre[idx] # 인덱스값에 해당하는 예측값. |
| + | if p = answer: right += 1 # 정답과 일치한다면 right에 하나 추가. |
| + | total += 1 |
| + | print("정답률 : ", right/total) |
| + | </syntaxhighlight>간단하게 모듈을 사용할 수도 있다.<syntaxhighlight lang="python"> |
| + | from sklearn.metrics import accuracy_score # 추가로 가져온다. |
| + | |
| + | score = accuracy_score(label, pre) # 레이블과 예측값을 넣는다. |
| + | print('정답률 : ', score) |
| + | </syntaxhighlight> |
| + | |} |
| == SVM 알고리즘 == | | == SVM 알고리즘 == |
| 사용할 수 있는 SVM 알고리즘은 다음과 같다. 객체를 만들 때 알고리즘 이름만 바꾸어주면 된다. | | 사용할 수 있는 SVM 알고리즘은 다음과 같다. 객체를 만들 때 알고리즘 이름만 바꾸어주면 된다. |
184번째 줄: |
224번째 줄: |
| |} | | |} |
| [[분류:머신러닝 라이브러리]] | | [[분류:머신러닝 라이브러리]] |
| + | [[분류:Scikit-learn]] |