디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

재획하면서 공부하기 #5

ㅇㅇ갤로그로 이동합니다. 2024.09.02 00:07:34
조회 68 추천 0 댓글 0

재획하면서 공부하기 #1~2 개인 리뷰용 파이썬 코드입니다.




재획하면서 공부하기 #1

https://gall.dcinside.com/board/view/?id=maplestory_new&no=8308815&search_pos=-8270584&s_type=search_subject_memo&s_keyword=%EC%9E%AC%ED%9A%8D%ED%95%98%EB%A9%B4%EC%84%9C&page=1

 


재획하면서 공부하기 #2

https://gall.dcinside.com/board/view/?id=maplestory_new&no=8312042&search_pos=-8280584&s_type=search_subject_memo&s_keyword=%EC%9E%AC%ED%9A%8D%ED%95%98%EB%A9%B4%EC%84%9C&page=1


참조한 유튜브 강의영상



# Linear Regression
# x_training k개의 feature, n개의 data
# y_training 1개의 feature, n개의 data

# 편의상 k=4, n=100

# x_training = ( n x k )
# y_training = ( n x 1 )

import numpy as np

# Generate random data for x_training with k=4 features and n=100 data points
x_training = np.random.rand(100, 4)

# Generate random data for y_training with 1 feature and n=100 data points
y_training = np.random.rand(100)


# y = w0 + w1x1 + w2x2 + w3x3 + w4x4 의 형태의 모델을 만드는 것이 목적
# w = (xtx)-1 xt y


# Add a column of ones to x_training for the bias term (w0)
X = np.c_[np.ones(x_training.shape[0]), x_training]



# closed-form solution 을 이용해 구하는 방법
# Calculate the weights (w) using the normal equation
w = np.linalg.inv(X.T @ X) @ X.T @ y_training


# gradient descent 를 이용해 구하는 방법
# Set the learning rate
learning_rate = 0.01
# Set the number of iterations
num_iterations = 1000
# Initialize the weights
w = np.zeros(X.shape[1])
print(w)
# Perform gradient descent
for i in range(num_iterations):
  # Calculate the predictions
  y_pred = X @ w
  # Calculate the error
  error = y_pred - y_training
  # Calculate the gradient
  gradient = X.T @ error / len(y_training)
  # Update the weights
  w = w - learning_rate * gradient




# classification - logistic regression

# Generate random data for x_training with k=4 features and n=100 data points
x_training = np.random.rand(100, 4)

# Generate random data for y_training with 1 feature and n=100 data points
y_training = np.random.randint(2, size=100)


# iterative reweight least squre 방법을 사용하여 구하기
# Add a column of ones to x_training for the bias term (w0)
X = np.c_[np.ones(x_training.shape[0]), x_training]

# Set the number of iterations
num_iterations = 100

# Initialize the weights
w = np.zeros(X.shape[1])

# Perform iterative reweighted least squares
for i in range(num_iterations):
  # Calculate the predictions
  y_pred = 1 / (1 + np.exp(-X @ w))

  # Calculate the weights
  weights = y_pred * (1 - y_pred)

  # Calculate the Hessian matrix
  hessian = X.T @ (weights[:, np.newaxis] * X)



# conjugate gradient 를 사용하여 구하기
# Add a column of ones to x_training for the bias term (w0)
X = np.c_[np.ones(x_training.shape[0]), x_training]

# Initialize the weights
w = np.zeros(X.shape[1])

# Set the number of iterations
num_iterations = 100

# Set the tolerance
tol = 1e-6

# Perform conjugate gradient
for i in range(num_iterations):
  # Calculate the predictions
  y_pred = 1 / (1 + np.exp(-X @ w))

  # Calculate the gradient
  gradient = X.T @ (y_pred - y_training)

  # Calculate the Hessian matrix
  H = X.T @ (y_pred * (1 - y_pred) * X)

  # Calculate the search direction
  if i == 0:
    d = -gradient
  else:
    beta = np.dot(gradient, gradient) / np.dot(gradient_old, gradient_old)
    d = -gradient + beta * d

  # Calculate the step size
  alpha = -np.dot(gradient, d) / np.dot(d, H @ d)

  # Update the weights
  w = w + alpha * d

  # Check for convergence
  if np.linalg.norm(gradient) < tol:
    break

  # Store the gradient for the next iteration
  gradient_old = gradient





