전체 702

소프트웨어 재사용

소프트웨어 재사용 - 기존의 소프트웨어 또는 지식을 이용하여 새로운 소프트웨어를 구축하는 일 - 설계, 요구명세, 검사, 아키텍쳐 등도 포함. 소프트웨어 재사용의 목적 - 신뢰성 : 기능, 안정, 속도 등의 사전 상능 검증 - 확장성 : 검증된 기능 기반으로 upgrade 용이 - 생산성 : 비용, 시간, 위험 등 전체적 개발 프로세스 향상 소프트웨어 재사용의 대상 1. 일반적 지식 - 환경정보 : 교육 및 활용을 통해 얻어진 지식 - 외부지식 : 개발 및 특정분야의 참여를 통해 얻은 지식 2. 설계 정보 - 기본설계 - 상세설계 3. 데이터정보 - 시스템 데이터 - 시험사례 4. 프로그램 코드 - 모듈 - 프로그램 소프트웨어 재사용의 원칙 1. 범용성 : 특정 응용분야만이 아닌 일반적으로 활용될..

csv 데이터를 특정 형식으로 read하기 (pandas read_csv, usecols, dtype)

read_csv 판다스의 모듈 중, csv파일을 읽어 데이터프레임 타입으로 반환하는 read_csv라는 함수가 있다. data_frame = pd.read_csv() 함수의 파라미터 중 데이터의 타입을 지정하여 받을 수 있는 것이 있어서 이를 살펴본다 usecols usecols파라미터는 csv파일에서 사용할 컬럼을 지정한다. data_type = {"f_1":'float16', "f_2":'float16'} df = pd.read_csv(folder_path + "/train.csv", usecols = data_types_dict.keys(), ) dtype dtype 파라미터는 컬럼이름을 key로, 데이터타입을 value로 하는 dictionary 객체를 넣는다. data_type = {"f_1":..

소프트웨어 개발 방법론 (구조적방법론 정보공학적방법론 객체지향방법론 CBD방법론)

1. 구조적 방법론 - 기능중심의 방법론 - 업무활동 중심의 방법론 - 프로그램 로직 중심 - ex) 파일을 불러오는 프로그램을 만들때 -> 파일을 가져오는 기능을 중심으로 프로그램 구현 2. 정보공학 방법론 - 데이터 중심의 방법론 - ex) 파일을 불러오는 프로그램을 만들때 -> ppt, excel, 등 데이터의 타입별로 프로그램 구현 3. 객체지향 방법론 - 객체, 클래스간의 관계를 식별하여 구현 - 프로그램 단위는 객체 - 주요 지원언어 : c++, java 4. CBD방법론 - 컴포넌트 중심의 개발 방법론 - 인터페이스 중시 * 인터페이스 : 사용자와 시스템가 맞닿는, 혹은 그 둘을 연결시켜주는 면으로써, 두개의 다른 데이터 타입을 연결시켜주는 것 - 객체방법론의 진화 - 주요 산출물 : 유스..

소프트웨어 개발 생명주기

1. 폭포수 모델 - 단계적 개발 방법론 2. 프로토타이핑 모델 - 요구분석 단계에서 나온 주요 요구사항을 바탕으로 프로토타입 설계 3. V모델 - 프로젝트 적용 관리 용이하다 - 프로젝터의 검증 및 확인을 강조한 모델. - 개발활동과 테스트 활동이 어떻게 연관되어 있는지 잘 설명, 전체 개발 주기동안 개별 활동과 이에 해당하는 테스트 활동이 병행 4. VP모델 - v모델에 프로토타이핑 기법을 추가, 프로젝트의 불확실성 요소, 리스크를 줄일 수 있음 5. 점증적 모델 - 고객이 원하는 날짜에 모든 기능을 가진 시스템 구현이 어려울때, 핵심 부분만 먼저 개발하여 동작하게 한 후, 나머지를 구현하는 방식 - 몇번의 확장을 통해 개발됨. - 각 단계의 버전은 몇 가지 제한된 기능에 한하여 동작, 추후 시스템 ..

