디시인사이드 갤러리

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

갤러리 본문 영역

재획하면서 공부하기 #5

ㅇㅇ갤로그로 이동합니다. 2024.09.02 00:07:34
조회 76 추천 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 - -
8708561 밍밍부인이 가지고싶다 [6] ㅇㅇ갤로그로 이동합니다. 01:46 45 0
8708560 세더다 헌티드 다잼는대 [1] 대깨비갤로그로 이동합니다. 01:46 34 0
8708559 동양인 현실 ㅇㅇ(106.101) 01:46 28 1
8708558 사단이 자러갈게요 ㅋㅋㅋㅋㄱㄱㅋㅋㅋㄱㅋㅋㄱㅋㅋㅋㄱㅋㅋ [2] 스햐사랑단갤로그로 이동합니다. 01:45 24 0
8708557 루나 18성 쌍드 파풀마 살사람 있냐 메갤러(124.60) 01:45 15 0
8708556 이번주 아즈모스 맵 개잘떴노ㅋㅋㅋ 밥똥메갤로그로 이동합니다. 01:44 18 0
8708555 프라다 여성지갑 얼마정도함 ? 된장남된장녀 업니? [4] ssd(221.143) 01:44 34 1
8708554 내 주변사람 도박빠지고 표정도잃은거보고 충격먹었음 메갤러(220.74) 01:44 30 0
8708553 갑자기울었음 ㅅㅁ갤로그로 이동합니다. 01:44 19 0
8708552 아니헌티드멘션<<어이없는게. [4] 아현.갤로그로 이동합니다. 01:43 73 0
8708551 념글 꼬라지 뭐냐 ㅋㅋㅋㅋ [1] ㅇㅇ(180.70) 01:43 27 0
8708549 남돌은해외에서도 취급이똑같네 ㅋㅋ [6] ★!갤로그로 이동합니다. 01:43 96 0
8708547 큐브 메소화 이후 메이플 매출 기획 노출 메겔러1(175.199) 01:43 54 0
8708546 연버님이 더 심란할수밖에 없지 [8] ㅇㅇ갤로그로 이동합니다. 01:43 62 0
8708545 연버쌤 맛탱이간거개꼴림 ㄹㅇ [4] 거지사요리갤로그로 이동합니다. 01:43 108 1
8708544 메소 팔아도 별로 맛없네 템이나 살까 ㅇㅇ(110.15) 01:42 32 0
8708543 넥슨 메이플 직원들 일안하나? 별나라양말 언제 버그 고침 메갤러(223.38) 01:42 19 1
8708542 메랜 본메 투컴하는중 ㅇㅇ(223.38) 01:42 35 0
8708541 자기야 [1] 공주(220.119) 01:41 33 0
8708540 칠흑떠도 맛없네 [1] Pure.갤로그로 이동합니다. 01:41 32 0
8708539 양심적으로 크로아하면서 리부트욕하면 안됐지 ㅇㅇ(118.235) 01:41 27 0
8708538 아나 앱솔랩스 마법사 전사 견장 가격차이뭐임? ㅇㅇ(183.96) 01:41 23 0
8708537 연버쌤 << 쌀값폭락, x이요 고소 등 여러 대형악재 겹쳐.. [2] 안무는모기야갤로그로 이동합니다. 01:41 39 0
8708536 ㅅㅂ 걍 원숭이 전략으로 간다 가만히있기. [11] 엔임나연버갤로그로 이동합니다. 01:40 91 0
8708535 근데 연버 데더다 유기는 좀 많이식은듯하네.. [2] ㅇㅇ(118.235) 01:40 47 0
8708534 뉴비 메이플 하는중 [1] 메갤러(58.29) 01:40 29 0
8708533 키보드 바꾸니까 하루종일 행복하네 ㅇㅇ... [1] ㅇㅇ(219.248) 01:40 26 0
8708531 아니연버햄은 ㄹㅇ 김창섭이죽인거라니까 ㅋㅋ [8] ★!갤로그로 이동합니다. 01:39 123 4
8708530 은월 비숍 카인 메갤러(175.223) 01:39 21 0
8708529 쉐파 연봉협상 극적 타협 [4] 머구머구갤로그로 이동합니다. 01:39 55 0
8708528 어제 메소마켓 메포가 너무 오르긴했네요.. [2] 엔임나연버갤로그로 이동합니다. 01:38 133 0
8708527 엔임나연버 이새낀 ㄹㅇ.. [4] 찐수갤로그로 이동합니다. 01:38 74 0
8708525 하 재획하고 노칼이카잡자 ㅇㅇ(118.235) 01:38 25 0
8708524 썬데이 소울 5배해도 요샌 딱히 감흥이없노 ㅇㅇ(180.70) 01:38 21 0
8708522 검먹 연습모드로 체험시켜주실 분 ㅇㅇ갤로그로 이동합니다. 01:38 18 0
8708521 칭호도 좀 간지나게 광휘장신구로 줄때 안됐나 [2] 딴손잡이갤로그로 이동합니다. 01:37 26 0
8708520 실시간 이태원 사진.jpg ㅇㅇ(121.130) 01:37 67 1
8708518 나눈애기ㅇㅅㅇ 메갤러(211.234) 01:37 14 0
8708517 엘슘 전사템 미트라 루컨마 에테바지 앱솔뚝 ㅍㅍㅍ 거지사요리갤로그로 이동합니다. 01:37 25 0
8708516 본캐로 시그 ㄱㅊ?? [1] 메갤러(58.29) 01:36 36 0
8708515 아니뭔데가면신사련아니가안내했잖아!!!!!!!!!!!!!!!!!!!!! [1] 아현.갤로그로 이동합니다. 01:35 29 0
8708514 출근하기 전에 슼물풍선 던지고 간다 백신예갤로그로 이동합니다. 01:35 27 0
8708513 4년전 괴물쥐 메이플 했던때 나만 그립냐 [7] ㅇㅇ(218.157) 01:35 68 1
8708512 사냥하다메소마켓기어들어가서보는거너무귀찮 ㄹㅇ [1] ★!갤로그로 이동합니다. 01:35 49 0
8708511 나로 진짜 똥캐릭이야ㅜㅜㅜㅜㅜㅜ [8] 초서갤로그로 이동합니다. 01:34 57 0
8708510 헌티드맨션 개재밌네ㅇㅇ ㅇㅇ(58.238) 01:34 19 0
8708507 념글로 스카니아에 주화 폭격한다하지 않음?? [3] ㅇㅇ(106.101) 01:34 74 0
8708506 오늘 썬데이가 뭘까.. [4] ㅇㅇ(182.231) 01:33 62 0
8708504 내일 점심은 셀프메이드 보끔우동+돈까스 안무는모기야갤로그로 이동합니다. 01:32 17 0
8708503 검솔 보상 빛나길래 드디어 창뱃먹나 싶었는데 [4] ㅇㅇ(118.235) 01:32 53 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2