w3624의 등록된 링크

 w3624로 등록된 네이버 블로그 포스트 수는 101건입니다.

PyTorch : Neural Network with Quadratic Data [내부링크]

import libraries import numpy as np import torch import torch.nn as nn import torch.optim as optim import torch.nn.init as init from torch.autograd import Variable from visdom import Visdom viz = Visdom() 데이터 생성(data generation) num_data = 1000 num_epoch = 5000 noise = init.normal(torch.FloatTensor(num_data,1),std=1) x = init.uniform(torch.Tensor(num_data,1),-15,15) y = (x**2) + 3 y_noise = y + noise 시각화 input_data = torch.cat([x,y_noise],1) win=viz.scatter( X = input_data, opts=dict( xtickmin=-

PyTorch : Neural Network with Cubic Data [내부링크]

import libraries import numpy as np import torch import torch.nn as nn import torch.optim as optim import torch.nn.init as init from torch.autograd import Variable from visdom import Visdom viz = Visdom() 데이터 생성 num_data = 1000 num_epoch = 5000 x = init.uniform(torch.Tensor(num_data,1),-10,10) y = (x**3) - 3*(x**2) - 9*x - 1 noise = init.normal(torch.FloatTensor(num_data,1),std=0.5) y_noise = y + noise 시각화 input_data = torch.cat([x,y_noise],1) win=viz.scatter( X = input_data, opts=dict( xtickmin

PyTorch : Neural Network with 2D Data [내부링크]

import libraries import numpy as np import torch import torch.nn as nn import torch.optim as optim import torch.nn.init as init from torch.autograd import Variable from visdom import Visdom viz = Visdom() 데이터 생성 num_data=1000 num_epoch=10000 x = init.uniform(torch.Tensor(num_data,1),-10,10) y = init.uniform(torch.Tensor(num_data,1),-10,10) z = x**2 + y**2 x_noise = x + init.normal(torch.FloatTensor(num_data,1),std=0.5) y_noise = y + init.normal(torch.FloatTensor(num_data,1),std=0.5) z_noise = x_

PyTorch : Convolutional Neural Network [내부링크]

import libraries import torch import torch.nn as nn import torchvision.datasets as dset import torchvision.transforms as transforms from torch.autograd import Variable from torch.utils.data import DataLoader import matplotlib.pyplot as plt download data mnist_train = dset.MNIST("./", train=True, transform=transforms.ToTensor(), target_transform=None, download=True) 항목(item) print(mnist_train) # dataset.__getitem__(idx) image,label = mnist_train.__getitem__(0) print(image.size(),label) # dataset[

PyTorch : Linear_mnist [내부링크]

import libraries import numpy as np import torch import torch.nn as nn import torch.optim as optim import torch.nn.init as init import torchvision.datasets as dset import torchvision.transforms as transforms from torch.utils.data import DataLoader from torch.autograd import Variable set hyperparameters batch_size = 16 learning_rate = 0.0002 num_epoch = 10 데이터 생성 download data mnist_train = dset.MNIST("./", train=True, transform=transforms.ToTensor(), target_transform=None, download=True) mnist_t

PyTorch : CNN_naive [내부링크]

import libraries import numpy as np import torch import torch.nn as nn import torch.optim as optim import torch.nn.init as init import torchvision.datasets as dset import torchvision.transforms as transforms from torch.utils.data import DataLoader from torch.autograd import Variable set hyperparameters batch_size = 16 learning_rate = 0.0002 num_epoch = 20 데이터 생성 download data mnist_train = dset.MNIST("./", train=True, transform=transforms.ToTensor(), target_transform=None, download=True) mnist_t

PyTorch : Specific_MNIST [내부링크]

import libraries import numpy as np import torch import torch.nn as nn import torch.optim as optim import torch.nn.init as init import torchvision.datasets as dset import torchvision.transforms as transforms from torch.utils.data import DataLoader from torch.autograd import Variable import matplotlib.pyplot as plt set hyperparameters batch_size = 16 learning_rate = 0.0002 num_epoch = 10 데이터 생성 download data mnist_train = dset.MNIST("./", train=True, transform=transforms.ToTensor(), target_transf

PyTorch : CNN_CIFAR10 [내부링크]

import libraries import numpy as np import torch import torch.nn as nn import torch.optim as optim import torch.nn.init as init import torchvision.datasets as dset import torchvision.transforms as transforms from torch.utils.data import DataLoader from torch.autograd import Variable set hyperparameters batch_size = 256 learning_rate = 0.0002 num_epoch = 100 데이터 생성 download data mnist_train = dset.CIFAR10("./", train=True, transform=transforms.ToTensor(), target_transform=None, download=True) mni

PyTorch : Custom_DataLoader [내부링크]

import libraries import torch import torch.utils.data as data import torchvision.datasets as dset import torchvision.transforms as transforms set hyperparameters batch_size = 2 ImageFolder & dataloader img_dir = "./images" img_data = dset.ImageFolder(img_dir, transforms.Compose([ transforms.Resize(256), transforms.RandomResizedCrop(224), transforms.RandomHorizontalFlip(), transforms.ToTensor(), ])) img_batch = data.DataLoader(img_data, batch_size=batch_size, shuffle=True,drop_last=True) Test for

PyTorch : VGGNet [내부링크]

import libraries import numpy as np import torch import torch.nn as nn import torch.optim as optim import torch.nn.init as init import torch.utils.data as data import torchvision.datasets as dset import torchvision.transforms as transforms from torch.utils.data import DataLoader from torch.autograd import Variable set hyperparameters batch_size= 1 learning_rate = 0.0002 epoch = 100 dataloader img_dir = "./images" img_data = dset.ImageFolder(img_dir, transforms.Compose([ transforms.Resize(256), t

PyTorch : GoogleNet [내부링크]

import libraries import numpy as np import torch import torch.nn as nn import torch.optim as optim import torch.nn.init as init import torch.utils.data as data import torchvision.datasets as dset import torchvision.transforms as transforms from torch.utils.data import DataLoader from torch.autograd import Variable set hyperparameters batch_size= 1 learning_rate = 0.0002 epoch = 100 dataloader img_dir = "./images" img_data = dset.ImageFolder(img_dir, transforms.Compose([ transforms.RandomResizedC

PyTorch : ResNet(Residual Networks) [내부링크]

import libraries import numpy as np import torch import torch.nn as nn import torch.optim as optim import torch.nn.init as init import torch.utils.data as data import torchvision.datasets as dset import torchvision.transforms as transforms from torch.utils.data import DataLoader from torch.autograd import Variable set hyperparameters batch_size= 1 learning_rate = 0.0002 epoch = 100 dataloader img_dir = "./images" img_data = dset.ImageFolder(img_dir, transforms.Compose([ transforms.Resize(256), t

PyTorch : Weight_Regularization [내부링크]

import libraries import numpy as np import torch import torch.nn as nn import torch.optim as optim import torch.nn.init as init import torchvision.datasets as dset import torchvision.transforms as transforms from torch.utils.data import DataLoader from torch.autograd import Variable set hyperparameters batch_size = 16 learning_rate = 0.0002 num_epoch = 1 데이터 생성 download data mnist_train = dset.MNIST("./", train=True, transform=transforms.ToTensor(), target_transform=None, download=True) mnist_te

PyTorch : Dropout [내부링크]

import libraries import numpy as np import torch import torch.nn as nn import torch.optim as optim import torch.nn.init as init import torchvision.datasets as dset import torchvision.transforms as transforms from torch.utils.data import DataLoader from torch.autograd import Variable set hyperparameters batch_size = 16 learning_rate = 0.0002 num_epoch = 20 데이터 생성 download data mnist_train = dset.MNIST("./", train=True, transform=transforms.ToTensor(), target_transform=None, download=True) mnist_t

PyTorch : Data_Augmentation(데이터 증강) [내부링크]

import libraries import numpy as np import torch import torch.nn as nn import torch.optim as optim import torch.nn.init as init import torchvision.datasets as dset import torchvision.transforms as transforms from torch.utils.data import DataLoader from torch.autograd import Variable from PIL import Image import matplotlib.pyplot as plt set hyperparameters batch_size = 16 learning_rate = 0.0002 num_epoch = 2 데이터 생성 download data mnist_train = dset.MNIST("./", train=True, transform = transforms.Co

PyTorch : Weight_Initialization(가중치 초기화) [내부링크]

import libraries import numpy as np import torch import torch.nn as nn import torch.optim as optim import torch.nn.init as init import torchvision.datasets as dset import torchvision.transforms as transforms from torch.utils.data import DataLoader from torch.autograd import Variable set hyperparameters batch_size = 16 learning_rate = 0.0002 num_epoch = 1 데이터 생성 download data mnist_train = dset.MNIST("./", train=True, transform=transforms.ToTensor(), target_transform=None, download=True) mnist_te

PyTorch : Learning_Rate_Decay [내부링크]

Learning Rate Decay는 기존의 Learning Rate가 높은 경우 loss 값을 내릴 수는 있지만, 최적의 학습을 벗어나는 경우가 생기고 낮은 경우 최적의 학습을 할 수 잇지만 그 단계까지 너무 오랜 시간이 걸린다. 따라서, 처음 시작에는 Learning Rate 값을 크게 준 후 일정 epoch 마다 값을 감소시켜서 최적의 학습까지 더 빠르게 도달할 수 있게 해준다. import libraries import numpy as np import torch import torch.nn as nn import torch.optim as optim import torch.nn.init as init import torchvision.datasets as dset import torchvision.transforms as transforms from torch.optim import lr_scheduler from torch.utils.data import DataLoade

PyTorch : Data_Normalization [내부링크]

import libraries import numpy as np import torch import torch.nn as nn import torch.optim as optim import torch.nn.init as init import torchvision.datasets as dset import torchvision.transforms as transforms from torch.utils.data import DataLoader from torch.autograd import Variable set hyperparameters batch_size = 16 learning_rate = 0.0002 num_epoch = 1 데이터 생성 download data mnist_train = dset.MNIST("./", train=True, transform=transforms.Compose([ transforms.ToTensor(), transforms.Normalize(mean

PyTorch : Batch_Normalization [내부링크]

import libraries import numpy as np import torch import torch.nn as nn import torch.optim as optim import torch.nn.init as init import torchvision.datasets as dset import torchvision.transforms as transforms from torch.utils.data import DataLoader from torch.autograd import Variable set hyperparameters batch_size = 16 learning_rate = 0.0002 num_epoch = 1 데이터 생성 download data mnist_train = dset.MNIST("./", train=True, transform=transforms.ToTensor(), target_transform=None, download=True) mnist_te

PyTorch : Gradient_Descent_Variants [내부링크]

import libraries import numpy as np import torch import torch.nn as nn import torch.optim as optim import torch.nn.init as init import torchvision.datasets as dset import torchvision.transforms as transforms from torch.utils.data import DataLoader from torch.autograd import Variable set hyperparameters batch_size = 16 learning_rate = 0.0002 num_epoch = 1 데이터 생성 download data mnist_train = dset.MNIST("./", train=True, transform=transforms.ToTensor(), target_transform=None, download=True) mnist_te

PyTorch : Transfer_Learning [내부링크]

import libraries import torch import torch.nn as nn import torch.optim as optim import torchvision.models as models import torchvision.datasets as dset import torchvision.transforms as transforms from torch.utils.data import DataLoader from torch.autograd import Variable import matplotlib.pyplot as plt set hyperparameters batch_size = 6 learning_rate = 0.001 epoch = 50 num_category = 2 dataloader img_dir = "./images" img_data = dset.ImageFolder(img_dir, transforms.Compose([ transforms.RandomResi

PyTorch : Image Style Transfer [내부링크]

import libraries import torch import torch.nn as nn import torch.optim as optim import torch.utils as utils import torch.utils.data as data import torchvision.models as models import torchvision.utils as v_utils import torchvision.transforms as transforms from torch.autograd import Variable import matplotlib.pyplot as plt from PIL import Image set hyperparameters content_layer_num = 1 image_size = 256 epoch = 5000 data content_dir = "./image/content/Neckarfront_origin.jpg" style_dir = "./image/s

PyTorch : Basic_Autoencoder [내부링크]

import libraries import numpy as np import torch import torch.nn as nn import torch.optim as optim import torch.nn.init as init import torchvision.datasets as dset import torchvision.transforms as transforms from torch.utils.data import DataLoader from torch.autograd import Variable import matplotlib.pyplot as plt set hyperparameters batch_size = 16 learning_rate = 0.0002 num_epoch = 5 데이터 생성 download data mnist_train = dset.MNIST("./", train=True, transform=transforms.ToTensor(), target_transfo

PyTorch : Convolutional_Autoencoder [내부링크]

import libraries import numpy as np import torch import torch.nn as nn import torch.optim as optim import torch.nn.init as init import torchvision.datasets as dset import torchvision.transforms as transforms from torch.utils.data import DataLoader from torch.autograd import Variable import matplotlib.pyplot as plt set hyperparameters batch_size = 100 learning_rate = 0.0002 num_epoch = 1 데이터 생성 download data mnist_train = dset.MNIST("./", train=True, transform=transforms.ToTensor(), target_transf

PyTorch : Convolutional_Denoising_Autoencoder [내부링크]

import libraries import numpy as np import torch import torch.nn as nn import torch.optim as optim import torch.nn.init as init import torchvision.datasets as dset import torchvision.transforms as transforms from torch.utils.data import DataLoader from torch.autograd import Variable import matplotlib.pyplot as plt set hyperparameters batch_size = 100 learning_rate = 0.0002 num_epoch = 1 데이터 생성 download data mnist_train = dset.MNIST("./", train=True, transform=transforms.ToTensor(), target_transf

PyTorch : Variational_Autoencoder [내부링크]

import libraries import numpy as np import torch import torch.nn as nn import torch.optim as optim import torch.nn.init as init import torchvision.datasets as dset import torchvision.transforms as transforms from torch.utils.data import DataLoader from torch.autograd import Variable import matplotlib.pyplot as plt set hyperparameters batch_size = 128 learning_rate = 0.0005 num_epoch = 10 hidden_size = 50 데이터 생성 download data mnist_train = dset.MNIST("./", train=True, transform=transforms.ToTenso

PyTorch : Convolutional Variational Autoencoder [내부링크]

import libraries import numpy as np import torch import torch.nn as nn import torch.optim as optim import torch.nn.init as init import torchvision.datasets as dset import torchvision.transforms as transforms from torch.utils.data import DataLoader from torch.autograd import Variable import torchvision.utils as v_utils import matplotlib.pyplot as plt set hyperparameters batch_size = 128 learning_rate = 0.0005 num_epoch = 1 hidden_size = 2 데이터 생성 download data mnist_train = dset.MNIST("./", train=

PyTorch : GAN Basic [내부링크]

Unsupervised Representation Learning with Deep Convolutional Generative Adversarial import libraries import os import torch import torch.nn as nn import torch.utils as utils import torch.nn.init as init import torchvision.utils as v_utils import torchvision.datasets as dset import torchvision.transforms as transforms import numpy as np import matplotlib.pyplot as plt from collections import OrderedDict set hyperparameters epoch = 50 batch_size = 512 learning_rate = 0.0002 num_gpus = 1 z_size = 5

PyTorch : CNN_clean [내부링크]

import libraries import numpy as np import torch import torch.nn as nn import torch.optim as optim import torch.nn.init as init import torchvision.datasets as dset import torchvision.transforms as transforms from torch.utils.data import DataLoader from torch.autograd import Variable from visdom import Visdom viz = Visdom() set hyperparameters batch_size = 16 learning_rate = 0.0002 num_epoch = 10 데이터 생성 download data mnist_train = dset.MNIST("./", train=True, transform=transforms.ToTensor(), targ

PyTorch : CNN_clean_swish [내부링크]

import libraries import numpy as np import torch import torch.nn as nn import torch.optim as optim import torch.nn.init as init import torchvision.datasets as dset import torchvision.transforms as transforms from torch.utils.data import DataLoader from torch.autograd import Variable, Function from visdom import Visdom viz = Visdom() #@staticmethod을 사용하면 해당 메소드의 특별히 추가되는 인자없이 정적 메소드로 정의 class Swish(Function): @staticmethod def forward(ctx, i): result = i * i.sigmoid() ctx.save_for_backward(result

Python : keras 합성곱 신경망 [내부링크]

from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense #합성곱층 쌓기 conv1 = tf.keras.Sequential() conv1.add(Conv2D(10, (3, 3), activation='relu', padding='same', input_shape=(28, 28, 1)) #풀링층 쌓기 conv1.add(MaxPooling2D((2, 2))) #특성 맵 펼치기 conv1.add(Flatten()) #완전 연결층 쌓기 conv1.add(Dense(100, activation='relu')) conv1.add(Dense(10, activation='softmax')) #모델구조 살펴보기 conv1.summary() #합성곱 신경망 모델 훈련하기 conv1.compile(optimizer='adam', loss='categorical_crossentropy',metrics=['accuracy']) 아담(

Python : 드롭아웃 [내부링크]

신경망에서 과대적합을 줄이는 방법으로 드롭아웃이있다. 무작위로 일부 뉴런을 비활성화시킨다. 무작위로 일부 뉴런을 비활성화시키면 특정 뉴런에 과도하게 의존하여 훈련하는 것을 막아준다. #드롭아웃 적용해 합성곱 신경망 구현 from tensorflow.keras.layers import Dropout conv2 = tf.keras.Sequential() conv2.add(Conv2D(10, (3, 3), activation='relu', padding='same', input_shape=(28, 28, 1))) conv2.add(MaxPooling2D((2, 2))) conv2.add(Flatten()) conv2.add(Dropout(0.5)) conv2.add(Dense(100, activation='relu')) conv2.add(Dense(10, activation='softmax')) #드롭아웃충 확인 conv2.summary() conv2.compile(optimizer='a

PyTorch : 가상환경 구축 [내부링크]

cmd 실행 cd [가상환경을 구축할 곳] 가상환경 생성 python -m venv [가상환경 이름] 가상환경 활성화 source [가상환경 이름]/bin/activate 패키지 설치/삭제 #설치 pip install [패키 지명] #삭제 pip uninstall [패키 지명] 설치한 가상환경 재활성화 #설치한 가상환경으로 이동후 scripts\activate

PyTorch : visdom [내부링크]

visdom은 파이썬의 시각화 도구이다. 사용법 가상환경 실행 pip install visom 서버 실행 python -m visdom.server http://localhost:8097에 접속한다. 다음과 같은 화면이 나온다. 사용법 from visdom import Visdom viz = Visdom() 텍스트 viz.text("Hello wolrd", env="main") 임의의 이미지 생성 import torch r = torch.randn(3, 200, 200) # 200x200크기의 임의 이미지 데이터 생성 viz.image(r) images_window = viz.images( np.random.rand(10,3,64,64), opts=dict( title = "random", caption = "random noise" ) ) 2D Scatter Plot Y = np.random.rand(100) scatter_window=viz.scatter( X=np.random.

PyTorch : 선형 회귀(Linear Regression) [내부링크]

1.import packages import numpy as np import torch import torch.nn as nn import torch.optim as optim import torch.nn.init as init from torch.autograd import Variable from visdom import Visdom viz = Visdom() 2.데이터 생성 num_data = 1000 num_epoch = 1000 #정규분포에서 가져온다 noise = init.normal(torch.FloatTensor(num_data,1),std=1) #균일분포에서 가져온다 x = init.uniform(torch.Tensor(num_data,1),-10,10) y = 2*x+3 y_noise = 2*x+3+noise 3.시각화 input_data = torch.cat([x,y_noise],1) win=viz.scatter( X = input_data, opts=dict(

PyTorch : Spiral, Multiclass [내부링크]

import packages import numpy as np import torch import torch.nn as nn import torch.optim as optim import torch.nn.init as init from torch.autograd import Variable import matplotlib.pyplot as plt 나선모델 N = 100 # number of points per class D = 2 # dimensionality K = 3 # number of classes X = np.zeros((N*K,D)) # data matrix (each row = single example) y = np.zeros(N*K, dtype='uint8') # class labels for j in range(K): ix = range(N*j,N*(j+1)) r = np.linspace(0.0,1,N) # radius t = np.linspace(j*4,(j+1)

Python : 다층 신경망 [내부링크]

import numpy as np import matplotlib.pyplot as plt from sklearn.datasets import load_breast_cancer from sklearn.model_selection import train_test_split cancer = load_breast_cancer() x = cancer.data y = cancer.target x_train_all, x_test, y_train_all, y_test = train_test_split(x, y, stratify=y, test_size=0.2, random_state=42) x_train, x_val, y_train, y_val = train_test_split(x_train_all, y_train_all, stratify=y_train_all, test_size=0.2, random_state=42) class SingleLayer: def __init__(self, learni

Python : 다중분류 [내부링크]

import numpy as np class MultiClassNetwork: def __init__(self, units=10, batch_size=32, learning_rate=0.1, l1=0, l2=0): self.units = units # 은닉층의 뉴런 개수 self.batch_size = batch_size # 배치 크기 self.w1 = None # 은닉층의 가중치 self.b1 = None # 은닉층의 절편 self.w2 = None # 출력층의 가중치 self.b2 = None # 출력층의 절편 self.a1 = None # 은닉층의 활성화 출력 self.losses = [] # 훈련 손실 self.val_losses = [] # 검증 손실 self.lr = learning_rate # 학습률 self.l1 = l1 # L1 손실 하이퍼파라미터 self.l2 = l2 # L2 손실 하이퍼파라미터 def forpass(self, x): z1 = np.dot(x, s

Python : tensorflow를 이용한 이미지 분류 [내부링크]

import tensorflow as tf #패션 MNIST 데이터 세트 불러오기 (x_train_all, y_train_all), (x_test, y_test) = tf.keras.datasets.fashion_mnist.load_data() imshow()함수는 넘파이 배열을 입력받아 이미지를 그린다. matplotlib 패키지는 컬러맵을 사용하여 이미지를 그린다. cmap 매개변수로 사용하는데 직은 녹색에서 밝은 노란색으로 표하하는 'viridis'이다. MNIST 데이터는 흑백이미지 이므로 cmap 매개변수를 'gray'로 지정한다. import matplotlib.pyplot as plt plt.imshow(x_train_all[0], cmap='gray') plt.show() #타깃의 내용과 이미지 확인하기 print(y_train_all[:10]) #[9 0 0 3 0 2 7 2 5 5] #의미 확인하기 class_names = ['티셔츠/윗도리', '바지', '스웨터'

Python : 텐서플로와 케라스를 사용한 신경망 [내부링크]

케라스 케라스는 딥러닝 패키지를 편리하게 사용하기 위해 만들어진 래퍼 패키지이다. from tensorflow.keras import Sequential from tensorflow.keras.layers import Dense #신경망 모델을 만들기 model = Sequential() #은닉층과 출력층 모델에 추가 model.add(Dense(100, activation='sigmoid', input_shape=(784,))) model.add(Dense(10, activation='softmax')) #최적화 알고리즘과 손실 함수 지정하기 model.compile(optimizer='sgd', loss='categorical_crossentropy', metrics=['accuracy']) #모델훈련하기 history = model.fit(x_train, y_train_encoded, epochs=40, validation_data=(x_val, y_val_encoded)) #

Python : 합성곱 [내부링크]

합성곱 두 함수에 적용하여 새로운 함수를 만드는 수학연산자. 1. 배열 하나 선택해 뒤집기 두개의 배열이 있다고 가정하고 두 배열중 원소수가 적은 배열의 원소 순서를 뒤집는다. 2. 첫 밴째 합성곱 뒤집은 배열을 원소수가 많은 배열의 왼쪽 끝자리에 맞춰 놓는다. 각 배열 원소끼리 곱한후 더한다. 3. 두 번째 합성곱 원소수가 적은 배열의 원소를 오른쪽으로 한깐 이동시켜 각 배열 원소끼리 곱한 후 더한다. 4. 나머지 합성곱 같은 방법으로 진행하는데 원소수가 적은 배열의 오른쪽 끝에 도달할때 까지 진행한다. 합성곱 구현하기 #넘파이 배열 정의하고 배열 하나 선택해 뒤집기 import numpy as np w = np.array([2, 1, 5, 3]) x = np.array([2, 8, 3, 7, 1, 2, 0, 4, 5]) #넘파이의 flip() 함수를 사용하면 배열을 간단하게 뒤집을 수 있다. w_r = np.flip(w) print(w_r) #[3 5 1 2] #슬라이스 연산자로

Python : 패딩(padding)과 스트라이드(stride) [내부링크]

패딩 : 원본 배열의 양 끝에 빈 원소를 추가하는 것을 말한다. 스트라이드 : 미끄러지는 배열의 간격을 조절하는것을 말한다. 밸리드 패딩(valid padding) 원본 배열에 패딩을 추가하지 않고 미끄러지는 배열이 원본 배열의 끝으로 갈 떄까지 교차상관을 수행 밸리드 패딩의 결과로 얻는 배열의 크기는 원본 배열보다 항상 작다. 배열이긴 원소수에서 끝에있는 것은 참여정도가 낮고 가운데 있으면 합성곱 연산에 많이 참여 참여도가 높다. x 2 8 3 7 1 2 0 4 5 w 2 1 5 3 w 2 1 5 3 w 2 1 5 3 w 2 1 5 3 w 2 1 5 3 w 2 1 5 3 import numpy as np w = np.array([2, 1, 5, 3]) x = np.array([2, 8, 3, 7, 1, 2, 0, 4, 5]) from scipy.signal import correlate correlate(x, w, mode='valid') #array([48, 57, 24, 25,

Python : TensorFlow의 합성곱 [내부링크]

텐서플로에서 2차원 합성곱을 수행하는 함수는 conv2d()이다. conv2d()함수는 입력하면 4차원 배열을 기대한다. 2차원 배열을 4차원 배열로 바꿔 합성곱을 수행한다. reshape() 매서드로 2차원에서 4차원 배열로 바꾸고 템서플로는 실수형의 입력을 기대하기 때문에 넘파이의 astype()매서드로 입력의 자료형을 실수로 바꿔 준다. import tensorflow as tf x_4d = x.astype(np.float).reshape(1, 3, 3, 1) w_4d = w.reshape(2, 2, 1, 1) c_out = tf.nn.conv2d(x_4d, w_4d, strides=1, padding='SAME') c_out.numpy().reshape(3, 3) #array([[ 2., 4., 6.], # [ 8., 10., 12.], # [14., 16., 18.]])

Python : 풀링 연산 [내부링크]

합성곱 신경망에서 합성곱이 일어나는 층을 합성곱층, 풀링이 일어나는 층을 풀링층이라고 부른다. 합성곱층과 풀링층에서 만들어진 결과를 특성맵dlfkrh qnfmsek. 최대 풀링 풀링으로 최댓값을 고르는 방식을 최대 풀링(max pooling)이라고 한다. 풀링 영역의 크기는 보통 2*2로 지정한다. 풀링 영역이 겹치지 않도록 스캔한다. 평균 풀링 평균 풀링(average pooling)운 풀링 영역의 평균값을 계산한다. 보통은 평균 풀링보다 최대 풀링을 선호한다. 최대 풀링을 선호하는 이유는 합성곱층을 통과하는 특징들을 희석시킬 가능성이 높기때문이다. 입력에서 합성곱 필터가 찾고자 하는 부분은 특성 맵의 가장 큰 값으로 활성화되는데 평균 풀링은 가장 큰 특성의 값을 상쇄시키기 때문이다. import tensorflow as tf x = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]]) x = x.res

Python : 합성곱 신경망 [내부링크]

합성곱 신경망에서 자주 사용하는 활성화 함수는 렐루(ReLU)가 있다. 렐루 함수 전까지는 은닉층에 시그모이드 함수를 활성화 ㅎ마수로 사용했다. 렐루 함수는 주로 합성곱층에 적용되는 활성화 함수로 합성곱신경망의 성능을 더 높여준다. 렐루 함수는 0보다 큰 값은 그대로 통과시키고 0보다 작은 값은 0으로 만든다. 렐루함수 구현 def relu(x): return np.maximum(x, 0) x = np.array([-1, 2, -3, 4, -5]) relu(x) #array([0, 2, 0, 4, 0]) r_out = tf.nn.relu(x) r_out.numpy() #array([0, 2, 0, 4, 0]) 합성곱 신경망 import tensorflow as tf class ConvolutionNetwork: def __init__(self, n_kernels=10, units=10, batch_size=32, learning_rate=0.1): self.n_kernels = n_

Python : Python-Words [내부링크]

워드 문서 생성 및 파일로 저장 from docx import Document import python-docx filename = '워드문서 1.docx' document = Document() document.save(filename) 워드 문서 생성 및 문단 추가 from docx import Document filename = '워드문서 2.docx' document = Document() document.add_paragraph('첫 번째 문단 입니다.') document.add_paragraph('두 번째 문단 입니다.') document.add_paragraph('세 번째 문단 입니다.') document.save(filename) 첫 번째 문단 출력 from docx import Document filename = '워드문서 2.docx' # document 객체 생성 document = Document(filename) # 문단 목록 paragraphs = docum

Python : 위스콘신 유방암 데이터 분류분석(1) [내부링크]

xgboost를 이용한 분류 1) Import packages import pandas as pd import numpy as np from sklearn.model_selection import train_test_split import matplotlib.pyplot as plt import xgboost as xgb from xgboost import plot_importance from xgboost import plot_importance 2) 데이터 전처리 df= pd.read_csv('wisc_bc_data.csv') df.head() df = df.drop('id', axis=1) df.head() df['diagnosis'] = df['diagnosis'].apply(lambda x : 1 if x== "M" else 0) x_train, x_test, y_train, y_test = train_test_split(df.iloc[:,1:], df['diagnosis'

Python : 위스콘신 유방암 데이터 분류분석(2) [내부링크]

랜덤포레스트를 이용한 분석 1) Import packages import pandas as pd import numpy as np from sklearn.model_selection import train_test_split import matplotlib.pyplot as plt from sklearn.metrics import confusion_matrix, classification_report, roc_auc_score from sklearn.ensemble import RandomForestClassifier from sklearn.metrics import accuracy_score 2) 데이터 전처리 df = df.drop('id', axis=1) df.head() df['diagnosis'] = df['diagnosis'].apply(lambda x : 1 if x== "M" else 0) x_train, x_test, y_train, y_test = train_tes

Python : 선형 회귀 [내부링크]

당뇨병 데이터 준비하기 from sklearn.datasets import load_diabetes diabetes = load_diabetes() 시각화하기 import matplotlib.pyplot as plt plt.scatter(diabetes.data[:, 2], diabetes.target) plt.xlabel('x') plt.ylabel('y') plt.show() 훈련데이터 준비 x = diabetes.data[:, 2] y = diabetes.target 경사 하강법이란 산점도 그래프를잘 표현하는 직선의 방정식을 찾는것이 회귀 알고리즘의 목표이다. 이러한 알고리즘 중 하나가 경사 하강법(gradient descent)이다. 경사 하강법은 모델이 데이터를 잘 표현할 수 있도록 기울기를 사용하여 모델을 조금씩 조정하는 최적화 알고리즘이다. 훈련 데이터에 잘 맞는 기울기와 절편 찾는 방법 무작위로 기울기와 절편을 정한다.(무작위로 모델 생성) x에서 샘플 하나를 선택해

Python : 로지스틱 회귀 [내부링크]

퍼셉트론(perceptron) 이진 분류에서 최적의 가중치를 학습하는 퍼셉트론 알고리즘 퍼셉트론의 구조는 선형 회귀와 유사하다. 하지만 퍼셉트론은 마지막 단꼐에서 샘플을 이진 분류하기 위하여 계단 함수(step function)을 사용한다. 계단 함수를 통과한 값을 다시 가중치와 절편을 업데이트 하는데 사용한다. 선형함수 w_1*x_1 + w_w2*x_2 + b = z 계단함수는 z가 0보다 크거나 같으면 1로, 0보다 작으면 -1로 분류한다. 아달린(Adaline) 퍼셉트론 이후 등장한 것으로 퍼셉트론을 개선한 정응형 선형 누련이다. 아달린은 선형 함수의 결과를 학습에 사용한다. 계단 함수의 결과는 예측에만 활용한다. 역방향 계산이 계단 함수 출력 이후에 일어나지 않고 선형 함수 출력이 이후에 진행된다. 로지스틱 회귀(logistic regression) 로지스틱 회귀는 아달린에서 조금더 발전한 형태 로지스틱 회귀는 선형 함수를 통과시켜 얻은 z를 임계 함수에 보내기 전에 변형시킨

Python : 다양한 훈련방법 [내부링크]

import numpy as np import matplotlib.pyplot as plt from sklearn.datasets import load_breast_cancer from sklearn.model_selection import train_test_split from sklearn.linear_model import SGDClassifier cancer = load_breast_cancer() x = cancer.data y = cancer.target x_train_all, x_test, y_train_all, y_test = train_test_split(x, y, stratify=y, test_size=0.2, random_state=42) sgd = SGDClassifier(loss='log', random_state=42) sgd.fit(x_train_all, y_train_all) sgd.score(x_test, y_test) #0.833333333333333

Oracle : 오라클의 함수 [내부링크]

함수는 사용자가 원하는 데이터를 검색할 때 자주 사용한다. 함수는 구현이 복잡한 기능들을 미리 생성해 두고 손쉽게 사용할 수 있도록 하기 위한 기능이다. 제공되는 함수들은 기본적으로 SQL 문을 더욱 강력하게 해준다. 함수는 데이터값을 조작하는 데 사용된다. 데이터 타입 변환 SQL 함수는 때때로 인수를 받아들일 수 있으며 항상 값을 반환한다. 함수의 특성 데이터에 계산을 수행할 수 있다. 개별적인 데이터 항목을 수정할 수 있다. 행의 그룹에 관한 결과를 조작할 수 있다. 출력을 위한 날짜와 숫자 형식을 조절할 수 있다. 열의 데이터 타입을 변환할 수 있다. 함수의 분류 함수의 유형은 크게 단일행 함수(single-row function)와 다중행(multi-row function) 함수로 이루어져 있다. 단일행 함수 1. 단일행 함수의 개요 단일행 함수는 단일 행에 대해서만 실행되며 행 당 하나의 결과를 반환한다. 단일행 함수는 데이터 항목을 조작하고 인수를 받아들이고 하

Oracle : 다중행 함수 [내부링크]

다중행 함수의 개요 다중행 함수는 데이터의 다중 행을 대상으로 조회하여 하나의 결과값을 반환한다. 단일행 함수와 달리 다중행 함수는 행 집합에 대해 실행되어 그룹 당 하나의 결과를 산출하고 행 집합은 전체 테이블이나 그룹으로 분할된 테이블로 구성될 수 있다. 다중행 함수는 select 문 뒤에 배치한다. 여러 다중행 함수는 select 문 뒤에 ,(콤마)로 구분하여 함께 사용할 수 있다. 다중행 함수의 집계 관련 함수는 where 문에서는 사용할 수 없다. distinct 명령어를 사용하면 중복되지 않는 값만 사용한다. 다중행 함수의 집계 관련 함수는 group by 문을 사용하지 않으면 일반 컬럼과 사용할 순 없다. 다중행 함수의 집계 관련 함수 (1) count 함수 형식 count(expr|*) count 함수는 인자인 expr 의 행 개수이며 null 값은 무시한다. count 함수의 인자인 expr 는 null 이 아닌 값을 평가한다. count 함수는 테이블에서 컬럼의 만

Oracle : 데이터베이스 [내부링크]

데이터베이스 데이터베이스는 조직의 여러 응용 시스템들이 공동으로 사용하기 위해 통합하고 저장한 데이터들로써 중복을 최소화하여 컴퓨터 기억 장치에 모아 놓은 집합체이다. 데이터베이스는 유용한 데이터의 집합으로 다양한 데이터들을 관리하기 위해서 데이터를 저장하고 사용자가 원하는 정보를 쉽게 찾을 수 있어야 한다. 데이터베이스는 조직에 필요한 정보를 얻기 위해 논리적으로 연관된 데이터를 모아 구조적으로 통합해 놓은 것이다. 데이터베이스가 유용한 데이터가 되기 위해서는 원하는 정보를 쉽게 얻거나 수정 삭제가 가능해야 한다. 데이터베이스는 개별 객체인 개체(entity)를 가지고 있으며 개체의 형태는 다음과 같다. 도메인: 하나의 속성이 취할 수 있는 모든 값이다. 개체 인스턴스: 하나의 개체에 개체 값을 갖는 실제 레코드이다. 객체 집합: 개체 인스턴스의 집합이다. 데이터베이스는 개체 간에 여러 가지 상호 관계를 의미한 것으로 속성 관계, 객체 관계 등이 있으며 데이터베이스의 가

Oracle : JDK 설치 [내부링크]

JDK 8 버전 설치 http://www.oracle.com/ 윈도우 환경 변수 설정 환경 변수는 시스템의 실행 파일이 있는 디렉터리를 지정한다. 환경 변수는 운영체제에서 동작하는 응용 소프트웨어가 참조하기 위한 설정이 기록되는 곳이다. 자바의 JDK 를 구동하기 위해서는 환경 변수에서 설정을 해주어야 한다 1. PC 아이콘 마우스 우클릭 2. 고급 시스템 설정 3. 고급 탭 4. 환경변수 버튼 5. 시스템 변수 에서 ‘새로 만들기’ 6. 변수이름: JAVA_HOME 7. 디렉터리 찾아보기 8. 변수 값: jdk1.8.0_xxx 폴더 선택 9. 확인 10. Path 설정 Path 변수는 실행 디렉터리의 위치를 설정하는 곳이다. Path 변수를 클릭하여 자바의 실행 디렉터리를 Path 에 등록한다. 일반적으로 프로그램의 실행 디렉터리의 이름은 binary 의 약자인 bin 으로 되어있다. 11. 시스템 변수 창에서 Path 클릭 후 편집 버튼을 누른다. 12. %JAVA_HOME%\b

Oracle: 데이터베이스 프로그래밍 [내부링크]

데이터베이스 프로그래밍은 RDBMS 에 데이터를 정의하고 저장된 데이터를 읽어와 데이터를 변경하는 프로그램을 작성하는 과정 데이터 정의어(DDL) 데이터 정의어는 데이터베이스를 구축하는데 필요한 매크로와 특수 명령어 군으로 이루어진 독립 언어로 논리적인 데이터의 정의, 기술을 위하여 사용된다. 데이터 정의어는 데이터 항목, 레코드, 세그먼트, 그룹 데이터 항목 등을 규정한다. 데이터 정의어는 키가 되는 데이터 항목을 규정하고 그 키가 유일한 것인지 중복된 것인지를 명시한다. 데이터 정의어는 세그먼트 간의 관계를 규정하고 이름을 부여한다. 데이터의 정의어는 스키마, 도메인, 테이블, 뷰, 인덱스를 정의하거나 제거하는 문으로 구성된다. 데이터의 정의어로 정의된 내용은 메타데이터가 되고 시스템 카탈로그에 저장된다. 데이터 조작어(DML) 데이터 조작어는 응용 프로그램이 데이터베이스에 명령하여 원하는 데이터를 사용자에게 제공할 수 있도록 한다. 데이터 조작어는 데이터의 전송, 편집, 연산

Oracle : SQL(Structured Query Language) [내부링크]

SQL 의 개요 SQL 은 데이터베이스에서 데이터의 검색, 데이터의 삽입, 데이터의 수정, 데이터의 삭제를 하기 위한 데이터베이스 질의 언어로 관계 대수나 관계 해석을 기초로 한 고급 데이터 언어이다 SQL 은 ANSI (American National Standards Institute) 와 ISO (International Standards Organization) 에서 관계형데이터베이스의 표준언어로 채택되어 거의 모든 상용 관계 DBMS 에서 지원되고 있다. SQL 은 구조화 질의이 뿐만 아니라 데이터의 정의, 데이터의 조작, 데이터의 제어 기능 등을 수행하고 관계형 DB 의 서브 언어로 데이터 정의어, 데이터 질의어, 데이터 조작어를 포함한다. SQL 은 데이터 처리 작업의 단순화, 데이터 질의, 보고서 작성, 데이터 조작 기능을 제공한다. SQL 을 잘 활용하면 데이터베이스의 데이터 관리를 최대한 효율적으로 이용할 수 있다. 데이터베이스 프로그래밍에서 중심적으로 다루는 SQ

Oracle : 오라클 데이터 타입 [내부링크]

오라클의 데이터 타입 오라클의 데이터 타입은 테이블 컬럼을 속성을 정의한다. 오라클의 데이터 타입은 프로시저와 함수의 인자에 사용되는 값이 저장되는 방식을 결정한다. 오라클은 미국 국립 표준 협회(ANSI)에서 제공하는 데이터 타입을 지원하고 있다. 데이터 타입의 형태 오라클의 데이터 타입은 내장 데이터 타입과 사용자 정의 데이터 타입으로 구분한다. 내장 데이터 타입(Built-In Data Type) 사용자 정의 데이터 타입은 내장 데이터 타입을 기반으로 하거나 다른 사용자 정의 데이터 타입을 기반으로 하여 사용자가 정의하는 데이터 타입이다. 1. Character 데이터 타입 오라클 10g 버전 이하에서는 영문 이외의 문자는 2 바이트로 인식하지만, 오라클 11g 버전 이상에서는 영문 이외의 문자는 3 바이트로 인식한다. 1) char 데이터 타입 char 데이터 타입은 고정 길이 문자 데이터를 저장한다. char 데이터 타입으로 문자 데이터를 정의할 때 지정된 길이만큼의 바이트

Oracle : 오라클의 테이블 [내부링크]

오라클은 Tablespace, Segment, Extent, Data Block 이라는 형태로 나누어 관리한다 테이블 스페이스 테이블 스페이스(Tablespace)는 논리적으로 서로 관련된 데이터가 저장된 파일들을 묶어놓은 단위이다. 테이블 스페이스는 데이터 파일 경로와는 관계가 없다. 테이블 스페이스는 실제 파일인 물리적인 파일과 논리적인 저장 단위를 서로 분리하는 역할을 한다. 테이블 스페이스는 데이터베이스의 논리적 저장 구조 중에 가장 포괄적이고 넓은 범위를 가진 형태다. 실제 데이터베이스 각각의 물리적 파일들은 테이블 스페이스에 N:1 형태로 연결되어 있다. 테이블 스페이스는 논리적으로 서로 관련된 데이터가 저장된 파일들을 묶어놓은 단위이다. 세그먼트 세그먼트(Segment)는 데이터베이스를 사용할 때 가장 많이 접근하게 되는 것은 테이블이다. 세그먼트는 테이블 스페이스 내에 특정 유형의 논리적 저장 구조로 할당된 영역이다. 세그먼트는 테이블, 인덱스 등이 세그먼트에 포함된다

R : 군집분석(Cluster Analysis)(2) [내부링크]

1) 계층적 군집법 계층적 군집 분석을 수행하는 과정은 주어진 데이터를 순차적으로 가까운 값들끼리 묶어 주는 병합 방법과 관측 값을 나누는 분할 방법이 있다. 주로 병합 방법을 사용 ### Hierarchical Clustering # iris 데이터셋 로딩(50개) idx <- sample(1:dim(iris)[1], 50) idx irisSample <- iris[idx, ] head(irisSample) # species 데이터 제거 irisSample$Species <- NULL head(irisSample) # 계층적 군집법 실행 hc_result <- hclust(dist(irisSample), method="ave") hc_result # 군집 결과 시각화 plot(hc_result, hang=-1, labels = iris$Species[idx]) rect.hclust(hc_result, k=4) 2) K 평균 군집법(K-means clustering) k개의 평균(m

R : 연관분석(Association Analysis) [내부링크]

하나의 거래나 사건에 포함된 항목 간의 관련성을 파악하여 둘 이상의 항목들로 구성된 연관성 규칙을 도출하는 탐색적인 분석 방법 “장바구니 분석” 연관성규칙은 지지도(support), 신뢰도(confidence), 향상도(lift)를 평가척도로 사용 연관분석은 구매패턴을 분석하여 고객을 대상으로 상품을 추천하거나 프로모션 및 마케팅 전략을 수립하는데 활용 연관분석 특징 사건의 연관규칙을 찾는 데이터마이닝 기법 y변수가 없으며, 비지도학습에 의한 패턴 분석 방법 거래 사실이 기록된 트랜잭션(Transaction)형식의 데이터 셋을 이용 사건과 사건 간의 연관성을 찾는 방법 예) 기저귀와 맥주(Diapers vs. Beer) 이야기: Karen Heath는 1992년 맥주와 기저귀의 상관관계 발견 지지도(제품의 동시 구매패턴), 신뢰도(A제품 구매 시 B제품 구매패턴), 향상도(A제품과 B제품간의 상관성)을 연관규칙의 평가도구로 사용 활용분야: 상품구매 규칙을 통한 구매패턴

R : xgboost [내부링크]

xgboost: 앙상블 학습기법으로 모델을 생성하는 분류모델 xgboost는 부스팅 방식을 기반으로 만들어진 모델 분류하기 어려운 특정 영역에 초점을 두고 정확도를 높이는 알고리즘 높은 정확도가 가장 큰 강점 배깅과 동일하게 복원 추출방식으로 첫 번째 학습 데이터 셋을 생성하는 방법은 동일 두 번째부터는 학습된 트리 모델의 결과를 바탕으로 정확도가 낮은 영역에 높은 가중치를 적용하여 해당 영역을 학습 데이터 셋으로 구성 즉, 기계학습이 안 되는 데이터셋을 집중적으로 학습하여 트리 모델의 정확도를 높이는 방식이다 xgboost패키지 내 xgboost()함수 이용 형식: xgboost(data = NULL, label = NULL, missing = NULL, params = list(), nrounds, verbose = 1, print.every.n = 1L, early.stop.round = NULL, maximize = NULL, ...) where objective: y변수가

Oracle[프로그래머스] : 식품분류별 가장 비싼 식품의 정보 조회하기 [내부링크]

문제 다음은 식품의 정보를 담은 FOOD_PRODUCT 테이블입니다. FOOD_PRODUCT 테이블은 다음과 같으며 PRODUCT_ID, PRODUCT_NAME, PRODUCT_CD, CATEGORY, PRICE는 식품 ID, 식품 이름, 식품코드, 식품분류, 식품 가격을 의미합니다. Column name Type Nullable PRODUCT_ID VARCHAR(10) FALSE PRODUCT_NAME VARCHAR(50) FALSE PRODUCT_CD VARCHAR(10) TRUE CATEGORY VARCHAR(10) TRUE PRICE NUMBER TRUE 문제 FOOD_PRODUCT 테이블에서 식품분류별로 가격이 제일 비싼 식품의 분류, 가격, 이름을 조회하는 SQL문을 작성해주세요. 이때 식품분류가 '과자', '국', '김치', '식용유'인 경우만 출력시켜 주시고 결과는 식품 가격을 기준으로 내림차순 정렬해주세요. 코드 SELECT A.CATEGORY, A.MAX_PRICE

Oracle[프로그래머스] : 우유와 요거트가 담긴 장바구니 [내부링크]

문제 CART_PRODUCTS 테이블은 장바구니에 담긴 상품 정보를 담은 테이블입니다. CART_PRODUCTS 테이블의 구조는 다음과 같으며, ID, CART_ID, NAME, PRICE는 각각 테이블의 아이디, 장바구니의 아이디, 상품 종류, 가격을 나타냅니다. NAME TYPE ID INT CART_ID INT NAME VARCHAR PRICE INT 데이터 분석 팀에서는 우유(Milk)와 요거트(Yogurt)를 동시에 구입한 장바구니가 있는지 알아보려 합니다. 우유와 요거트를 동시에 구입한 장바구니의 아이디를 조회하는 SQL 문을 작성해주세요. 이때 결과는 장바구니의 아이디 순으로 나와야 합니다. 코드 SELECT CART_ID FROM CART_PRODUCTS WHERE NAME IN ('Milk', 'Yogurt') GROUP BY CART_ID HAVING COUNT(DISTINCT NAME) >=2 ORDER BY CART_ID ※ DISTINCT : 중복을 제거하는

R : 실시간 뉴스 수집과 분석 [내부링크]

1) 웹 크롤링 웹 코롤링(web crawling): 웹을 탐색하는 컴퓨터 프로그램(크롤러)를 이용하여 여러 인터넷 사이트의 웹 페이지 자료를 수집해서 분류하는 과정 크롤러(crawler): 자동화된 방법으로 월드와이드 웹(www)을 탐색하는 컴퓨터 프로그램 2) 스크래핑 스크래핑(scraping)이란 웹사이트이 내용을 가져와 원하는 형태로 가공하는 기술. 웹사이트의 데이터를 수집하는 모든 작업. 크롤링도 스크래핑 기술의 일종. 3) 파싱 파싱(parsing): 어떤 페이지(문서, HTML 등)에서 사용자가 원하는 데이터를 특정 패턴이나 순서로 추출하여 정보를 가공하는 것. HTML 소스를 문자열로 수집한 후 실제 HTML 태그로 인식할 수 있도록 문자열을 의미있는 단위로 분해하고, 계층적인 트리 구조를 만드는 과정 #웹 문서 요청과 파싱 관련 패키지 설치 및 로딩 install.packages("httr") library(httr) install.packages("XML") lib

Oracle : Oracle 설치하기 [내부링크]

https://www.oracle.com/database/technologies/xe-prior-release-downloads.html Oracle Database Express Edition (XE) Release 11.2.0.2.0 (11gR2). -> Oracle Database 11gR2 Express Edition for Windows x64 https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html Java SE 8 Archive Downloads (JDK 8u202 and earlier) -> Windows x64 Java SE Development Kit 8u202 https://www.oracle.com/database/sqldeveloper/technologies/download/ -> https://www.oracle.com/tools/downloads/sqldev-download

R : 인공 신경망(Artificial Neural Network) [내부링크]

인간의 두뇌 신경(뉴런)들이 상호작용하여 경험과 학습을 통해서 패턴을 발견하고 이를 통해서 특정 사건을 일반화하거나 데이터를 분류하는데 이용되는 기계학습방법. 인간의 개입 없이 컴퓨터가 스스로 인지하고 추론하고, 판단하여 사물을 구분하거나 특정 상황의 미래를 예측하는데 이용될 수 있는 기계학습 방법 문자, 음성, 이미지 인식, 증권시장 예측, 날씨 예보 등 다양한 분야에서 활용. (1) 생물학적 신경망 구조 인간의 생물학적 신경망의 구조 수상돌기로부터 외부 신호를 입력 받고 시냅스에 의해서 신호의 세기를 결정한 후 이를 세포핵으로 전달하면 입력신호와 세기를 토대로 신경자극을 판정하여 축색돌기를 통해서 다른 신경으로 전달 (2) 인공신경망과 생물학적 신경망의 비교 (3) 가중치 적용 외부 신호 입력에 대한 가중치 적용 (4) 활성 함수 활성 함수는 망의 총합과 경계값(bias)를 계산하여 출력신호(y)를 결정 일반적으로 활성 함수는 0과 1사이의 확률분포를 갖는 시그모이드 함수(Sig

R : 서포트벡터머신(Support Vector Machine) SVM [내부링크]

서포트벡터머신(Support Vector Machine) 서포트벡터 분류기를 확장하여 비선형 클래스 경계를 수용할 수 있도록 개발한 분류 방법 초평면(Hyperplane) 최대마진분류기(Maximum Margin Classifier): 데이터가 있을 때, 이것을 곡선이 아닌 직선이나 평면으로 구별하는 방법 초평면(Hyperplane): 최대 마진 분류기가 경계로 사용하는 선이나 면 분리 초평면(Separating Hyperplane): 데이터를 완벽하게 분리하는 초평면 마진(Margin): 데이터와 초평면의 수직 거리(가장 짧은 거리) 최대마진 초평면(Maximal Margin Hyperplane): 마진이 가장 큰 초평면 최대마진분류기(Maximum Margin Classifier): 데이터가 초평면에 의해 가장 잘 분류 서포트벡터(Support Vector): 양쪽 데이터의 경계값을 포함하는 초평면 상에 위치한 데이터 대부분의 경우 분리 초평면이 존재하지 않을 수도 있고, 최대

R : 베이지안(Baysian) [내부링크]

베이지안 확률 모델은 주관적인 추론을 바탕으로 만들어진 ‘사전확률’을 추가적인 관찰을 통한 ‘사후확률’로 업데이트하여 불확실성을 제거할 수 있다고 믿는 방법 베이즈 정리는 posteriori확률을 찾는 과정이고 베이즈 추론을 MAP(Maximum a Posteriori) 문제라고 부르기도 한다. install.packages("e1071") install.packages("caret") library(e1071) data <- read.csv(file = "heart.csv", header = T) head(data) str(data) library(caret) set.seed(1234) tr_data <- createDataPartition(y=data$AHD, p=0.7, list=FALSE) tr <- data[tr_data,] te <- data[-tr_data,] Bayes <- naiveBayes(AHD~. ,data=tr) Bayes predicted <- predict

R : 다차원 척도법(Multi-dimensional Scaling) [내부링크]

여러 대상의 특징 사이 관계에 대한 수치적 자료를 이용하여 유사성에 대한 측정치를 상대적 거리로 구조화하는 방법 2차원 또는 3차원에서의 특정 위치에 관측치를 배치해서 보기 쉽게 척도화 즉, 항목 사이 거리를 기준으로 하는 자료를 이용하여 항목들의 상대적인 위치를 찾고 거리가 가까운 개체들끼리 Group 화 하여 분류할 수 있다. 다차원 척도법 적용 절차 1) 자료 수집: 특성을 측정 2) 유사성, 비유사성 측정: 개체 사이의 거리 측정 3) 공간에서 개체 사이 거리 표현 4) 개체의 상호 위치에 따른 관계가 개체들 사이 비유사성에 적합여부 결정 다차원 척도법의 종류 1) 계량적(전통적) 다차원 척도법(Classical MDS) 숫자 데이터로만 구성 stats패키지의 cmdscale()함수 eurodist 데이터를 이용하여 유럽 주요 도시 사이의 거리 대상으로 다차원 척도법을 적용하여 그래프로 표현 install.packages("MASS") library(MASS) data("eu

R : 변수제거 [내부링크]

주성분 분석 2.0에 가까운 분산을 가지는 변수 제거 분산이 0에 가까운 변수는 제거해도 큰 영향이 없음 nearZeroVar()함수 where 'saveMetrics=FALSE'속성: 예측변수의 컬럼위치에 해당하는 정수 벡터 'saveMetrics=TRUE'속성: 컬럼을 가지는 데이터프레임 freqRatio: 가장 큰 공통값 대비 두번째 큰 공통값의 빈도의 비율 percentUnique: 데이터 전체로 부터 고유 데이터의 비율 zeroVar: 예측변수가 오직 한개의 특이값을 갖는지 여부에 대한 논리 벡터 nzv: 예측변수가 0에 가까운 분산예측 변수인지 여부에 대한 논리 벡터 install.packages("caret") library(caret) install.packages("mlbench") library(mlbench) nearZeroVar(iris, saveMetrics=TRUE) data(Soybean) head(Soybean) # 0에 가까운 분산을 가지는 변수의 존재

R : 군집분석(Cluster Analysis) [내부링크]

데이터 간의 유사도를 정의하고, 그 유사도에 가까운 것부터 순서대로 합쳐 가는 방법으로 그룹(군집)을 형성한 후 각 그룹의 성격을 파악하거나 그룹 간의 비교분석을 통해서 데이터 전체의 구조에 대한 이해를 돕고자 하는 탐색적인 분석 방법 유사도: 거리(distance)를 이용하는데 거리의 종류는 다양하지만, 가장 일반적으로 사용하는 것이 유클리디안(Euclidean)거리로 측정한 거리정보를 이용해서 분석대상을 몇 개의 집단으로 분류 군집 분석의 목적: 데이터 셋 전체를 대상으로 서로 유사항 개체 들을 몇 개의 군집으로 세분화하여 대상 집단을 정확하게 이해하고, 효율적으로 활용하기 위함. 군집 분석으로 그룹화된 군집은 변수의 특성이 그룹 내적으로는 동일하고, 외적으로는 이질적인 특성을 갖는다. 군집 분석의 용도는 고객의 충성도에 따라서 몇 개의 그룹으로 분류하고, 그룹별로 맞춤형 마케팅 및 프로모션 전략을 수립하는 데 활용된다. 군집 분석에서 중요한 사항 군집화를 위해서 거리 측정에

R : 시계열 요소 분해 [내부링크]

시계열 자료의 변동요인 추세변동(Trend variation: T): 상승과 하락의 영향을 받아 시계열 자료에 영향을 주는 장기 변동요인 순환변동(Cyclical variation: C): 일정한 기간 없이 반복적인 요소를 가지는 중/장기 변동요인 계정변동(seasonal variation: S): 일정기간에 의해서 1년 단위로 반복적인 요소를 가지는 단기 변동요인 불규칙변동(Irregular variation: I): 어떤 규칙 없이 예측 불가능한 변동요인으로 추세, 순환, 계절요인으로 설명할 수 없는 요인. 실제 시계열 자료에서 추세, 순환, 계절요인을 뺀 결과로 나타난다. 이는 회귀분석에서 오차에 해당 시계열 요소 분해 시각화 #1단계: 시계열 자료 준비 data <- c(45, 56, 45, 43, 69, 75, 58, 59, 66, 64, 62, 65, 55, 49, 67, 55, 71, 78, 71, 65, 69, 43, 70, 75, 56, 56, 65, 55,

R : 시계열분석 기법 [내부링크]

시계열 자료의 분석 기법 평활법, 시계열 요소 분해법, 회귀 분석법, ARIMA모형법 시계열요소 분해법, 평활법, ARIMA모형, 회귀모형(계량경제) 시계열요소 분해법, 평활법 시각적으로 직관성 제공 ARIMA모형, 회귀모형은 수학적 이론 배경으로 1개 이상의 다변량 시계열 데이터를 대상으로 분석 일반 회귀모형은 시계열 자료에서 시간 t를 설명변수로 한다. 계량경제 모형은 Yt와 Yt-1 사이의 시계열 자료를 대상으로 회귀분석을 수행하는 모형 시계열 요소 분해법: 시계열 자료의 4가지 변동요인을 찾아서 시각적으로 분석하는 기법 추세 변동에 대한 분석 시계열 자료가 증가하거나 감소하는 경향이 있는지 파악 증가나 감소의 경향이 선형(linear)인지, 비선형(nonlinear)인지, S 곡선과 같은 성장곡선 인지 찾는 과정이 필요 추세의 패턴을 찾는 방법 1) 차분 후 일정한 값을 나타내면 선형의 패턴(대각선) 2) 로그변환 후 일정한 값을 나타내면 비선형의 패턴(U자, 역U자) 3

python[프로그래머스] : 정수 내림차순으로 배치하기 [내부링크]

문제 함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다. 제한 조건 n은 1이상 8000000000 이하인 자연수입니다. 코드 def solution(n): n_list = list(str(n)) n_list.sort(reverse= True) answer = ''.join(n_list) return int(answer) 출처https://school.programmers.co.kr/learn/courses/30/lessons/12933 코딩테스트 연습 - 정수 내림차순으로 배치하기 문제 설명 함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다. 제한 조건 n 은 1이상 8000000000 이하인 자연수

R : 의사결정 나무 [내부링크]

CART(Classification and Regression Tree) : 가장 많이 쓰는 기법 C4.5 & C5.0 : CART와 다르게 node에서 다지분리(Multiple Split)이 가능 CHAID(Chi-squared Automatic Interaction Detection): 범주형 변수에 적용 가능 의사결정 트리(Decision Tree) 의사결정트리 방식은 나무(Tree)구조 형태로 분류 결과를 도출 (1) party 패키지 이용 분류분석 조건부 추론 나무 CART기법으로 구현한 의사결정나무의 문제점 1) 통계적 유의성에 대한 판단없이 노드를 분할하는데 대한 과적합(Overfitting) 발생 문제 2) 다양한 값으로 분할 가능한 변수가 다른 변수에 비해 선호되는 현상 이 문제점을 해결하는 조건부 추론 나무(Conditional Inference Tree) -> party패키지의 ctree()함수 이용 의사결정 트리 생성: ctree()함수 이용 #1단계: part

R : 조건부 추론나무 [내부링크]

조건부추론나무 install.packages("party") library(party) #sampling str(iris) set.seed(1000) sampnum <- sample(2, nrow(iris), replace=TRUE, prob=c(0.7,0.3)) sampnum # training & testing data 구분 trData <- iris[sampnum==1,] head(trData) teData <- iris[sampnum == 2, ] head(teData) shortvar <- Species~Sepal.Length+Sepal.Width+Petal.Length+Petal.Width # 학습 citreeResult <- ctree(shortvar, data=trData) # 예측값과 실제값 비교 table(predict(citreeResult), trData$Species) citreeResult2 <- ctree(shortvar, data=teData) # 테스트

Python : 의사결정 나무 [내부링크]

from sklearn.tree import DecisionTreeClassifier, plot_tree from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split import warnings warnings.filterwarnings('ignore') # 붓꽃 데이터를 로딩하고, 학습과 테스트 데이터 셋으로 분리 iris_data = load_iris() X_train , X_test , y_train , y_test = train_test_split(iris_data.data, iris_data.target,test_size=0.2, random_state=11) # DecisionTree Classifier 생성 dt_clf = DecisionTreeClassifier(random_state=156, max_depth = 2) # DecisionTreeClassifer 학습

R : 앙상블(Ensemble) [내부링크]

의사결정나무의 문제점을 ctree와 다른 방식으로 보완하기 위하여 개발된 방법 주어진 자료로부터 예측 모형을 여러 개 만들고, 이것을 결합하여 최종적인 예측 모형을 만드는 방법 배깅(Breiman, 1996) -> 부스팅 개발 -> 랜덤포레스트(Random Forest) 앙상블에서 사용되는 기법: 배깅, 부스팅, 랜덤포레스트 배깅(Bagging) 불안정한 예측모형에서 불안전성을 제거함으로써 예측력을 향상 Where 불안정한 예측모형: 데이터의 작은 변화에도 예측 모형이 크게 바뀌는 경우 Bootstrap AGGregatING의 준말 부트스트랩자료: 주어진 자료로부터 동일한 크기의 표본을 랜덤 복원 추출로 뽑은 것 주어진 자료에 대하여 여러 개의 부트스트랩(bootstrap)자료를 만들고, 각 부트스트랩 자료에 예측 모형을 만든 다음, 이것을 결합하여 최종 예측 모형을 만드는 방법 install.packages("party") install.packages("caret") l

R : 회귀분석 (Regression Analysis) [내부링크]

회귀분석 특정 변수(독립변수)가 다른 변수(종속변수)에 어떠한 영향을 미치는 가를 분석하는 방법 인과관계가 있는지를 분석하는 방법 인과관계 변수 A가 변수 B의 값을 변하게 하는 원인이 되는 관계. 이때 변수 A를 독립변수, 변수 B를 종속변수로 지칭 상관관계 분석 vs. 회귀분석 차이점 1) 상관관계 분석: 변수 간의 관련성 분석 2) 회귀분석: 변수 간의 인과관계 분석 회귀분석의 특징 1) 가장 강력하고 사용범위가 넓은 분석 방법 2) 독립변수가 종속변수에 영향을 미치는 변수를 규명하고, 이들 변수에 의해서 회귀방정식(Y=a+bX where a: 상수, b: 회귀계수, X: 독립변수, Y: 종속변수)을 도출하여 회귀선을 추정 3) 회귀계수는 단위시간에 따라 변하는 양(기울기)이며, 회귀선을 추정함에 있어 최소자승법을 이용 4) 독립변수와 종속변수가 모두 등간척도 또는 비율척도로 구성되어 있어야 한다. 잔차(오차): 관측치와 예측치의 차 최소자승법: 잔차들의 제곱의 합이 최소가 되

R : 다중 회귀분석 [내부링크]

여러 개의 독립변수가 동시에 한 개의 종속변수에 미치는 영향을 분석할 때 이용하는 분석 방법 공차한계(Tolerance): 한 독립변수가 다른 독립변수들에 의해서 설명되지 않은 부분 분산팽창요인(Variance Inflation Factor, VIF): 공차한계의 역수 다중 공선성: 한 독립변수의 값이 증가할 때 다른 독립변수의 값이 증가하거나 감소하는 현상 독립변수들이 강한 상관관계를 보이는 경우는 회귀분석의 결과를 신뢰하기 어렵다. 상관관계가 높은 독립 변수 중 하나 혹은 일부를 제거하거나 변수를 변형시켜서 해결 독립변수 제거를 통한 정보손실 vs. 다중 공선성 문제 해결 -> 판단 필요 다중 회귀분석 귀무가설: 적절성과 친밀도는 제품의 만족도에 영향을 미친다고 볼 수 없다. 대립가설: 적절성과 친밀도는 제품의 만족도에 영향을 미친다고 볼 수 있다. product <- read.csv("product.csv", header = TRUE) #1단계: 변수 모델링 y = produc

R : 회귀분석(연습문제) [내부링크]

문제 1. product.csv 파일의 데이터를 이용하여 다음의 단계별로 다중 회귀분석을 수행하시오. 1단계: 학습데이터(train), 검정데이터(test)를 7:3비율로 샘플링 변수모델링: y변수는 제품_만족도, x변수는 제품_적절성과 제품_친밀도 2단계: 학습데이터 이용 회귀모델 생성 3단계: 검정데이터 이용 모델 예측치 생성 4단계: 모델 평가: cor()함수 이용 코드 product <- read.csv("product.csv", header = TRUE) head(product) #1) x <-sample(1:nrow(product), 0.7 * nrow(product)) train <- product[x, ] test <- product[-x, ] #2) model <- lm(formula =제품_만족도~ 제품_적절성+ 제품_친밀도, data= train) model #3) pred <- predict(model, test) pred #4) cor(pred, test$제품

R : 로지스틱 회귀분석(Logistic Regression Analysis) [내부링크]

종속변수와 독립변수 간의 관계를 나타내어 예측 모델을 생성한다는 점에서 선형 회귀분석 방법과 유사 로지스틱 회귀분석의 특징 분석 목적: 종속변수와 독립변수 간의 관계를 통해서 예측 모델 생성 회귀분석과 차이점: 종속변수는 반드시 범주형 변수(예, Yes/No, iris데이터의 species) 정규성: 정규분포 대신에 이항분포를 따른다. 로짓 변환: 종속변수의 출력범위를 0과 1로 조정하는 과정(예, 혈액형 A -> [1, 0, 0, 0] 활용분야: 의료, 통신, 날씨 등 다양한 분야 날씨 관련 요인 변수로 비(rain) 유무 예측 install.packages("ROCR") library(car) library(lmtest) library(ROCR) #1단계: 데이터 가져오기 weather = read.csv("weather.csv", stringsAsFactors = F) dim(weather) head(weather) str(weather) #2단계: 변수 선택과 더미

R : 변수 선택 [내부링크]

회귀모델에서 독립변수의 증가는 모델의 결정계수를 증가시켜 설명력을 높이는 장점이 있지만 다중 공선성 문제를 일으킬 수 있어서 추정의 신뢰도를 저하시킬 수 있고, 독립변수가 많을 경우 예측성능이 좋지 않을 가능성이 많고 독립성, 등분산성 등의 가정을 만족시키기 어렵기 때문에 독립변수를 줄일 필요가 있다 전진 선택법(Forward Selection) 절편만 있는 모델에서 기준 통계치를 가장 많이 개선시키는 변수를 차례로 추가 후진 제거법(Backward elimination) 모든 변수가 포함된 모델에서 기준 통계치에 가장 도움이 되지 않는 변수를 하나씩 제거하는 방법 단계선택법(Stepwise selction) 모든 변수가 포함된 모델에서 출발하여 기준 통계치에 가장 도움이 되지 않는 변수를 삭제하거나, 모델에서 빠져 있는 변수 중에서 기준 통계치를 가장 개선시키는 변수를 추가. 이렇게 변수의 추가 또는 삭제를 반복. 또는 절편만 포함된 모델에서 시작해 변수의 추가, 삭제를 반복할 수

R : 시계열 분석(Time Series Analysis) [내부링크]

시계열 자료: 시간의 변화에 따라 관측치 또는 통계량의 변화를 기록해 놓은 자료 시계열 분석은 현재의 현상 이해를 기초로 미래를 예측하는 분석 방법 경기예측, 판매예측, 주식시장분석, 예산 및 투자 분석 등의 분야에서 활용 시계열 분석 어떤 현상에 대해서 시간의 변화량을 기록한 시계열 자료를 대상으로 미래의 변화에 대한 추세를 분석하는 방 시계열분석의 특징 시계열분석은 설명변수와 반응변수를 토대로 유의수준에 의해서 판단하는 추론 통계방식 시계열분석의 특징과 분석에 사용되는 데이터 셋의 전제조건 y변수 존재: 시간 t를 설명변수(x)로 시계열을 반응변수(y)로 사용 미래추정: 과거와 현재의 현상을 파악하고 이를 통해 미래를 추정 계절성 자료: 시간 축을 기준으로 계절성이 있는 자료를 데이터 셋으로 이용 모수 검정: 선형성, 정규성, 등분산성 가정을 만족해야 한다. 추론 기능: 유의수준 판단 기준이 존재하는 추론통계 방식 활용분야: 경기예측, 판매예측, 주식시장분석, 예산 및

R : 교차분석과 카이제곱 검정(연습문제) [내부링크]

문제 1. 직업 유형에 따른 응답 정도에 차이가 있는가를 단계별로 검정하시오 (동질성 검정) 1) 파일 가져오기 Response.csv 2) 코딩변경 - 리코딩 Job 컬럼: 1. 학생, 2. 직장인, 3. 주부 response 컬럼: 1. 무응답, 2. 낮음. 3. 높음 3) 교차 분할표 작성 4) 동질성 검정 5) 검정결과 해석 코드 #1) data <- read.csv('Response.csv',header = T) head(data) #2) data$job2[data$job == 1] <- "1.학생" data$job2[data$job == 2] <- "2.직장인" data$job2[data$job == 3] <- "3.주부" data$response2[data$response == 1] <- "1.무응답" data$response2[data$response == 2] <- "2.낮음" data$response2[data$response == 3] <- "3.높음" #3) t

R : 집단간 차이분석(연습문제) [내부링크]

문제 1. 교육 방법에 따라 시험성적에 차이가 있는지 검정하시오 (힌트. 두 집단 평균 차이 검정) 1) 데이터셋: twomethod.csv 2) 변수: method(교육방법), score(시험성적) 3) 모델: 교육방법(명목) -> 시험성적(비율) 4) 전처리, 결측치 제거 코드 #문제1 data <- read.csv("twomethod.csv", header = TRUE) head(data) result <- subset(data, !is.na(score), c(method, score)) a <- subset(result, method == 1) b <- subset(result, method == 2) a1 <- a$score b1 <- b$score var.test(a1, b1) t.test(a1, b1, altr = "two.sided", conf.int = TRUE, conf.level = 0.95) t.test(a1, b1, alter = "greater", conf.

