디시인사이드 갤러리

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

갤러리 본문 영역

재획하면서 공부하기 #5

ㅇㅇ갤로그로 이동합니다. 2024.09.02 00:07:34
조회 77 추천 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 - -
8709228 히키야 3월에 림보가자 의쩡갤로그로 이동합니다. 04:57 29 0
8709227 ㅅㅂ 유튜브 이새끼들 애드블럭 막는방법 존나 신박하네 [2] 박진혁갤로그로 이동합니다. 04:57 76 0
8709226 할로윈 어제 아니엇음? ㅇㅇ(121.181) 04:56 19 0
8709225 라이플5강하니까 뭘잡든 3방컷나네 메갤러(222.102) 04:56 25 0
8709224 편의점가다가 무선이어폰한쪽 차밑으로들어감 ㅇㅇ(121.177) 04:56 19 0
8709223 탈라하트언제가나개시발겜 엔캄스갤로그로 이동합니다. 04:56 24 0
8709222 문과인데 충전기 45w 25w 뭐가 더 좋은거임? [15] 메갤러(121.147) 04:55 51 0
8709221 크로아 림잉스타 가격좀요 [2] 의쩡갤로그로 이동합니다. 04:54 49 0
8709220 메랜 생각보다 재밋네 ㅇㅇ(125.136) 04:54 40 0
8709219 춘자게임 하꼬게임됫노 ㅋ 메갤러(125.247) 04:53 64 0
8709218 눈아파서 잘라고..... [2] 스톤멍키갤로그로 이동합니다. 04:53 73 0
8709217 비싼 아파트는 ㄹㅇ 부럽단 생각 들어본적 없는디 ㅇㅇ [4] ㅇㅇ(180.68) 04:52 47 0
8709216 여자 심리 잘 아는 사람 없냐 이거 떡각 보이냐??? [5] ㅇㅇ(119.70) 04:51 83 0
8709215 요즘 유행하는 할로윈 코스프레 [6] 어머갤로그로 이동합니다. 04:50 96 0
8709214 마약 다삿으면 지금 몇포임? [2] ㅇㅇ(211.59) 04:50 36 0
8709212 아씨발꿈 엔딩이 차라리 낫다고 생각한건 최애가 처음임 [1] 농현갤로그로 이동합니다. 04:49 34 0
8709211 홍대 이런곳 가면 좆같이 생긴년놈들이 서로 그루밍해주고 있음.. ㅇㅇ(180.68) 04:49 37 0
8709209 이런곳 살면 안시끄럽냐?? [4] ㅇㅇ(180.68) 04:46 65 0
8709208 로얄 45개깟는데 무기2개나왓네 [5] 히키갤로그로 이동합니다. 04:45 65 0
8709203 46세 여자 할로윈코스튬.jpg [6] ㅇㅇ(121.130) 04:42 113 0
8709201 거지년이 남자가 많은이유 [1] 메갤러(110.14) 04:39 99 2
8709200 봇치2기나올때까지 숨참음 스톤멍키ㅇㄷ(119.64) 04:39 63 0
8709199 히로인 역대 최고. Goat 아리마 카나 행적 [2] 농현갤로그로 이동합니다. 04:39 90 0
8709198 듀랭하실분버스태워드림 [10] 세로켈갤로그로 이동합니다. 04:39 61 0
8709197 키네시스 질문 좀 [2] 메갤러(121.150) 04:37 45 0
8709195 [6] 농현갤로그로 이동합니다. 04:34 58 0
8709193 최애의아이 소름끼쳐서안봄 [1] ㅇㅇ(118.235) 04:33 59 0
8709192 할로윈 하니까 그 형이 생각나네요.. [6] 농현갤로그로 이동합니다. 04:32 83 0
8709191 짝남 시체에 뺨싸다귀를 날리는 히로인이 있다?!?! [2] 농현갤로그로 이동합니다. 04:31 73 0
8709190 ㄴㄴㅇㅇㅇ 윤혜인갤로그로 이동합니다. 04:30 20 0
8709189 오한별도 주화사기라 도입안하는데 ㅇㅇ(218.156) 04:30 30 0
8709188 메소 쌀값이 왜이렇게 됫는지 설명해줄게 [1] 메겔러1(175.199) 04:28 146 0
8709187 비빔면 먹고싶다 [8] 초서갤로그로 이동합니다. 04:28 68 0
8709186 메이플 mvp 질문좀 [2] 메갤러(221.153) 04:27 39 0
8709185 고속도로서 5t 트럭 정차한 트레일러 추돌…1명 숨져 [1] enormous0029갤로그로 이동합니다. 04:26 42 0
8709184 지금 템값 메소로 따지면 아즈모스 전이랑 똑같음? [1] ㅇㅇ(223.39) 04:26 80 0
8709183 근데 인싸들 진ㅋ자 싱기한게 [1] 사용가능한닉네임입니다.갤로그로 이동합니다. 04:25 65 0
8709182 봇치2기안나옴? [1] 스톤멍키ㅇㄷ(119.64) 04:25 80 0
8709181 럽코역사상 최악의인성 표독의신 한녀캐릭터 아리마카나 [5] 거지사요리갤로그로 이동합니다. 04:25 73 2
8709180 공부못하면 할수있는거 메갤러(211.246) 04:24 34 0
8709178 노가다는 왜 새벽 출근하라고해? [2] 메겔러1(175.199) 04:23 53 0
8709177 나도 5천단됐어 LotteMadrid갤로그로 이동합니다. 04:22 46 1
8709176 아리마카나 이거 개미친년이네 ;; [1] 농현갤로그로 이동합니다. 04:21 63 0
8709175 겨드랑이 빨리실분 [10] 히망이갤로그로 이동합니다. 04:21 84 0
8709174 22성 카룻 윗잠 30퍼 주흔 30퍼작된거 밀고 작 새로하는거 어떰? [3] 메갤러(180.71) 04:21 42 0
8709173 4시반인데 피곤한거 실화임? ㅋㄴ [1] 사용가능한닉네임입니다.갤로그로 이동합니다. 04:21 34 0
8709172 밖에 어떤여자가 뛰어가는데 ㅇㅇ갤로그로 이동합니다. 04:20 30 0
8709170 공부 못하면 노가다 공장말고 갈데가 없냐? [2] 메겔러1(175.199) 04:19 39 0
8709169 언추에서는 메타몽의산책과 대투수의 침냄새가 난다고 함 [2] 나늖짱갤로그로 이동합니다. 04:19 47 0
8709168 형 자꾸 안에 싸지말라고 했는데 ㅇㅇ(106.102) 04:17 35 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2