홈>
처음부터 퍼셉트론 학습 알고리즘을 작성하는 것은 처음입니다. 전에 ML ML 솔루션을 사용했지만 실제로 이해하고 직접 작성하고 싶었습니다. 어떤 이유로 든 내 오류율이 감소하는 대신 계속 증가합니다. 그래서 내 알고리즘이 수렴하는 대신 분기되는 것처럼 보입니다. 공차 범위에 글씨를 썼는데, 때로는 가까워 지지만 결코 점수에 미치지 못하기 때문입니다.
저는 3 개의 무게가 있습니다;바이어스의 경우 1, X 및 Y의 경우 2입니다.
저의 판별자를 찾았습니다.
D = (weight0 + weight1 * Xi) + (weight2 * Yi)
구별자가 예상 출력과 일치하지 않으면 다음을 사용하여 가중치를 업데이트합니다.
참고 : c와 k가 미리 정의 된 상수이고 d = 예상 출력이라고 가정합니다.
w0 = w0 + cdk
w1 = w1 + cdXi
w2 = w2 + cdYi
아래는 파이썬에서 구현 한 것입니다 :
def weightsUpdate(weights, constantC, constantK, classificationd, x, y):
weights[0] = weights[0] + constantC * classificationd * constantK # w0 = w0 + cdk
weights[1] = weights[1] + constantC * classificationd * x #w1 = w1 + cdx
weights[2] = weights[2] + constantC * classificationd * y #w2 = w2 + cdy
return weights
def trainModel(df, weights, constantC, constantK, maxIter, threshHold):
#grab the values in a list
x = df['X'].values
y = df['Y'].values
d = df['Class'].values
#define some variables to keep track
numTurns = 0
while numTurns < maxIter:
errorRate = 0
falsePosNeg = 0
truePosNeg = 0
'''assign som threshhold values. must accomodate for slight variance.'''
posThreshHoldCeiling = 1 + threshHold
posThreshHoldFloor = 1 - threshHold
negThreshHoldFloor = -1 - threshHold
negThreshHoldCeiling = -1 + threshHold
for i in range(len(x)):
''' calculate the discriminant D = w0 + w1*xi + w2*yi '''
discriminant = weights[0] + (weights[1] * x[i]) + (weights[2] * y[i])
'''if the discriminant is not correct when compared to the correct output'''
if ((discriminant >= posThreshHoldFloor and discriminant <= posThreshHoldCeiling) or
(discriminant >= negThreshHoldFloor and discriminant <= negThreshHoldCeiling)):
truePosNeg += 1
#weights = weightsUpdate(weights, constantC, constantK, d[i], x[i], y[i])
else:
'''update the weights'''
weights = weightsUpdate(weights, constantC, constantK, d[i], x[i], y[i])
falsePosNeg += 1
numTurns += 1 #increase number of turns by 1 iteration
print("Number of False Positive/Negative: " + str(falsePosNeg))
print("Number of True Positive/Negative: " + str(truePosNeg))
errorRate = falsePosNeg / len(x) * 100
print("Error rate: " + str(errorRate) + "%")
'''add stop conditions'''
if (errorRate < 25):
break
else:
continue
도움과 도움을 주셔서 감사합니다.
- 답변 # 1
관련 자료
- neural network - 퍼셉트론 학습 알고리즘은 무엇입니까?
- 특별한 특성을 찾기위한 R/머신 학습 알고리즘?
- machine learning - matplotlib을 사용한 퍼셉트론 알고리즘 플로팅
- python - 불균형 데이터 셋에 머신 러닝 알고리즘을 어떻게 적용합니까?
- python 3.x - 가장 적합한 기계 학습 알고리즘을 선택하는 방법
- 유사한 프로파일 권장 사항을위한 기계 학습 알고리즘 (MLNET 라이브러리) NET C #
- R에서 기계 학습 알고리즘을 반복하여 시드를 설정하는 방법은 무엇입니까?
- python - 딥 러닝의 어떤 알고리즘이 열의 관계를 행렬로 확인할 수 있습니까?
- scikit learn - 머신 러닝 분야에서 "AdaboostRegression"의 알고리즘 정보는 무엇입니까?
- 머신 러닝에서 그래디언트 다운 스트림 알고리즘은 무엇에 사용됩니까?
- python - Sigmoid 기능이있는 기계 학습 알고리즘의 매개 변수는 0으로 초기화됩니다
- python - 데이터 세트에 적합한 머신 러닝 알고리즘을 찾는 데 도움이 필요합니다
- csv - 수년간의 체계적인 데이터 수집을 기반으로 대규모 HPC 시스템에서 고장을 예측하기 위해 머신 러닝 알고리즘을 적용 할 수 있습니까?
- artificial intelligence - 강화 학습을 사용한 다중 에이전트 연속 공간 경로 찾기를위한 최고의 알고리즘
- django를 사용하여 기계 학습 알고리즘을 실행하고 싶지만 django가 CSV 파일 경로를 사용하지 않습니다
- montecarlo - 기계 학습 - 최상의 3 가지 변수 조합을 선택하는 가장 좋은 알고리즘은 무엇입니까?
- artificial intelligence - 내 상황에서 가장 좋은 maching 학습 알고리즘은 무엇입니까
- 머신 러닝 알고리즘 제안
- python - 텍스트 분류를위한 기계 학습 알고리즘
- python - 심층 강화 학습 알고리즘을 구현하도록 조언
관련 질문
- python : 변환 공식을 사용하여 범주형 값을 매핑해야 하는 "숫자" 데이터 세트에 기능 추가
- python : 고객 항목 상호 작용을 위한 임시 기차 테스트 분할 만들기
- python : 토치비전을 사용하여 celebA 데이터 세트를 다운로드하는 동안 오류가 발생했습니다.
- python : 다중 클래스 분류 tensorflow 기반 모델에서 사용자에게 열렬한 출력을 얻는 방법
- python : OvO와 OvR이 동일한 결과를 반환하는 이유는 무엇입니까?
- python : 가져오기 오류: tensorflow.keras.layers에서 CuDNNLSTM을 가져올 수 없습니다.
- python : 특정 KNN 클래스에 속하는 모든 입력 찾기
- python : 인코딩 중 해시 유형 오류 없이 사전을 되돌릴 수 없습니다.
- python : 오류를 해결하는 방법: 하나의 요소 텐서만 파이썬 스칼라로 변환할 수 있습니다.
- python : Keras TF에서 두 개의 손실 함수 처리 및 결합
Perceptron Learning Algorithm (PLA)에는 임계 값이 필요하지 않습니다. 또한 PLA는 판별 및 예상 출력의 부호 만 일치해야합니다 (예 :
sign(Discriminant) == d
) 따라서 실제 출력에 수렴 할 필요가 없습니다. 아래는trainModel()
의 수정 된 버전입니다. .