R : 주성분 분석 [내부링크]

많은 변수로 구성된 데이터에 대해 주성분이라는 새로운 변수를 만들어 기존 변수보다 차원을 축소하여 분석을 수행 주성분 P1은 데이터 분산을 가장 많이 설명할 수 있는 것을 선택하고 P2는 P1과 수직인 주성분을 만들어 다중 공선성 문제를 해결 다중 공선성(MultiCollinearity): 독립변수 사이에 강한 상관관계가 나타나서 종속변수에 영향을 미치는 경우 완전 공선성: 독립 변수들 사이에 정확한 선형 관계가 존재하는 경우 다중 공선성 문제는 분석과 예측의 정확성을 위해서 피하거나 해결해야 한다. ### PCA data("iris") head(iris) # 변수간 상관관계 확인 cor(iris[1:4]) # 변수간 S.L와P.L, S.L와 P.W간의 상관관계 높음 # 다중공선성 문제 발생 예상 # 독립변수 새롭게 설계 필요 # 전처리 과정 iris2 <- iris[, 1:4] ir.species <- iris[,5] # 중앙을 0, 분산은 1로 설정 prcomp.result2 <

R : 주성분 분석 예제 [내부링크]

패키지 {stats}의 prcomp() 함수를 이용한 PCA 분석을 수행하고, 그 결과를 시각화 한다. #iris 자료를 이용하여 PCA 분석을 수행한다. data(iris) head(iris) 4개의 연속형 변수에 대해 PCA를 적용하고, 범주형 변수는 주성분을 이용하여 시각화하 는 과정에 사용한다. 아래의 R 코드에서 연속형 자료에 대해 로그 변환을 수행하고, prcomp() 함수를 통해 PCA를 수행하기 전에 변수에 대해 중심화(center=TRUE)와 표준화 (scale=TRUE)를 수행한다. prcomp() 함수에서 center=TRUE와 scale=FALSE가 디폴트이 다. log.ir <- log(iris[, 1:4]) ir.species <- iris[, 5] ir.pca <- prcomp(log.ir, center = TRUE, scale. = TRUE) print(ir.pca) print(0 함수는 4개의 주성분(PCs) 각각의 표준편차와 연속형 변수의 선형결합 계

