2. 머신러닝 실습
in Data on Machine Learning
파이썬을 이용한 머신러닝, 딥러닝 실전개발 입문
파이썬을 이용한 머신러닝, 딥러닝 실전개발 입문 책과 강의를 바탕으로한 코드 리뷰 및 정리입니다. 자세한 내용은 책과 강의를 참고해주세요.
link: github
4. 머신러닝
4-2. 머신러닝 첫걸음
Scikit-learn
파이썬에서 머신러닝 라이브러리의 정석. 다양한 머신러닝 알고리즘들과 샘플 데이터도 지원한다.
앞으로 주로 사용할 svm 알고리즘의 간략한 사용방법은 다음과 같다.
from sklearn import svm
clf=svm.SVC()
clf.fit(학습시킬 데이터,답)
result=clf.predict(답을 얻고싶은 데이터)
XOR 연산 학습해보기
배타적 논리 연산. 두 입력값이 같으면 거짓, 다르면 참인 연산.
P | Q | P xor Q |
---|---|---|
0 | 0 | 0 |
1 | 0 | 1 |
0 | 1 | 1 |
0 | 1 | 0 |
import pandas as pd
from sklearn import svm, metrics
xor_input=[
# P,Q, result
[0,0,0],
[0,1,1],
[1,0,1],
[1,1,0]
]
xor_df=pd.DataFrame(xor_input)
xor_data=xor_df.ix[:,0:1] #데이터
xor_label=xor_df.ix[:,2] #레이블
#데이터 학습과 예측하기
clf=svm.SVC()
clf.fit(xor_data, xor_label) #학습
pre=clf.predict(xor_data) #예측
#정답률 구하기
#metrics.accuracy_score(진짜 답, 예측했던 결과)
ac_score=metrics.accuracy_score(xor_label,pre)
print("정답률=",ac_score)
IRIS Data
- 꽃받침과 꽃잎의 길이와 너비로 품종 분류
- train /test 로 나누어 판단하는 이유는 실제로 주어진 데이터의 분류가 옳은지, 즉 꽃받침과 꽃잎의 길이와 너비가 품종 분류에 사용하는게 타당한지를 파악하기 위한 것이다.
import pandas as pd
from sklearn import svm, metrics
from sklearn.model_selection import train_test_split
#붓꽃의 csv 데이터 읽어 들이기
csv=pd.read_csv('iris.csv')
#필요한 열 추출
csv_data=csv[["SepalLength","SepalWidth","PetalLength","PetalWidth"]]
csv_label=csv["Name"]
#학습 전용 데이터와 테스트 전용 데이터로 나누기
train_data, test_data, train_label, test_label = train_test_split(csv_data, csv_label)
#데이터 학습시키고 예측하기
clf=svm.SVC()
clf.fit(train_data, train_label)
pre=clf.predict(test_data)
#정답률 구하기
ac_score=metrics.accuracy_score(test_label, pre)
print('정답률=',ac_score) # 정답률을 통해 실제 꽃잎과 꽃받침의 크기,너비와 품종구분의 연관성을 파악할 수 있음