소프트웨어 공학의 4가지 중요요소

1. 사람 - 사람과 조직에 의해 움직이므로 사람에 대한 의존성이 크다 - 다른 공학보다 다양한 이슈가 생기므로 소프트웨어 개발을 일목요연하게 정리하는것은 불가능 2. 도구 - 어떤일을 수행할 때 일관성을 목적으로 사용하는 방법이나 자동화 반자동화 시켜 놓는것을 말함 - 모델링, 형상관리, 요구관리 등 다양한 도구 존재 3. 방법 - 계획수립, 추정, 소프트웨어분석, 자료구조, 프로그램구조, 알고리즘, 코딩, 테스팅 등으로 구성 - 소프트웨어 품질에 대한 평가기준 도입 4. 절차 - 방법과 도구를 결합하여 소프트웨어를 합리적으로 적시에 개발할 수 있도록 하는것 - 진행을 평가해주는 마일스톤 등의 순서를 정의

함수 파라미터를 변수로 묶어서 넣기 (*args, **kwargs)

함수의 파라미터를 변수로 만들어주는 것 *args, **kwargs 함수의 파라미터 값이 매우 많은 경우가 있다. (catboost의 예) 이 경우 함수의 파라미터값을 줄줄 써주어야 하는 불편함이 있다. 이를 방지하기 위해 변수에 함수 파라미터를 넣고, 해당 변수만 함수의 input값으로 주면 코드를 깔끔하게 할 수 있다. 이를 가능하게 해주는 것이 *args와 **kwargs이다. 먼저 파라미터 a,b,c가 있는 다음과 같은 함수가 있다. def func(a,b,c): print("a : ",a) print("b : ",b) print("c : ",c) 이를 *args와 **kwargs *args 파라미터들을 튜플형태로 묶어준다. 파라미터 순서에 맞게 튜플 값들의 순서를 맞춰주어야 한다. input_a..

train_test_split 데이터 나누기

train_test_split from sklearn.model_selection import train_test_split 데이터셋을 나눠주는 train_test_split 에 대해서 알아본다. 옵션값 x_train, x_valid, y_train, y_valid = train_test_split(train_x, train_y, test_size=0.2, shuffle=True, stratify=train_y, random_state=42) 1. test_size : test 사이즈의 비율 2. shuffle : split하기 전 섞을것인지 3. stratify : class label의 비율을 맞춰서 split할것인지 4. random_state : 실행할 때 마다 똑같이 섞을것인지 다르게 섞을것인지..

파이썬 함수주석(Function Annotations), (->, : , __anotations__)

파이썬 Function Annotations 파이썬에서 함수를 구현할때, input과 output의 type을 주석으로서 명시해줄 수 있다. 다음과 같이 ":" 과 "->"를 하고 타입을 명시해준다. def f(a:str, b:int, c:bool)->list: 이는 a는 string타입, b는 int타입, c는 bool타입, 그리고 함수 리턴값은 list타입을 의미한다. 예시 1. code def f(a:str, b:int, c:bool)->list: print("a의 데이터타입은 string : ",a) print("b의 데이터타입은 int : ",b) print("c의 데이터타입은 bool : ",c) return [a,b,c] return_value = f("hello",10,True) print..

prophet cross_validation 사용법

cross_validation from fbprophet.diagnostics import cross_validation import fbprophet as Prophet model = Prophet.Prophet().fit(data) df_cv = cross_validation(model, initial='730 days', period='180 days',horizon = '365 days') 모델을 학습한 후 cross_validation으로 체크한다. 이때 parameter값들 initial, peroid, horizion의 의미를 정리한다. 공식문서 다음과 같이 정의 되어있다. This cross validation procedure can be done automatically for a ra..