R : 요인분석 (Factor Analysis) [내부링크]

요인분석: 변수들의 상관성을 바탕으로 변수를 정제하여 상관관계 분석이나 회귀분석에서 설명변수(독립변수)로 사용된다 요인분석 다수의 변수를 대상으로 변수 간의 관계를 분석하여 공통 차원으로 축약하는 통계기법 1) 탐색적 요인분석: 요인 분석을 할 때 사전에 어떤 변수들끼리 묶어야 한다는 전제를 두지 않고 분석하는 방법 2) 확인적 요인 분석: 사전에 묶일 것으로 기대되는 항목끼리 묶였는지를 조사하는 방법 타당성: 측정 도구가 측정하고자 하는 것을 정확히 측정할 수 있는 정도 논문 작성을 위한 통계분석 방법에서 인구통계학적 분석(빈도분석, 교차분석 등)을 시행한 이후 통계량 검정 이전에 구성 타당성(Construct validity)검증을 위해서 요인분석(Factor Analysis) 시행 요인분석을 위한 전제조건 하위요인으로 구성되는 데이터 셋이 준비되어 있어야 한다. 분석에 사용되는 변수는 등간척도나 비율척도여야 하며, 표본의 크기는 최소 50개 이상이 바람직하다. 요인 분석은

R : 요인분석(feat.잘못 분류된 요인 제거로 변수 정제) [내부링크]