# Newton's method 를 이용하여 구하기
# Initialize the weights
w = np.zeros(X.shape[1])

# Set the number of iterations
num_iterations = 100

# Set the tolerance
tol = 1e-6

# Perform Newton's method
for i in range(num_iterations):
  # Calculate the predictions
  y_pred = 1 / (1 + np.exp(-X @ w))

  # Calculate the gradient
  gradient = X.T @ (y_pred - y_training)

  # Calculate the Hessian matrix
  H = X.T @ (y_pred * (1 - y_pred) * X)

  # Calculate the update
  update = np.linalg.solve(H, -gradient)

  # Update the weights
  w = w + update

  # Check for convergence
  if np.linalg.norm(gradient) < tol:
    break





# Calculate the predictions
y_pred = 1 / (1 + np.exp(-X @ w))

# Convert probabilities to binary predictions
y_pred_binary = (y_pred > 0.5).astype(int)





# AND gate 를 로지스틱 회귀모델로 학습하기
# Define the input data
X = np.array([[0, 0], [0, 1], [1, 0], [1, 1]])

# Define the output data
y = np.array([0, 0, 0, 1])

# Add a column of ones to X for the bias term
X = np.c_[np.ones(X.shape[0]), X]

# Initialize the weights
w = np.zeros(X.shape[1])

# Set the learning rate
learning_rate = 0.1

# Set the number of iterations
num_iterations = 1000

# Perform gradient descent
for i in range(num_iterations):
  # Calculate the predictions
  y_pred = 1 / (1 + np.exp(-X @ w))
  # Calculate the error
  error = y_pred - y
  # Calculate the gradient
  gradient = X.T @ error / len(y)
  # Update the weights
  w = w - learning_rate * gradient

# Calculate the predictions
y_pred = 1 / (1 + np.exp(-X @ w))

# Print the predictions
print(y_pred)

# Define the validation data
X_val = np.array([[0, 0], [0, 1], [1, 0], [1, 1]])

# Define the output data
y_val = np.array([0, 0, 0, 1])

# Add a column of ones to X_val for the bias term
X_val = np.c_[np.ones(X_val.shape[0]), X_val]

# Calculate the predictions for the validation data
y_pred_val = 1 / (1 + np.exp(-X_val @ w))

# Convert probabilities to binary predictions
y_pred_binary = (y_pred_val > 0.5).astype(int)

# Compare the predictions to the actual values
print(y_pred_binary == y_val)






# 뉴럴 네트워크
# 1개의 입력층, 1개의 은닉층, 1개의 출력층

import numpy as np

# Define the sigmoid activation function
def sigmoid(x):
  return 1 / (1 + np.exp(-x))

# Define the derivative of the sigmoid function
def sigmoid_derivative(x):
  return x * (1 - x)

# Define the neural network class
class NeuralNetwork:
  def __init__(self, input_size, hidden_size, output_size):
    # Initialize the weights
    self.weights1 = np.random.randn(input_size, hidden_size)
    self.weights2 = np.random.randn(hidden_size, output_size)

  def forward(self, X):
    # Calculate the output of the hidden layer
    self.hidden_layer_output = sigmoid(np.dot(X, self.weights1))
    # Calculate the output of the output layer
    self.output = sigmoid(np.dot(self.hidden_layer_output, self.weights2))
    return self.output

  def backward(self, X, y, output):
    # Calculate the error in the output layer
    self.output_error = y - output
    # Calculate the derivative of the output layer
    self.output_delta = self.output_error * sigmoid_derivative(output)
    # Calculate the error in the hidden layer
    self.hidden_layer_error = self.output_delta.dot(self.weights2.T)
    # Calculate the derivative of the hidden layer
    self.hidden_layer_delta = self.hidden_layer_error * sigmoid_derivative(self.hidden_layer_output)
    # Update the weights
    self.weights2 += self.hidden_layer_output.T.dot(self.output_delta)
    self.weights1 += X.T.dot(self.hidden_layer_delta)

  def train(self, X, y, num_iterations):
    for i in range(num_iterations):
      # Perform forward propagation
      output = self.forward(X)
      # Perform backward propagation
      self.backward(X, y, output)