mongodb 명령어

1. 용어 sql mongo db database database table collection row document column field 2. 특정 조건에 맞는 값 찾기 : db.collection.find({“column”:{“$parameter”:x”}}) parameter 설명 gt(e) 주어진 값 보다 큰값(같은 값) lt(e) 주어진 값 보다 작은값(같은 값) ne 주어진 값과 일치하지 않는 값 in 주어진 배열 안에 속하는 값 nin 주어진 배열안에 속하지 않는 값 3. 포함시킬 칼럼찾기 : db.collection.find({"column":a},{"column1":1,"column2":0}) 파라미터 설명 1 주어진 배열 안에 속하는 값 0 주어진 배열안에 속하지 않는 값 4. 정렬하..

DB/MONGODB 2021.08.10

파이썬 시간 datetime 클래스

함수 의미 timetype.strftime(“%Y%m%d”) time 타입의 객체를 “20210510” 형식으로 바꿈 timetype-timedelta(days=1) 하루 전으로 시간을 옮김 datetime.datetime.strptime(“2021-07-19”,”%Y%m%d”) 문자열을 time 타입으로 (2021-07-19 00:00:00) dateobj.date() 분단위 까지 있는 시간타입을 일단위까지 만들어줌 (2021-07-19 00:00:00 => 2021-07-19 ) dateobj.weekday() 날짜타입의 요일을 반환 (월요일:0, 화요일:1 ...일요일:6)

깃 명령어

1. 설정 명령어 설명 git config --list name, email 확인 git checkout master -f 강제로 특정 마스터로 이동 git branch -d issue1 브랜치 삭제 2. stash 명령어 설명 git stash 수정중인 파일을 저장(https://gmlwjd9405.github.io/2018/05/18/git-stash.html) git stash list stash목록을 확인한다 git stash apply [stash이름] (git stash apply stash@{2}) 해당 stash를 가져와서 적용한다 (이름없으면 가장 최근것) git stash drop [stash이름] 해당 stash를 삭제한다 (이름없으면 가장 최근것 삭제) git stash save M..

CLI/깃허브 2021.08.10

주식용어 정리(배당, 세금)

1. 용어 용어 뜻 exchange 거래소 stock dividend 주식배당 cash dividend 현금배당 split 주식분할(액면분할) stock quote 주식시세 global equity 글로벌 주식 free riding 주식을 매도 후 3일이 지나지 않은 상태에서(예수금으로 들어오지않은 금액으로) 다른 주식을 사고 바로 팔아버리는 행위 => 현금없이 거래하는것 => 몇회이상 반복시 90일 거래정지 market capitalization (market cap) 시가총액 par value 시장가 (시장에서 거래되는 가격) face value 액면가 (초기에 정한 가격) 2. 배당 2.1 현금배당 용어 뜻 ex-dividend date 배당락일: 배당에 따른 주가 하락이 발생한 날 => 배당 기준..

금융/주식 2021.08.10

데이터프레임의 iloc, loc

개요 데이터프레임에서 특정행과 열을 출력하고싶을 때 사용하는 iloc와 loc 사용법을 알아 본다. 데이터프레임은 아래와 같다. 인덱스는 아래와 같이 지정한 상태 df.set_index("Unnamed: 0",inplace=True) df.iloc - 하나의 값 행과 열을 인덱스번호 로 접근할 수 있다. 1. 인덱스번호로 행 출력 df.iloc[0] 2. 인덱스번호로 행 출력(괄호 두개쓰면 데이터프레임형태) df.iloc[[0]] 3. 인덱스번호로 행, 열번호로 출력 df.iloc[0][0] 75616.0 4. 인덱스번호로 행, 컬럼명으로 열 출력 df.iloc[0]["전국[호]"] 75616.0 df.iloc - 여러개의 값 1. 여러개의 row번호로 출력 train_x.iloc[[1,2,3]] 2...