특정 변수가 묶여질 것으로 예상되는 요인으로 묶이지 않는 경우 해당 변수를 제거하여 변수를 정제하는 방법 #1단계: spss데이터 셋 가져오기 install.packages("memisc") library(memisc) data.spss <- as.data.set(spss.system.file('drinking_water.sav')) data.spss[1:11] #2단계: 데이터프레임으로 변경 drinking_water <- data.spss[1:11] drinking_water_df <- as.data.frame(data.spss[1:11]) str(drinking_water_df) 요인 수를 3개로 지정하여 요인 분석 수행 result2 <- factanal(drinking_water_df, factor = 3, rotation = "varimax") result2 Uniquenesses항목에서 모든 변수가 0.5이하의 값을 갖기 때문에 모두 유효 데이터 셋에서 의도한 요인과 요

R : 요인분석(연습문제) [내부링크]

문제 1. 다음은 drinking,water_example.sav 파일의 데이터셋이 구성된 테이블이다. 전체 2 개의 요인에 의해서 7 개의 변수로 구성되어 있다. 아래에서 제시된 각 단계에 맞게 요인 분석을 수행하시오. 1) 데이터파일 가져오기 library(memisc) setwd("C:/Rwork/") data.spss <- as.data.set(spss.system.file('drinking_water_example.sav')) data.spss drinkig_water_exam <- data.spss[1:7] drinkig_water_exam_df <- as.data.frame(drinkig_water_exam) str(drinkig_water_exam_df) 2) 베리맥스 회전법, 요인수 2, 요인점수 회귀분석 방법을 적용하여 요인 분석 3) 요인적재량 행렬의 컬럼명 변경 4) 요인점수를 이용한 요인적재량 시각화 5) 요인별 변수 묶기 코드 #1) library(memis