# Define the input data
X = np.array([[0, 0], [0, 1], [1, 0], [1, 1]])

# Define the output data
y = np.array([[0], [1], [1], [0]])

# Create a neural network with 2 input neurons, 2 hidden neurons, and 1 output neuron
nn = NeuralNetwork(2, 2, 1)

# Train the neural network
nn.train(X, y, 10000)

# Define the validation data
X_val = np.array([[0, 0], [0, 1], [1, 0], [1, 1]])

# Predict the output for the validation data
y_pred = nn.forward(X_val)

# Print the predictions
print(y_pred)

# Convert probabilities to binary predictions
y_pred_binary = (y_pred > 0.5).astype(int)

# Compare the predictions to the actual values
print(y_pred_binary == y)







추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
등록순정렬 기준선택
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 지금 결혼하면 스타 하객 많이 올 것 같은 '인맥왕' 스타는? 운영자 24/10/28 - -
공지 ★ 메이플 뉴비 가이드 / 직업공략/ 자주 하는 질문 ★ [1265] 늒네캥걸루갤로그로 이동합니다. 21.10.07 379189 277
공지 메이플스토리 갤러리 이용 안내 [152] 운영자 21.10.07 105533 47
8709349 ■ 개좆슼 2500 붕괴 직전 ㅇㅇ갤로그로 이동합니다. 06:06 10 1
8709348 [스카니아사랑해] 잘먹고갑니다 히키갤로그로 이동합니다. 06:06 7 1
8709347 웃는가면 vs 우는가면 ㅇㅇ갤로그로 이동합니다. 06:05 5 0
8709346 !!! 기상 !!! 백신예갤로그로 이동합니다. 06:05 11 1
8709345 데더다 메모 Yoko갤로그로 이동합니다. 06:05 10 0
8709344 이제 미트라하고 컴플리트하트만 가면 되겠다 메갤러(211.179) 06:05 13 0
8709343 메이플 방송은 하나같이 장애인들 방임??? 메갤러(14.52) 06:05 12 0
8709342 엘슘인데 크로아 스카니아 둘 다 너무 고마움 ㄹㅇㅠㅠ ㅇㅇ(39.7) 06:04 22 3
8709341 슼물풍선 완 ㅇㅇ(58.238) 06:04 13 0
8709340 회전룬 비올레타 옘병 ㅇㅇ갤로그로 이동합니다. 06:04 8 0
8709339 고맙습니다 스카니아 초서갤로그로 이동합니다. 06:03 37 1
8709338 개좆슼 벌써 2550 입갤 ㅋㅋㅋㅋㅋㅋㅋㅋㅋ [2] ㅇㅇ갤로그로 이동합니다. 06:02 69 2
8709337 이 또한 황카니아의 위엄이겠지요.... ㅇㅇ(121.142) 06:02 23 3
8709336 쌀값너무떨어져서 겜 의욕 사라지는데 어캄 ㅇㅇ? 메갤러(1.247) 06:01 7 0
8709335 자~드가자자~드가자자~드가자자~드가자자~드가자자~드가자 ㅇㅇ갤로그로 이동합니다. 05:59 28 1
8709334 아버도 끝나서 채집하는데 재획보다 훨씬 편하네 [1] ㅇㅇ(121.144) 05:59 20 0
8709333 ₩ 3만 즉시ㅊ출금 야갤러(121.177) 05:57 5 0
8709331 헌티드 개좆같은거 8시간했는데 46개 찾음 ㅇㅇ(118.235) 05:55 24 0
8709330 ♥ 틱톸 오늘 접속안한분 3만 즉시지급(중복O) [1] ㅇㅇ(116.32) 05:55 9 0
8709329 ㅈ댓다 롤체재획이 슬슬노잼이라 포체로넘어갓더니 재획이랑 같이못하겟음 [1] PPRK갤로그로 이동합니다. 05:55 53 0
8709328 아오 도형 거탐시치 썽코오리 애미 같네 ㅇㅇ(121.143) 05:54 40 1
8709327 헌티드 여긴9층이다 뜨는데 어케 왼쪽감 메갤러(222.102) 05:51 14 0
8709325 하 진지하게 남자 꼬추냄새 딥하게 맡아보고싶다 [2] ㅇㅇ(211.224) 05:49 54 0
8709324 젊은 메붕이들 건강화는 역시 신창섭? 메갤러(1.232) 05:49 18 1
8709322 작살은 강화 안 해도 됨? [3] ㅇㅇ(119.70) 05:46 27 0
8709321 오 좀꼴리는데 [7] 박진혁갤로그로 이동합니다. 05:46 121 0
8709320 아니 아저씨 여기가 아니라 3번창구로 가시라구요 [1] ㅇㅇ(118.235) 05:46 44 2
8709319 ㅁㅁ 3만 즉시 출금 ㅁㅁ 야갤러(121.177) 05:45 8 0
8709318 '증오스러운 리선족 놈들과 손을잡게 될줄이야..' [2] 박진혁갤로그로 이동합니다. 05:45 63 3
8709316 스카니아가개창나서 개창섭이고쳐야됨이거 스톤멍키ㅇㄷ(119.64) 05:43 61 0
8709314 와 저 야구선수짤 잠도없냐 박진혁갤로그로 이동합니다. 05:42 34 0
8709313 라운지 메소게시판 1시간쿨이라 시세잘안오르는듯 [4] 히키갤로그로 이동합니다. 05:42 57 0
8709312 속보) 크로아 쌀거지새끼들 주민센터앞 출현 [4] ㅇㅇ(118.235) 05:41 96 5
8709311 자려고 불끄고 설거지하고 양치하고 세수하고 겜 껐음 ㅇㅇ갤로그로 이동합니다. 05:41 16 0
8709310 창섭이 큰거 준비중 [1] ㅇㅇ(218.156) 05:40 33 0
8709308 데더다 도감은 죽여서 가져가야만 채워짐? [13] ㅇㅇ(119.70) 05:39 49 0
8709307 ㅅㅂ 시프 감귤 후닝햄 도와줘요 ㅇㅇ(118.235) 05:39 51 3
8709306 보x지에 손가락넣고ㅜ잠깐졸았는데 [4] 초서갤로그로 이동합니다. 05:39 73 0
8709305 여친이 할로윈 옷 입어줌 [8] 슨퀴갤로그로 이동합니다. 05:39 64 0
8709304 06시 땡치자마자 주화던질준비완료요 히키갤로그로 이동합니다. 05:38 32 0
8709303 근데메랜오픈벹타끝나고정식출시하면뭐가바뀌는거임? 메갤러(211.36) 05:38 17 0
8709302 한녀 기독교인 똥게이 전라도 전부 청소해야함 [6] 농현갤로그로 이동합니다. 05:36 44 0
8709301 걍스카메소마켓개터져서 메포공유막았으면좋겠노 스톤멍키ㅇㄷ(119.64) 05:36 36 0
8709300 스카니아 뻬고는 물통값 전부 비정상이네 ㅋㅋㅋㅋㅋ [1] ㅇㅇ(112.149) 05:36 43 0
8709299 출근충 밥묵닌다 [1] 사천짜파게티갤로그로 이동합니다. 05:36 21 0
8709298 슼물풍선 제발 하지말아다오 [1] ㅇㅇ(106.101) 05:35 30 0
8709297 "준비됐어, 리?" [4] ㅇㅇ갤로그로 이동합니다. 05:35 72 3
8709296 자자 [2] 테러비터갤로그로 이동합니다. 05:35 23 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2