데이터분석/데이터분석

인공신경망 (ANN)

이규승 2022. 5. 16. 21:35
728x90

인공신경망 정보 : https://techblog-history-younghunjo1.tistory.com/73

 

[ML] ANN(Artificial Neural Network) 인공신경망

※해당 게시물에 사용된 일부 자료는 순천향대학교 빅데이터공학과 정영섭 교수님의 머신러닝 전공수업 자료에 기반하였음을 알려드립니다. 이번 포스팅에서는 저번 포스팅에서 다루었던 주

techblog-history-younghunjo1.tistory.com

출처 : https://cafe.daum.net/flowlife/SBU0/49

Perceptron

https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.Perceptron.html

 

sklearn.linear_model.Perceptron

Examples using sklearn.linear_model.Perceptron: Out-of-core classification of text documents Out-of-core classification of text documents, Comparing various online solvers Comparing various online ...

scikit-learn.org

# 인공신경망 : 단층 신경망 (뉴런 또는 노드 1개) - Perceptron
# input data * 가중치의 합에 대해 임계 값(활성화함수)을 이항분류가 가능

import numpy as np
from sklearn.linear_model import Perceptron
from sklearn.metrics import accuracy_score

feature = np.array([[0,0],[0,1],[1,0],[1,1]])
print(feature)
#label = np.array([0,0,0,1]) # and
label = np.array([0,1,1,1]) # or
#label = np.array([0,1,1,0]) # xor : 하나의 node로는 불가능하다. acc가 0.5밖에안나온다

ml = Perceptron(max_iter=100, eta0=0.1).fit(feature,label) 
# max_iter => epoch 수 (학습 수) # eta0 는 학습률(learning late)
print(ml)
pred = ml.predict(feature)
print('pred:',pred)
print('acc:',accuracy_score(label,pred))

단층 신경망(하나의 노드)은 xor이 불가능하다.

MLP 다층신경망

# MLP : 다층신경망 - 선형 / 비선형 분류가 가능
import numpy as np
from sklearn.neural_network import MLPClassifier 
from sklearn.metrics import accuracy_score

feature = np.array([[0,0],[0,1],[1,0],[1,1]])
print(feature)
#label = np.array([0,0,0,1]) # and
#label = np.array([0,1,1,1]) # or
label = np.array([0,1,1,0]) # xor 0.5

# ml = MLPClassifier(hidden_layer_sizes=30, activation = 'relu',
#                     solver='adam', learning_rate_init = 0.01).fit(feature, label)
ml = MLPClassifier(hidden_layer_sizes=(10,10,10), activation = 'relu',
                    solver='adam', learning_rate_init = 0.01).fit(feature, label)                    

print(ml)

pred = ml.predict(feature)
print('pred:',pred)
print('acc:',accuracy_score(label,pred))

MLPClassifier은 sklearn의 neural_network에 있고 Perceptron은 sklearn의 linear_model에 있다.

hidden_layer_sizes를 바꾸면서 확인한다.

https://scikit-learn.org/stable/modules/generated/sklearn.neural_network.MLPClassifier.html

 

sklearn.neural_network.MLPClassifier

Examples using sklearn.neural_network.MLPClassifier: Classifier comparison Classifier comparison, Compare Stochastic learning strategies for MLPClassifier Compare Stochastic learning strategies for...

scikit-learn.org

 

728x90

'데이터분석 > 데이터분석' 카테고리의 다른 글

지도학습(K-NN) 과 비지도학습(K-Means) 비교  (0) 2022.05.16
군집 분석(Clustering)  (0) 2022.05.16
K-NN (K -Nearest Neighbor)  (0) 2022.05.16
나이브 베이즈  (0) 2022.05.16
주성분 분석(PCA)  (0) 2022.05.14