R : 두 집단 검정 [내부링크]

두 집단 검정 독립된 두 집단 간의 비율 차이 검정과 평균 차이 검정 비율차이 검정: 기술통계량으로 빈도수에 대한 비율에 의미 평균 차이 검정: 표본평균에 의미 두 집단 비율 검정 두 집단의 비율이 같은지 또는 다른지를 검정 prop.test()함수 이용 비율차이 검정 단일표본 이항분포 비율 검정: binom.test() 함수 이용 독립 표본 이항분포 비율 검정: prop.test() 함수 이용 귀무가설: 두가지 교육 방법에 따라 교육생의 만족율에 차이가 없다. 연구가설: 두가지 교육 방법에 따라 교육생의 만족율에 차이가 있다. 연구환경: IT교육센터에서 PT를 이용하는 프레젠테이션 교육 방법과 실시간 코딩 교육 방법을 적용하여 교육을 시행하였다. 두 가지 교육 방법 중 더 효과적인 교육 방법을 조사하기 위해서 교육생 300명을 대상으로 설문 조사를 시행하였다. 조사한 결과는 표와 같다 만족 불만족 참가자 PT교육 110 40 150 코딩교육 135 15 150 합게 245 55 1

R : 대응 두집단 평균 검정(대응 표본 T-검정) [내부링크]

