빅데이터/머신 러닝 with Python (old)

퍼셉트론 구하기, 라이브러리 의존도 0% [ML with Python]

언제나휴일 2020. 5. 20. 06:48
반응형

소스 코드를 만든 이유를 이해하기 위한 Intro 동영상 강의입니다.

 

 

[그림] 가중치, 임계치 판별식 - OR 연산

 

소스 코드

# 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")

 

 

퍼셉트론 구하기, 라이브러리 의존도 0% [ML with Python] – 언제나 휴일

안녕하세요. 언제나 휴일에 언휴예요. 이번 강의는 퍼셉트론(Perceptron) 구하는 코드를 작성해 볼 거예요. 파이썬의 강력한 라이브러리를 이용하면 순식간에 만들겠죠. 눈 떴다 감을 시간도 없어��

ehpub.co.kr

 

반응형