디시인사이드 갤러리

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

갤러리 본문 영역

재획하면서 공부하기 #5

ㅇㅇ갤로그로 이동합니다. 2024.09.02 00:07:34
조회 73 추천 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 - -
8708814 나세렌검마업적때도저런개추못받앗는데 [2] 제롱갤로그로 이동합니다. 02:33 30 2
8708813 고민상담해드려요 [12] 외힙추천갤로그로 이동합니다. 02:33 43 0
8708812 님들 데더다 이새끼들머임?;;; [8] ㅇㅇ갤로그로 이동합니다. 02:33 56 0
8708809 근거는 하나도 없는데 겨울에 왜 무통값 오를것같지? ㅋㅋㅋㅋ 메갤러(115.20) 02:32 31 0
8708807 아이템메이커로 환산10만찍기놀이중 [1] ㅇㅇ(182.231) 02:31 30 0
8708806 난 쿠우쿠우가면 무조건 먹는거 정해놓음 [14] 박진혁갤로그로 이동합니다. 02:31 93 0
8708805 크로아장점 [18] 제롱갤로그로 이동합니다. 02:31 1628 19
8708804 ㄴ 글 제목에서 가정환경이 보이면 개추. [2] ㅇㅇ갤로그로 이동합니다. 02:30 34 1
8708803 나 메갤 메모한거 전부 날아갔는대 반고닉들아 니들 별명좀알려줘 [10] 고양이갤러리갤로그로 이동합니다. 02:30 42 0
8708802 영써티 영포티들 격리해야됨 스톤멍키ㅇㄷ(119.64) 02:30 31 0
8708801 제네시스 에디 못생겼는데 더 돌리기 에바네 이거 [2] 아웃덕갤로그로 이동합니다. 02:30 40 0
8708800 본인 패닉셀메소 다사는중ㅇㅇ [12] 성교육영재반갤로그로 이동합니다. 02:30 107 0
8708798 ㅎㅇ 외힙추천갤로그로 이동합니다. 02:30 31 0
8708797 ㄴ 쿨찐 슼선족이면 개추뿅뿅 안무는모기야갤로그로 이동합니다. 02:30 22 3
8708796 후 사회생활 힘들다~ [4] 밤되님갤로그로 이동합니다. 02:29 28 0
8708795 패닉셀한 애들은 주식코인하지마라 ㅋㅋㅋ 메갤러(115.20) 02:29 29 0
8708793 다혈질에 입이험하고 특정사상 종교혐오하는거 농현갤로그로 이동합니다. 02:29 20 0
8708792 크로아에 비호감 고닉들 ㅈㄴ 많긴함 특히 그새끼 뭐였지 [8] Zoldyck갤로그로 이동합니다. 02:29 54 0
8708791 하버 부캐 레전드 사건 ㄷㄷㄷ [4] 슨머갤로그로 이동합니다. 02:29 38 0
8708789 ㄴ보기만해도 역겨우면 개추뿅뿅 [2] 고양이갤러리갤로그로 이동합니다. 02:29 30 1
8708788 제네윗잠 명장큐 인디언기우제 ㄱ??? 민초소망갤로그로 이동합니다. 02:29 15 0
8708787 도인비는 미드선수 까는게 존나웃기던데 [6] 박진혁갤로그로 이동합니다. 02:29 35 0
8708785 아잇 시잇펄 11월에 모기가 말이야 방구여 ㅇㅇ갤로그로 이동합니다. 02:28 17 0
8708784 썽코오리 애미.jpg ㅇㅇ(211.36) 02:28 27 0
8708783 여기 겸지 보는애없냐 ㅇㅇ갤로그로 이동합니다. 02:28 25 0
8708782 도인비 << 이새끼 젠지패는게 ㅈㄴ웃김 [6] 안무는모기야갤로그로 이동합니다. 02:28 40 0
8708781 이제 6차 강화하는게 창뱃보다 효율 구림 ㅇㅇ(210.113) 02:28 24 0
8708779 나크로아새끼인데비추좀눌러줘 [7] うめだ갤로그로 이동합니다. 02:27 58 12
8708778 중독성 엄청난 노래 외힙추천갤로그로 이동합니다. 02:27 22 0
8708776 아니 그냥 도인비 영상 전부 다 존나재밌음 [4] 고양이갤러리갤로그로 이동합니다. 02:27 41 0
8708775 스카오물풍선 믿어도되는건가요 제발요 [1] 디모갤로그로 이동합니다. 02:27 59 0
8708773 메소값 오를지 안오를지는 이거 읽어보고 판단하셈 메겔러1(175.199) 02:26 79 0
8708772 에휴씨발꿈빠는부자인데다인기까지많아서돈도버는데 [2] 농현갤로그로 이동합니다. 02:26 30 0
8708771 어어 이게누구노 [3] 박진혁갤로그로 이동합니다. 02:26 76 2
8708770 님들 난 어떤 부류임. [3] ㅇㅇ(211.225) 02:26 30 1
8708769 야 진혁아 재획반찬 내가 추천해줄게 [3] 고양이갤러리갤로그로 이동합니다. 02:26 43 0
8708768 보조랑 엠블렘 잠재 어떤가요 [4] 만두갤로그로 이동합니다. 02:25 39 1
8708767 검마 솔격 성공 ㅅㅅㅅㅅㅅ [6] 호시갤로그로 이동합니다. 02:25 64 0
8708766 진짜 비타민 1황 추천해준다 닥치고 이거 먹어라..... [9] Zoldyck갤로그로 이동합니다. 02:25 38 0
8708765 아니 씨발 데벤저 6차 다시 누르는거 였어? [1] ㅇㅇ(117.111) 02:25 37 0
8708764 지금 스카니아 메소 올랐는데 [2] ㅇㅇ갤로그로 이동합니다. 02:25 83 0
8708763 난 메이플망해더 계속할듯 [6] Pure.갤로그로 이동합니다. 02:25 36 0
8708762 근햄 메소 던지는거 보니까 곧 대폭락 오겠네 ㅇㅇ [2] ㅇㅇ(124.50) 02:24 54 0
8708761 오케 딱정했다 사냥좀하다가 쿠우쿠우 ㄱㄱㄱ [19] 박진혁갤로그로 이동합니다. 02:24 1455 25
8708760 ㄴ 냄새나는 크로아새끼면 개추 ㅋㅋㅋㅋㅋㅋ ㅇㅇ(106.101) 02:24 33 1
8708759 이 코디 남캐라면 믿음? ㄹㅇ [2] 안무는모기야갤로그로 이동합니다. 02:24 35 0
8708758 빈지노 노래는 항상 좋네 [3] 윤하람갤로그로 이동합니다. 02:24 32 0
8708757 아니 근데 나만 쿠우쿠우가면 초밥보다 다른걸 더 먹음? [9] 고양이갤러리갤로그로 이동합니다. 02:24 35 0
8708756 ●야야야 다들 비상 근햄 시동걸었다ㅌㅌㅌㅌㅌㅌㅌㅌㅌㅌㅌㅌㅌ 거지사요리갤로그로 이동합니다. 02:23 45 0
8708755 하씨발내가좆부자였으면티파티살텐데 [5] 농현갤로그로 이동합니다. 02:23 31 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2