반응형
소스 코드를 만든 이유를 이해하기 위한 Intro 동영상 강의입니다.
소스 코드
# http://ehpub.co.kr
# 머신 러닝 with pYTHON
# 선형 퍼셉트론 구하기 - 라이브러리 의존도 0%
w1,w2,b=0,0,0 #가중치1,2와 임계치
def setwb(wt1,wt2,bt): #가중치, 임계치 설정 함수
global w1,w2,b
w1,w2,b = wt1,wt2,bt
def discriminate(x1,x2): #판별 함수
if(w1*x1+w2*x2+b<=0):
return 0
else:
return 1
def test(ds,wt1,wt2,bt): #예측 정확도 계산 함수
setwb(wt1,wt2,bt)
ok,total=0,0
for x1,x2,y in ds:
if(discriminate(x1,x2)==y):
# print("T", end=' ')
ok+=1
# else:
# print("F",end=' ')
total+=1
return ok/total
def myr(s,e,st): #range와 같은 목적, step이 실수
r=s
while(r<e):
yield r
r+=st
def find_wb(ds): #기계 학습
for wt1 in myr(0,1,0.1):
for wt2 in myr(0,1,0.1):
for bt in myr(-1,1,0.1):
if(test(ds,wt1,wt2,bt)==1.0):
return True
return False
#테스트 코드
ds_and=[
[0,0,0],[0,1,0],[1,0,0],[1,1,1]
]
if find_wb(ds_and):
print("w1:{0:.1f} w2:{1:.1f} b:{2:.1f} ## and".format(w1,w2,b))
else:
print("not founded ## and")
ds_or=[
[0,0,0],[0,1,1],[1,0,1],[1,1,1]
]
if find_wb(ds_or):
print("w1:{0:.1f} w2:{1:.1f} b:{2:.1f} ## or".format(w1,w2,b))
else:
print("not founded ## or")
ds_xor=[
[0,0,0],[0,1,1],[1,0,1],[1,1,0]
]
if find_wb(ds_xor):
print("w1:{0:.1f} w2:{1:.1f} b:{2:.1f} ## xor".format(w1,w2,b))
else:
print("not founded ## xor")
반응형
'빅데이터 > 머신 러닝 with Python (old)' 카테고리의 다른 글
머신러닝 및 딥러닝에 사용하는 손글씨 데이터 mnist 다운로드 및 구조 분석하기 (0) | 2020.08.17 |
---|---|
Scikit-Learn을 이용한 KMean 군집화(Clustering) (0) | 2020.08.06 |
Scikit-Learn을 이용한 분류와 회귀 (0) | 2020.08.05 |
나의 손글씨 데이터로 머신 러닝시킨 후 나의 손글씨로 테스트하기 with 사이킷 런 svm.SVC (0) | 2020.05.25 |
사이킷 런의 svm.SVC 사용 및 흉내내어 만들어보기 [ML with pYTHON] (0) | 2020.05.20 |