디시인사이드 갤러리

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

갤러리 본문 영역

재획하면서 공부하기 #5

ㅇㅇ갤로그로 이동합니다. 2024.09.02 00:07:34
조회 69 추천 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 - -
8708991 서른접시 다 못팔고 몇마리씩 남던데 뭐가 문제인교? [2] 메갤러(211.228) 03:17 21 0
8708988 24시간 배그 하고 싶다 114갤로그로 이동합니다. 03:17 24 0
8708987 배고파서 응떡에 순대시켜서 먹음 ㅇㅇ(124.50) 03:17 20 0
8708986 마라탕=뷰지탕 메갤러(118.235) 03:16 12 0
8708985 중국집도요즘일회용품으로외서 [2] 제롱갤로그로 이동합니다. 03:16 30 0
8708984 꽁찌 고쳐보자... [1] 트러플앰플갤로그로 이동합니다. 03:16 60 0
8708982 세상이밉다. [2] 아현.갤로그로 이동합니다. 03:16 32 0
8708981 메붕이들 100명 모아서 배그하자 맵 에란겔 고정 ㄱㄱ Zoldyck갤로그로 이동합니다. 03:15 18 0
8708979 나 본캐로 재획한번도 한적없음 ㅇㅇ(121.177) 03:15 19 0
8708978 스카니아 메포시세 든든하네 ㄹㅇ [1] 브너갤로그로 이동합니다. 03:14 88 0
8708977 상남자는 변기에 앉아서 일 안봄 [2] ㅇㅇ갤로그로 이동합니다. 03:14 31 0
8708976 오늘도 개처맞앗는데 그래도 막판에 치킨먹엇어요 ㅜㅜ [2] 끼잉갤로그로 이동합니다. 03:14 51 0
8708975 고문하러가야겟다 윤혜인갤로그로 이동합니다. 03:14 13 0
8708974 ¤¤¤ SouthernCross갤로그로 이동합니다. 03:14 29 0
8708973 인스타 스토리 이런식으로 올리는 한녀들 ㄹㅇ 많음???? ㅇㅇ(211.36) 03:14 54 0
8708972 사랑을 해 SouthernCross갤로그로 이동합니다. 03:13 27 0
8708971 사랑해 [2] SouthernCross갤로그로 이동합니다. 03:13 33 0
8708970 토스카드재발급받음 [4] 제롱갤로그로 이동합니다. 03:13 32 0
8708969 여자랑 배그하던 그 시절이 그립구나 [6] Zoldyck갤로그로 이동합니다. 03:13 37 0
8708968 지금까지의 나는 죽었다 오늘부터 새인생이다 메갤러(110.47) 03:12 17 0
8708967 다시 오르비스로. [2] 스톤멍키갤로그로 이동합니다. 03:12 31 0
8708965 새벽에 불끄고 노캔이어폰끼고 헌티드멘션하니 좀 무섭네 [11] 코력갤로그로 이동합니다. 03:12 59 0
8708963 배그 근데 통합하고 개빡세진듯 [13] 끼잉갤로그로 이동합니다. 03:11 60 0
8708962 사랑을 전하고싶다던가 SouthernCross갤로그로 이동합니다. 03:10 33 0
8708961 아니미친놈들아 [14] 초서갤로그로 이동합니다. 03:10 69 0
8708960 메갤의 슈퍼스타들 다 자러 갔나 [1] ㅇㅇ갤로그로 이동합니다. 03:09 30 0
8708959 아침에 1750까지 봤는데 다시 올랐네 메갤러(116.121) 03:09 28 0
8708958 헥환 3만 하루시가능? [1] ㅇㅇ(121.177) 03:09 31 0
8708957 와 아니 그브하니까 이기기 존!나힘든데? [5] ★!갤로그로 이동합니다. 03:09 58 0
8708956 피터팬 고쳐보자 [4] 끼잉갤로그로 이동합니다. 03:08 61 0
8708954 엔버 템 바꿀려는데 그냥 엔버하나 더키워서 엔젤릭_버스터갤로그로 이동합니다. 03:07 25 0
8708953 저는 내일 야가다하러가야대서 잘랍니다 [2] 고양이갤러리갤로그로 이동합니다. 03:06 48 0
8708949 성교육영재반님을 위한 음식요 ㅇㅇ갤로그로 이동합니다. 03:05 31 0
8708948 와 갤에 고논박 트리오 다있네 ㅇㅇ(115.126) 03:05 19 0
8708946 초서 저 사람 30대 중반 쯤 되실 듯 [5] ㅇㅇ갤로그로 이동합니다. 03:04 52 0
8708945 생활패턴 꼬이네 ㅇㅇ(182.231) 03:04 22 0
8708944 걍빨리 겨울됐으면좋겠삼. [1] 아현.갤로그로 이동합니다. 03:04 31 0
8708943 화랑아 그거 네 이웃이 너 죽이려고 벌레 뿌리는거다 이림갤로그로 이동합니다. 03:03 28 0
8708942 고양이갤러리 논 박진혁 [1] ㅇㅇ(221.142) 03:03 31 0
8708941 뒷고가 머임?? [6] ㅇㅇ갤로그로 이동합니다. 03:02 45 0
8708940 화랑아 구글에 그거 쳐보니까 이명 아니면 조현병이라는디 [1] 고양이갤러리갤로그로 이동합니다. 03:01 49 0
8708938 오늘 배그하다가 두판연속 똑같은놈한테 주금... [5] 끼잉갤로그로 이동합니다. 03:01 47 0
8708936 상남자특 [10] 제롱갤로그로 이동합니다. 03:00 43 0
8708934 헌티드미션 병정3마리 위쪽중간에서 지키고있는거 [7] 초서갤로그로 이동합니다. 03:00 61 0
8708933 ㄴ 븅신이면 자러감 [2] 텐노지리나갤로그로 이동합니다. 02:59 34 2
8708932 '걸스데이 출신' 방민아, SM C&amp;C 전속계약..강호동·전현무 mouth1319갤로그로 이동합니다. 02:59 30 0
8708931 나는 왜 금공강이 아닌걸까 [9] 랑에갤로그로 이동합니다. 02:59 37 0
8708930 지금 루나 1800에 사는거 씹 가능이냐?? 엔젤릭_버스터갤로그로 이동합니다. 02:59 51 0
8708929 여초딩 할로윈 코스프레 레전드.jpg ㄷㄷㄷ [2] 이림갤로그로 이동합니다. 02:59 58 0
8708928 헌티드멘션 좀 무섭긴하다 안철수갤로그로 이동합니다. 02:58 25 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2