대응 표본평균 검정(Paired samples t-test) 동일한 표본을 대상으로 측정된 두 변수의 평균 차이를 검정 사전검사와 사후검사의 평균 차이를 검증할 때 많이 사용 예) 교수법 프로그램을 적용하기 전 학생들의 학습력과 교수법 프로그램 적용 후 학생들의 학습력에 차이가 있는지 검정 대응 표본평균 검정은 독립 표본평균 검정 방법과 동일 연구가설 H0: 교수법 프로그램을 적용하기 전 학생들의 학습력과 교수법 프로그램을 적용한 후 학생들의 학습력에 차이가 없다. H1: 교수법 프로그램을 적용하기 전 학생들의 학습력과 교수법 프로그램을 적용한 후 학생들의 학습력에 차이가 있다. 연구환경: A 교육센터에서 교육생 100명을 대상으로 교수법 프로그램 적용 전에 실기시험을 시행한 후 1개월 동안 동일한 교육생에게 교수법 프로그램을 제공한 후 실기시험을 시행한 점수와 평균에 차이가 있는지 검정한다. 대응 표본평균 계산 대응하는 두 집단의 subset을 생성한 후 두 집단 간의 평균 차이

R : 세 집단 검정 [내부링크]

독립된 세 집단 이상의 집단 간 비율 차이 검정과 평균 차이 검정 세 집단 비율 검정 세 집단을 대상으로 비율 차이 검정을 통해서 세 집단 간의 비율이 같은지 또는 다른지를 검정 데이터 대상 전처리 과정(결측치와 이상치 제거) 후 비교대상의 세 집단 분류 후 prop.test()함수로 비율 차이 검정 두 집단 및 세 집단 이상의 비율 검정은 prop.test()함수 이용 연구가설 H0: 세 가지 교육 방법에 따른 집단 간 만족율에 차이가 없다. H1: 세 가지 교육 방법에 따른 집단 간 만족율에 차이가 있다. 연구환경: IT 교육센터에서 세 가지 교육 방법을 적용하여 교육을 시행하였다. 세 가지 교육 방법 중 더 효과적인 교육 방법을 조사하기 위해서 교육생 150명을 대상으로 설문 조사를 시행하였다. 설문조사 결과는 표와 같다. 만족 불만족 참가자 PT교육 34 16 50 코딩교육 37 13 50 혼합교육 39 11 50 합계 110 40 150 세 집단 subset 작성과 기술통계

