programming

    [Git] 저장소에 텅 빈 디렉터리를 만들어보자!

    프로젝트 중에는 경우에 따라 빈 폴더가 있어야 하는 경우가 있습니다. 예를 들어 파일 업로드/다운로드 기능 개발 시 uploads/ 등의 비어 있는 공간을 만들고 이곳에 경로를 잡아 자원을 관리하기도 합니다. 소스 코드를 GitHub로 관리하고 있다면 원격 저장소에 이 정적 디렉터리 안의 샘플 파일까지 커밋할 필요는 없습니다. 하지만 안의 내용을 다 지우고 아무리 Push를 진행하더라도 Git은 빈 디렉터리를 인식 대상에서 제외합니다. 그런데 나는 꼭 빈 디렉터리를 원격 저장소에 함께 올리고 싶다면? 해결책이 전혀 없는 건 아닙니다. 바로 .keep이라는 임시 숨김 파일을 만들어서 넣어주는 방법인데요. 파일 이름에 정해진 규칙은 없지만, 관례상 .keep 또는 .gitkeep을 많이 사용하는 것 같습니다..

    [Python] SVM(Support Vector Machines)

    32. SVM(Support Vector Machines) 32.1 개요 32.1.1 예측 기법 Boser, Guyon 및 Vapnik에 의해 1992년 제안된 이후, 1990년대 후반부터 현재까지 학계와 업계(주로 미국 및 유럽 선진국)에서 활발하게 활용되고 있는 예측 기법 32.1.2 기계학습의 분야 기계학습의 분야 중 하나로 패턴 인식, 자료 분석을 위한 지도학습 모델 32.1.3 용도 주로 분류와 회귀 분석을 위해 사용됨 32.1.4 알고리즘 두 카테고리 중 어느 하나에 속한 데이터의 집합이 주어졌을 때 새로운 데이터가 어느 카테고리에 속할지 판단하는 기준으로 가장 큰 폭을 가진 경계를 찾는 알고리즘 직선 B1과 B2 모두 두 범주를 잘 분류하고 있음 B2보다는 B1이 두 범주를 여유있게 분류하고..

    [Python] 의사결정나무

    31. 의사결정나무(Decision Tree) 31.1 의사결정나무 모형 31.1.1 일련의 독립변수들을 활용하여 분류를 하거나 예측을 수행하는 기법 31.1.2 최종 결과물이 "일련의 규칙들"로 표현됨 31.1.3 Decision Trees 또는 Trees라고 불림 31.2 의사결정나무의 2가지 기본 아이디어 31.2.1 반복적 분할(Recursive partitioning) 31.2.1.1 레코드들을 두 부분으로 반복해서 잘라 세분된 영역 내의 동질성이 최대가 되도록 함 31.2.1.2 계속 잘라나가다 보면 모든 학습용 데이터를 100% 정확하게 분류해 낼 수 있을 만큼 세분화 해 나갈 수 있음 31.2.2 분류나무의 가지치기(Pruning the tree) 31.2.2.1 앞서 설명한 반복적 분할을..

    [Github] 저장소(Repository)에 라이선스를 달아보자!

    Github를 자주 이용한다면 저장소(Repository)를 보다 완성도 있게 만들고 싶은 욕구가 생깁니다(?). 실제 유명한 오픈소스 프로젝트 역시 두리번거리다 보면 하나같이 공통점이 있는데요. 바로 라이선스를 명시하고 있다는 것입니다. 사실 많은 분이 간과하고 있는 점 중 하나가 라이선스 명시를 지키지 않는 부분인데요. 오픈소스 생태계에서 이 부분은 되게 중요합니다. 저도 경각심을 가지고 이번 포스팅을 작성하게 되었습니다. 대표적인 S/W 라이선스로 GPL이나 BSD, MIT 등등 많은 종류가 있는데, 이번에는 자신의 Github 저장소에 라이선스를 추가해보도록 하겠습니다. 실제로 그렇게 어렵지 않으니 한번 정리해놓으면 그다음부터는 손쉽게 진행할 수 있습니다. 원격 저장소 확인 및 새 파일 생성 먼저..

    [Python] 인공신경망

    30. 인공신경망 30.1 인공신경망의 개요 30.1.1 개요 30.1.1.1 인공지능의 한 분야 30.1.1.2 인간 두뇌의 생물학적 작동 형태를 모방하여 컴퓨터로 하여금 지적인 능력을 갖추게 하는 방법론 30.1.1.3 공학 부문에서 시작되어 재무 관리 등에 도입되기 시작 30.1.2 선형분류와 비선형분류 2) 추정 : 회귀식, 회귀계수 3) 검정 : 독립변수의 영향력, 모형의 적합성(R2) 등 3) 인공신경망의 구조 4) 학습결과의 예 30.2 기본 개념 30.2.1 처리요소(PE) 30.2.1.1 각자의 인자(neuron)를 의미 30.2.1.2 노드(node) 또는 유니트(unit)라고 함 30.2.2 층(layer) 30.2.2.1 보통 세 개의 층(three-layered) 30.2.2.2 ..

    [Python] 회귀분석

    29. 회귀분석 29.1 회귀분석(Regression)이란? 29.1.1 독립변수(X)와 종속변수(Y)의 관계식을 구하는 기법 독립변수가 한단위 증가할 때 종속변수가 얼마나 영향을 받는지 분석하는 방법 29.1.2 추정: 회귀식, 회귀계수 29.1.3 검정: 독립변수의 영향력, 모형의 적합성(R2) 등 29.2 회귀분석의 종류 29.2.1 단순회귀분석: 독립변수가 1개인 회귀모형 (예) 기업의 광고집행액(X)을 이용하여 그 기업의 매출액(Y)을 예측하는 모형 29.2.2 중회귀분석: 독립변수가 2개 이상인 회귀모형 (예) 어린이의 연령(X1)과 하루 평균 학습시간(X2)을 이용하여 그 어린이의 성적(Y)을 예측하는 모형 기법 대상변수A 대상변수B 적용 예 카이제곱검정 이산형 이산형 성별과 결혼유무 사이에..

    Visual Studio Code에서 들여쓰기(Indention) 설정을 자유롭게!

    최근 근황으로 마이크로소프트(Microsoft)에서 내놓은 에디터인 비주얼 스튜디오 코드(Visual Studio Code, 이하 VSCode)를 사용하여 프로젝트를 진행하고 있습니다. 타 IDE를 사용하다 이 에디터를 사용하다 보니 문득 궁금한 점이 생겼는데요. 네, 정말 잉여로운 생각입니다. 실제로 stackoverflow 에 외국인 형님의 질문이 있었습니다(역시 글로벌 지식iN). 저같은 경우 탭(Tab)키를 누르면 2칸보다는 넉넉하게 4칸으로 들여쓰기 되는 게 편리했거든요. 이번에는 VSCode에서 기본으로 설정되어 있는 들여쓰기 2칸을 4칸으로 바꿔보겠습니다. 아직도 VSCode를 사용해보지 않았다면 이참에 설치 후 한번 사용해 보는 것도 나쁘지 않을 것 같습니다! File - Preferenc..

    [Python] 기술통계와 모델링

    28. 기술통계와 모델링 28.1 데이터마이닝(Data Mining) 대용량의 데이터로부터 유용한 정보를 캐내는(mining) 작업 대용량 데이터에 존재하는 데이터 간의 관계, 패턴, 규칙 등을 찾아내고 모형화해서 기업의 경쟁력 확보를 위한 의사결정을 돕는 일련의 과정 28.1.1 CRISP-DM(CRoss-Industry Standard Processing for Data Mining) 데이터마이닝을 위한 업계 표준 프로세스 28.1.2 인공지능 / 데이터마이닝의 다양한 기법들 28.1.2.1 분류 모형(Classification Models) 어떤 기준(정답)에 의해 분석 대상을 2개 혹은 3개 이상의 집단으로 분류하는 예측 모형(부도예측, 기상예측, 채권등급예측 등) 다중판별분석(MDA, Multi..

    [Python] 웹 스크레이핑

    27. 웹 스크레이핑 27.1 웹 스크래핑의 개념 27.1.1 웹 스크레이핑(web scraping) 웹 사이트 상에서 원하는 부분에 위치한 정보를 컴퓨터로 하여금 자동으로 추출하여 수집하도록 하는 기술 27.1.2 웹 크롤링(web crawling) 자동화 봇(bot)인 웹 크롤러(web crawler)가 정해진 규칙에 따라 복수 개의 웹 페이지를 브라우징하는 작업 27.2 웹 스크래핑을 위한 라이브러리 27.2.1 BeautifulSoup 27.2.2 scrapy # 이미지 다운로드 방법1 import urllib.request # daum 사이트의 로고에서 마우스 우클릭 - 이미지 주소 복사 url = "https://t1.daumcdn.net/daumtop_chanel/op/201703150645..

    [Python] Matplotlib

    26. Matplotlib 26.1 실습 예제 - 기본 사용법 # 매직 명령어 # 그래프를 조작할 수 있다. # 그래프 제목 오른쪽의 stop interaction 버튼을 누르기 전까지 그래프의 수정이 가능함 # %matplotlib nbagg # 생성된 이후에는 조작할 수 없는 옵션 %matplotlib inline import matplotlib import matplotlib.pyplot as plt import pandas as pd import numpy as np nums = np.random.randn(10) print(nums) print(nums.cumsum()) # 누적 합 # randn(n): 정규분포 난수 n개 생성 # Series: 1차원 배열, DataFrame: 2차원 배열 s..

    [Issue] Tomcat version x.x only supports J2EE 1.2, 1.3, 1.4, and Java EE 5, 6, and 7 Web modules

    이클립스에서 웹 프로그래밍을 진행하다 보면 톰캣 서버로 프로젝트를 추가할 때 Add 버튼이 활성화되지 않는 경우가 생길 수 있습니다. 이런 경우에 어떻게 해결해야 하는 지 알아보겠습니다. Add and Remove에서 문제 발생 Add 버튼이 비활성화되어 있다면 일단 Cancel 을 누르고 파일 탐색기 (Ctrl + R) 을 누릅니다. jst.web Version 수정 해당 프로젝트 경로의 .settings/org.eclipse.jdt.core.prefs 를 에디터로 열어봅시다. 코드 중 음영으로 표시되어있는 버전을 3.0으로 바꿔줍니다. Add 버튼이 활성화된 것을 확인 이제 Add > 버튼이 활성화되었네요!

    Robo로 Mongo를 다뤄보자! Robo 3T 설치 가이드

    앞서 포스팅했던 MongoDB 설치에서 MongoDB가 무엇인지와 간단한 테스트를 진행했습니다. 이번에는 터미널 환경이 아닌 편하게 사용할 수 있는 툴을 설치해보겠습니다. MongoDB에서 밀고있는 Compass도 있지만 이번에는 Robo 3T라는 프로그램을 소개하려고 합니다. Robo 3T는 MongoDB를 편하게 조회하고 변경할 수 있는 그래픽 유저 인터페이스(GUI) 입니다. 기존 Robomongo에서 Robo 3T로 이름이 바뀐 것 같습니다. 그럼 설치하러 가볼까요? 1. Robo 3T 설치 사이트로 이동 검색창에 robo 3t download 를 입력하여 공식 사이트에서 Download Robo 3T 버튼을 클릭합니다. 참고로 왼쪽의 Studio 3T는 상업용 솔루션 정도로 이해하시면 됩니다. ..