R : 분산분석(F-검정) [내부링크]

분산분석(ANOVA Analysis) T-검정과 동일하게 평균에 의한 차이 검정 방법 두 집단 이상의 평균 차이를 검정 분석분석을 시행할 때 주의점: 1개의 범주형 독립변수와 종속변수 간의 관계를 분석하는 일원 분산분석과 두 개 이상의 독립변수가 종속변수에 미치는 효과를 분석하는 이원 분산분석으로 분류. 독립변수는 명목척도(성별), 종속변수는 등간척도나 비율척도로 구성되어야 한다. 마케팅전략의 효과, 소비자 집단의 반응 차이 등과 같이 기업의 의사결정에 도움을 주는 비계량적인 독립변수와 계량적인 종속변수 간의 관계를 파악할 때 이용한다 만일 ANOVA 가 아닌 여러 번 t 검정을 하면 안되나? -> 1종 오류가능성이 증대됨 예) 세 집단을 비교하기 위해서는 세 번의 독립표본 t 검정을 수행하여야 함. 각 t 검정에서 유의수준을 0.05로 설정하였다면, 세 번 모두 귀무가설이 맞는데 귀무가설을 기각하지 않은 옳은 결정을 할 확률은 0.95 0.95 0.95 = 0.86, 1종

python[프로그래머스] : 문자열 내 p와 y의 개수 [내부링크]

문제 대문자와 소문자가 섞여있는 문자열 s가 주어집니다. s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요. 'p', 'y' 모두 하나도 없는 경우는 항상 True를 리턴합니다. 단, 개수를 비교할 때 대문자와 소문자는 구별하지 않습니다. 예를 들어 s가 "pPoooyY"면 true를 return하고 "Pyy"라면 false를 return합니다. 제한사항 문자열 s의 길이 : 50 이하의 자연수 문자열 s는 알파벳으로만 이루어져 있습니다. 코드 def solution(s): s=s.lower() a= s.count('p') b= s.count('y') if a == b : return True elif a != b : return False 출처 https://school.programmers.co.kr/learn/courses/30/lessons/12916 코딩테스트 연습 - 문자열 내 p와 y의 개수

python[프로그래머스] : 하샤드 수 [내부링크]

양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요. 제한 조건 x는 1 이상, 10000 이하인 정수입니다. 코드 def solution(x): x1 = str(x) num = 0 for i in range(len(x1)) : num += int(x1[i]) if x % num == 0 : answer = True else : answer = False return answer 출처https://school.programmers.co.kr/learn/courses/30/lessons/12947 코딩테스트 연습 - 하샤드 수 양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나

python[프로그래머스] : 문자열을 정수로 바꾸기 [내부링크]

문제 문자열 s를 숫자로 변환한 결과를 반환하는 함수, solution을 완성하세요. 제한 조건 s의 길이는 1 이상 5이하입니다. s의 맨앞에는 부호(+, -)가 올 수 있습니다. s는 부호와 숫자로만 이루어져있습니다. s는 "0"으로 시작하지 않습니다. 코드 def solution(s): return int(s) 출처https://school.programmers.co.kr/learn/courses/30/lessons/12925 코딩테스트 연습 - 문자열을 정수로 바꾸기 문제 설명 문자열 s를 숫자로 변환한 결과를 반환하는 함수, solution을 완성하세요. 제한 조건 s의 길이는 1 이상 5이하입니다. s의 맨앞에는 부호(+, -)가 올 수 있습니다. s는 부호와 숫자로만 이루어져있습니다. s는 "0"으로 시작하지 않습니다. 입출력 예 예를들어 str이 "1234"이면 1234를 반환하고, "-1234"이면 -1234를 반환하면 됩니다. str은 부호(+,-)와 숫자로만 구성

python[프로그래머스] : x만큼 간격이 있는 n개의 숫자 [내부링크]

함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요. 제한 조건 x는 -10000000 이상, 10000000 이하인 정수입니다. n은 1000 이하인 자연수입니다. 코드 def solution(x, n): answer = [] if x > 0 : for i in range(x,x*n+1,x) : answer.append(i) elif x < 0 : for i in range(x,x*n-1,x) : answer.append(i) else : for i in range(0, n): answer.append(0) return answer 출처https://school.programmers.co.kr/learn/courses/30/lessons/12954 코딩테스트 연습 - x만큼 간격이 있는 n개의 숫자 문제 설명 함수 solu

python[프로그래머스] : 정수 제곱근 판별 [내부링크]

문제 임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다. n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요. 제한 사항 n은 1이상, 50000000000000 이하인 양의 정수입니다. 코드 def solution(n): answer = 0 x = n**0.5 if x % 1 ==0 : answer=(x+1)**2 else : answer = -1 return answer 출처https://school.programmers.co.kr/learn/courses/30/lessons/12934?language=python3 코딩테스트 연습 - 정수 제곱근 판별 문제 설명 임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다. n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는