본문 바로가기
728x90

전체 글121

시계열 개념 / ADF Test / 시계열 분해 /ARIMA 시계열 예측(Time-Series Prediction)을 다루는 여러 가지 통계적 기법 ARIMA(Auto-regressive Integrated Moving Average) 페이스북 Prophet LSTM Layer 시계열 예측의 예시 지금까지의 주가 변화를 바탕으로 다음 주가 변동 예측 특정 지역의 기후데이터를 바탕으로 내일의 온도 변화 예측 공장 센터 데이터 변화 이력을 토대로 이상 발생 예측 예측을 위한 전제 2가지 과거의 데이터에 일정한 패턴이 발견된다. 과거의 패턴은 미래에도 동일하게 반복될 것이다. >>>> 즉, 안정적(Stationary) 데이터에 대해서만 미래 예측이 가능하다. 안정적(Stationary) : 시계열 데이터의 통계적 특성이 변하지 않는다 / 시계열 데이터를 만들어내는 시간.. 2022. 12. 18.
Loss / Metric Loss : 모델 학습시 학습데이터(train data) 를 바탕으로 계산되어, 모델의 파라미터 업데이트에 활용되는 함수 Metric : 모델 학습 종료 후 테스트데이터(test data) 를 바탕으로 계산되어, 학습된 모델의 성능을 평가하는데 활용되는 함수 왜 loss와 metric를 다르게 적용하는가? 분류모델일 경우 loss : crossentropy를 써서 학습시키고, metric : accuracy로 성능을 평가한다. 회귀모델일 경우 loss와 metrics에 RMSE를 둘 다 쓰기도 하고, 또 mse, mae 등 여러가지를 쓴다. 다르게 쓰는 이유는, loss는 학습을 위해 쓰는 것이기 때문에 학습을 잘 시킬 수 있는 방법을 아는 친구가 적절하고, (crossentropy는 continuous.. 2022. 12. 15.
RFM(Recency, Frequency, Monetary) RFM(Recency, Frequency, Monetary)분석 가장 최근 가장 빈번 가장 많은 금액 을 구매한 고객 을 기준으로 고객에게 등급을 부여하는 방식 데이터 준비 Sales 데이터 불러오기 총 log 고객수 : 52672 (unique ID count) Purchase 고객 (27682명)만 sales_data 변수로 지정 RFM dataframe 생성 열 생성 : RFM으로 사용할 columns 생성 후 RFM_data 변수로 지정 RFM_data = sales_data.groupby(['ID']).agg({'Interval':'min','ID': 'count', 'Payment': 'sum'}) 구매 고객 중 RFM 데이터 사용 가능한 고객수 : 5267명 R : ID별 오늘 - 접속시간 .. 2022. 12. 14.
EDA 노트 상관계수의 절대값이 높다고 해서, 그 요소가 result의 원인이 되는 것은 아니다. breast cancer에서 softness error와 악성간의 상관계수지수가 높긴 했지만, 그렇다고 softness error가 암의 원인은 아니다. 시각화하는 seaborn의 유형을 잘 고르면 내가 전달하고 싶은 말을 효과적으로 할 수 있다. seaborn 유형을 더 많이 이해해야할 필요가 있다. bike 3시 예측하는 eda에서 나는 시간별, 온도, 습도에 따른 count 비교를 하고 싶었지만, 그 유형을 찾는데 (violin) 많은 시간이 걸렸고, 더불어 시간적 제한으로 결국 구현해보지 못하고 제출했다. duplicated는 전체로, index로 쓸 column 으로 각각 실행해야한다. 이상치 (Outlier).. 2022. 12. 14.
이미지처리 Basic 영상처리 사용목적에 따라 적절히 처리하여 개선된 영상을 생성하는것 노이즈제거, 대비(contrast)개선, 관심영역(region of interest)강조,영역분할(segmentation), 압축 및 저장 저수준 : 영상 획득, 향상, 복원 ,변환처리, 압축 고수준 (Computer Vision) : 영상 분할, 표현, 인식 Color Space : 색을 표현하는 다양한 방식. 색 공간 Channel : 각 컬러스페이스를 구성하는 단일 축 이미지 저장방식 raster, bitmap : 각 점 하나하나의 색상 값을 저장하는 방식. (r, g, b) (255,255,255). 확대시 깨짐 vector : 상대적인 점의 선의 위치를 방적식으로 기록 후 확대 및 축소할 때 각 픽셀의 값을 재계산하여 깨짐이 없음.. 2022. 12. 12.
상관계수, 경사하강법, 손실함수, RMSE, 경사하강법, 선형회귀 Correlation does not imply causation 상관은 인과를 함축하지 않는다 상관계수 한 변수가 커짐에 따라 다른 변수가 작아지는 관계인 경우, 두 변수는 '상관 관계가 있다'고 하고, 그 관계된 정도는 '피어슨(Pearson) 상관 계수'라고 함. model.fit 모델을 학습시킨다 = 모델의 정확도를 가장 높일 수 있는 최적의 "매개변수(가중치,Weight)" , 혹은 "파라미터(편향,Bias)" 를 찾는다 model.compile 손실함수(loss function) or 비용함수(cost function) predicted y 와 real y 값 간의 차이를 나타내는 함수. 값이 크면 그만큼 둘의 거리가 멀다는 뜻으로, 정확하지 않다는 뜻. 손실값은 작을수록 좋은것! 1) 모델이.. 2022. 12. 9.
TensorFlow Developer Certificate 시험 후기 마지막 10분을 남기고 제출했던 텐서플로우 개발자 자격증의 후기를 남긴다. 좀 더 생생하게 기록하기 위해, 끝나자마자 바로.. TensorFlow Developer Certificate 자격증 이름 그대로 TensorFlow를 잘 쓰는 개발자는 자격증을 주는 것인데, 시험 응시료는 $100, 5시간안에 5문제를 풀면 된다. Category 1 : Basic Model Category 2 : DNN Model Category 3 : CNN Model Category 4 : NLP Model Category 5 : Sequence Model 나는 전남 ICT 이노베이션스퀘어에서 주최하는 AI 전문자격 취득과정 (Google) 에 참여했고, 2022.10.04 - 2022.11.29 까지 저녁 7시 - 11시.. 2022. 12. 9.
CSV, XML, JSON 모듈(module) : 파이썬으로 만든 코드가 들어간 파일 .py 패키지(package) : 기능적으로 동일하거나 동일한 결과를 만드는 모듈들의 집합 또는 폴더. 종종 라이브러리라고도 불림 라이브러리(library) : 모듈과 패키지의 집합. 패키지보다 포괄적인 개념이나 패키지와 혼용되어 사용되기도 함. sys os glob PIP(Package Installer for Python) : 패키지 관리자로 파이썬을 설치하면 기본으로 설치됨 PyPA(Python Packaging Authority) : 파이선 패키지를 관리하고 유지하는 그룹 PyPI(The Python Package Index) : 파이썬 패키지들의 저장소 sys.path : 현재 폴더와 파이썬 모듈들이 저장되는 위치를 리스트 형태로 반환 .. 2022. 12. 8.
문자열다루기, 정규표현식 인코딩과 유니코드 인코딩 (encoding): 문자열을 바이트로 변환하는 과정 디코딩 (decoding) : 바이트를 문자열로 변환하는 과정 유니코드(Unicode) : ISO(International Standards Organization); 전 세계 문자를 모두 표시할 수 있는 표준 코드 UTF-8, UTF-16 : 유니코드를 표현하는 인코딩 방식들. 인코딩시 최소 8bit 혹은 16bit가 필요한가의 의미. 대세는 UTF-8이다. UTF-8은 문자 표현 시 1~4bytes 가 필요하고, UTF-16는 2~4bytes가 필요하다. 저장용량이 중요할 때에 코드들의 문자에 따라 잘 선택해줘야 한다. 영문은 UTF-8일 때 1byte, UTF-16일때 2bytes 이고, 한글은 UTF-8일 때 3byte.. 2022. 12. 8.
Matplotlib, Seaborn cheatsheet https://deeplearning.fr/wp-content/uploads/2020/12/0_Cfo6qfxirL4STHTY1.png https://martinnormark.com/a-simple-cheat-sheet-for-seaborn-data-visualization-2/ A simple cheat sheet for Seaborn Data Visualization Just gonna put this out here, courtesy of Kaggle's Data Visualization course [https://www.kaggle.com/learn/data-visualization]. It is a super simple description of the different p.. 2022. 12. 7.
Scikit-Learn Scikit Learn : 파이썬 기반 머신러닝 라이브러리. Scipy 및 NumPy 와 비슷한 데이터 표현과 수학 관련 함수 일반적으로 머신러닝에서 데이터 가공(ETL:Extract Transform Load)을 거쳐 모델을 훈련하고 예측하는 과정을 거침 Scikit Learn은 ETL - transformer()를 제공하고, 모델의 훈련과 예측은 Estimator 객체를 통해 수행되며, Estimator에는 각각 fit()(훈련), predict()(예측)을 행하는 메소드가 있음. 모델의 훈련과 예측이 끝나면 이 2가지는 작업을 Pipeline()으로 묶어 검증을 수행. data >> transformer() >> estimator.fit(X,y) >> estimator.predict(X) >> Pi.. 2022. 12. 7.
알고리즘 선택하기 어떤 알고리즘을 사용해야 하는가. 데이터의 크기, 품질, 특성 가용 연산(계산) 시간 작업의 긴급성 데이터를 이용해 하고 싶은 것 알고리즘 유형 1. 지도 학습(Supervised learning) 지도 학습 알고리즘은 한 세트의 사례들을(examples) 기반으로 예측을 수행합니다. 예를 들어, 과거 매출 이력(historical sales)을 이용해 미래 가격을 추산할 수 있습니다. 지도 학습에는 기존에 이미 분류된 학습용 데이터(labeled training data)로 구성된 입력 변수와 원하는 출력 변수가 수반되는데요. 알고리즘을 이용해 학습용 데이터를 분석함으로써 입력 변수를 출력 변수와 매핑시키는 함수를 찾을 수 있습니다. 이렇게 추론된 함수는 학습용 데이터로부터 일반화(generalizin.. 2022. 12. 7.
오차행렬, FP, FN, F-score, Threshold Accuracy for Classification 의 함정. 1-10까지의 handwriting 다중 분류 모델을 변형하여, label을 3일때만 구분하는 (0,0,1,0,0,0,0,0,0,0) 로 바꾸고 fitting 을 시켜도 accuracy는 0.93이 나온다. 0을 찍어도 accuracy가 잘 나올 수 있다는 이상한 사실. 즉, 불균형한 데이터, unbalanced 데이터, 정답의 분포에 따라 모델의 성능을 잘 평가하지 못할 수 있다. . 그렇기 때문에 분류 문제에서는 정확도 외에 다양한 평가 척도를 사용한다. 오차행렬 (confusion_matrix) from sklearn.metrics import confusion_matrix 코로나의 경우.. 건강하고 음성 (TN) 건강하고 양성 (FP) .. 2022. 12. 7.
Batch size, Epoch, Iteration Total Dataset = 1000개 일 때, 100 X 10 = 1000 Batch size Batches Q'ty = Total Dataset |----------------------------------------------------------| 1 Epoch |___|___|___|___|___|___|___|___|___|___| 10 Iterations Batch는 데이터에 관한 부분. Batch는 10개 나오고, 한 Batch의 Size는 100 이 된다. (Batch = mini batch. 같은 개념) Epoch와 Iteration은 학습에 관한 부분. Iteration은 몇 번 학습 데이터를 받는냐로, Batch 갯수와 같고, 총 Dataset 을 모두 학습할 때 1 epoch 했.. 2022. 12. 6.
여러가지 머신러닝 모델들 (1) Dicision Tree (Iris Accuracy : 0.90) 분류, 회귀 모두 가능 한번 분기 때마다 변수 영역을 두 개로 구분하는 모델. 가지 두개로 나눠짐. 정보획득(information gain)의 기준 : 구분 뒤 각 영역의 순도(homogeneity)가 증가, 불순도(impurity), 불확실성(uncertainty)이 최대한 감소방향으로 학습진행 (2) Random Forest (Iris Accuracy : 0.93) Decision Tree를 모아 집단지성의 개념으로 기존 모델의 단점을 보완함. 앙상블 방식(Ensemble method) 랜덤으로 여러 작은 트리를 만들어 각각의 트리에서 나오는 결과를 다수결하여 최종결정 예) 30개의 feature (x값의 갯수 = 컬럼갯수와 같.. 2022. 12. 6.
Day2. 데이터 전처리 10.2 null 값 처리하기 결측치(Missing Data) 결측치가 있는 데이터를 제거한다. 결측치를 어떤 값으로 대체한다 특정값 지정 : .fillna() but, 결측치가 많은 경우, 모두 같은 값으로 대체한다면 데이터의 분산이 실제보다 작아지거나 편향되어 문제가 될 수 있음. 평균, 중앙값등으로 대체 : .fillna(df.mean()) 1특정 값으로 대체했을 때와 마찬가지로 결측치가 많은 경우 데이터의 분산이 실제보다 작아지는 문제가 발생할 수 있음. 다른 데이터를 이용해 예측값으로 대체할 수 있습니다. 예를 들어 머신러닝 모델로 2020년 4월 미국의 예측값을 만들고, 이 값으로 결측치를 보완할 수 있습니다. 시계열 특성을 가진 데이터의 경우 앞뒤 데이터를 통해 결측치를 대체할 수 있습니다... 2022. 12. 5.
랜덤수 맞추기 생각의 흐름 뜯어고치기. 나는 어떻게 생각했나. 제일 처음 생각난 건 if xy: else 1. y값 랜덤 뽑는 함수 넣고 (randrange 혹은 randint인지 하기 설명 참조하기) 2. x값 input 받고 3. if문 작성하고 나니 루프가 안돌아간다. 어디서부터 루프가 돌아야하는가. input 부터였다. 루프를 언제까지 돌릴지 알지 못하고, 맞출때까지 돌려야 하기에 while True로 무한루프를 돌리고 그 안에 x값을 input 받고 if문을 넣는다. while의 끝엔 return이 없다. 어디서부터 반복을 돌려야할 지. 그리고 반복의 끝이 없다면 무한루프를 돌릴것을 기억하기. 2022. 12. 4.
프로그래머스) 점의 위치 구하기 이렇게 2층으로 나눠서 생각하는 연습하기. a가 + 일 때, 경우의수 2가지 묶고, b가 - 일 때, 경우의 수 묶고,, 이건 2차 답안. 1. dot이 [1,2] 이렇게 리스트 안의 요소가 2개이면 굳이 인덱스하여 변수를 정해주지 않아도 변수갯수만 맞으면 자기 알아서 변수에 저장한다는 사실과, 2. 2단계로 나누어 생각하기 둘을 곱해 양수면, 둘은 부호가 같다는 뜻이고, 그 중 x가 양수일때, 그렇지 않을때 둘을 곱해 음수면, 둘은 부호가 다르다는 뜻이고, 그 중 x가 음수일때, 그렇지 않을때.. 2022. 12. 4.
Day1. 데이터, 데이터베이스 데이터 1. 데이터가 중요한 이유 :우리는 데이터가 넘쳐나는 세상에 살고있다. 지금 이 시대는 데이터가 모든 의사결정에 영향을 주고 있기 때문에 데이터는 날이갈 수록 중요해지는 추세이다. 2. 데이터 분석이란 : 현실세계의 신호>측정하여 데이터로 만듬>분석하여 정보를 얻어내기 위한 과정. 3. 필요능력 : (1) 문해력 : 데이터 해석 능력 (2) 코딩 : 컴퓨터와의 커뮤니케이션 수단 데이터 사이언스 데이터 분석을 통한 미래예측을 하는 것. 문제정의 > 데이터수집 > 전처리 > 분석 > 모델링 > 결과해석 및 시각화 2022. 12. 4.
EDA (Explratory Data Analysis) 1. lib import import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns 2. 데이터 불러오기 data = pd.read_csv('이름', low_memory = False) 3. 데이터 null값 처리 data.info() : null값과 자료형 보여줌 data.isnull().sum() : null값이 column별로 몇개인지 보여줌. data["컬럼명"].replace("카테고리명", "0") : 해당 컬럼의 해당카테고리명인 데이터를 모두 0으로 바꿔줌 4. 데이터 분석 data.head() data.tail() data.columns : 전체 컬럼명 data.describe() :.. 2022. 12. 2.
Matplotlib STEP 1. 막대(Bar) 그래프 import matplotlib.pyplot as plt %matplotlib inline # 그래프 데이터 subject = ['English', 'Math', 'Korean', 'Science', 'Computer'] points = [40, 90, 50, 60, 100] # 축 그리기 fig = plt.figure() ax1 = fig.add_subplot(1,1,1) # 그래프 그리기 ax1.bar(subject, points) # 라벨, 타이틀 달기 plt.xlabel('Subject') plt.ylabel('Points') plt.title("Yuna's Test Result") # 보여주기 plt.savefig('./barplot.png') # 그래프를 이.. 2022. 12. 2.
프로그래머스) 배열 원소의 길이, 짝수 홀수 개수 배열 원소의 길이 내답안 다른사람 답안 빈 리스트를 만들어서 for문을 돌려서 해당하는 i를 빈리스트에 append 하는 일 따위.. 이제 하지말자. 이정도는 [ ] 빈리스트 안에다가 [ for i in 해당리스트] 해당리스트를 바로 for문 돌려서 [i for in 리스트] for 문에 앞에 i를 써서 바로 이 리스트에 i가 들어간다고 명시하자 이렇게 하면 코드가 한줄에 끝난다.. 짝수홀수개수 내답안 2차 답안 2022. 12. 2.
막강한 클래스(Class) 2 클래스 속성 클래스이름.클래스변수로 사용 클래스에 속해있으며 모든 인스턴스에서 공유 인스턴스 전체가 사용해야 하는 값을 저장할 때 사용 인스턴스 속성 생성자(__init__)에서 self.속성에 할당했던 변수들은 모두 인스턴스 속성에 해당 인스턴스별로 별개. 서로 영향을 받지 않음 각 인스턴스가 값을 따로 저장해야 할 때 사용 각각의 def 들은 모두 인스턴스 속성 정적메소드 속성 클래스 메서드는 정적 메서드처럼 인스턴스 없이 호출가능. # 정적메소드 쓰기 전 class Person(): def __init__(self): # self 필요 self.hello='hi' # self 필요 print(self.hello) # self 필요 time.sleep(3) def greeting(self,name,a.. 2022. 12. 2.
Pandas, NumPy Dictionary : {키 : 값} 키, 값 둘 다 정보를 바꿀 수는 있지만 인덱스를 먹일 수 없음. Series : {인덱스 : 값} 둘 다 변경 가능하고, 인덱스가 키값처럼 정보를 담을 수도 있지만, 정리가 깔끔하지 않음 DataFrame : index 와 column으로 그 제목을 따로하며 수정가능하고, 그 안에 값들을 담음. 정리된 데이터셋 정보 확인 df = pd. read_csv(csv_path or file name) : 불러오기 df.columns : column 이름들이 list로 나옴 df.dtypes : 데이터 개별 값의 자료 형태 (int, str, object 등등),카테고리가 아닌 데이터는 꼭 해보기 df.info() : 자료형과 null 있는지 보여줌 df.describe().. 2022. 12. 1.
기본수학, numpy 기본 수학 import numpy as np import statistics as st a = [9, 3, 5, 2, 7, 2, 6, 6, 7, 7, 8, 8, 10] 합계 : fsum(a) 평균 : np.mean(a) / st.mean(a) / np.average(a) ; weight 줄 수 있는 가중평균 중앙값: np.median(a) / st.median(a) n이 홀수 : n/2을 반올림한 순서의 값 n이 짝수 : n/2번째 값과 ((n/2) + 1) 번째 값 배열이 짝수일 때, 낮은 중앙값 : median_low , 높은 중앙값 : median_high 최빈값 : np.bincount(a).argmax() / st.mode(a) 가장 빈도수가 많은 값. 가장 많이 나오는 값 : 7 np.binc.. 2022. 12. 1.
게임 캐릭터 클래스 만들기 표준 입력으로 게임 캐릭터 능력치(체력, 마나, AP)가 입력됩니다. 다음 소스 코드에서 애니(Annie) 클래스를 작성하여 티버(tibbers) 스킬의 피해량이 출력되게 만드세요. 티버의 피해량은 AP * 0.65 + 400이며 AP(Ability Power, 주문력)는 마법 능력치를 뜻합니다. 예입력 511.68 334.0 298 결과 티버: 피해량 593.7 헷갈렸던 부분들 1. __init__에서 attribute 준 인자들을 다른 function에서 또 줘야하는가. 예를 들어 def tibbers(self) 후, 이 함수에서 사용될 ability_power에 대해 또 self.ability_power=self.ability_power라고 해줘야 하나.. 했는데 결과적으로 안해줘도 된다. 2. 이.. 2022. 11. 30.
막강한 클래스 (Class) Everything in Python is an object, and almost everything has attributes and methods. 파이썬(Python)에서 모든 것은 객체(object)다. 그래서 거의 모두가 속성(attributes) 과 메서드(methods) 를 갖는다. 객체(Object) 안에서, 변수(Variable)를 만들면 속성(Attribute; State)이 되고, mycat = 'kola' 함수(Function)를 만들면 메서드가(Method; Behavior) 된다. def genius(self, speed, lr): , mycat 변수는 단지 이름이다. 단지 = 이라는 연산자를 이용해 값을 할당받은 객체를 불러주는 second name이다. A shallow co.. 2022. 11. 30.
Unit 31. 재귀호출 (recursive call) 재귀호출 함수 나 자신 안에 나를 또 호출하는 방법. 그럼 또 함수가 돌아가고 또 그 함수가 돌아가고 무한 loop. 다행히 파이썬은 1000번까지 반복이 가능해서 멈추기는 하지만, 꼭 빠져나오는 코드를 작성해줘야 함. 언제쓸까? 어떤 연산을 한 그 값으로 또 같은 연산을 해야할 때가 있다. 그 때 사용하면 된다. 어떻게쓸까? 먼저 제일 마지막에 빠져나올때의 조건문부터 작성하고, 그 뒤에 변환식을 넣어주자. n (차수) 의 변화가 어떻게 되는지를 잘 살필 것. def hello(count): if count == 0: # 종료 조건을 만듦. count가 0이면 다시 hello 함수를 호출하지 않고 끝냄 return print('Hello, world!', count) count -= 1 # count를 .. 2022. 11. 29.
Unit 29. 함수의 return 참고 | 매개변수는 없고 반환값만 있는 함수 함수를 만들 때 매개변수는 없지만 값만 반환하는 함수를 만들 수도 있습니다. 다음은 매개변수 없이 1만 반환합니다. >>> def one(): ... return 1 ... >>> x = one() >>> x 1 참고 | return으로 함수 중간에서 빠져나오기 return은 값을 반환하는 기능뿐만 아니라 함수 중간에서 바로 빠져나오는 기능도 있습니다. 다음은 매개변수 a가 10이면 함수를 그냥 빠져나옵니다. >>> def not_ten(a): ... if a == 10: ... return ... print(a, '입니다.', sep='') ... >>> not_ten(5) 5입니다. >>> not_ten(10) >>> not_ten 함수에 5를 넣으면 pr.. 2022. 11. 29.
참고) zip( ) 함수 zip 여러개의 iterable 객체 (like. list, tuple, dic..) 을 객체로 받으면서, 각 객체가 담고 있는 원소를 차례로 접근할 수 있는 능력자 iterator. 원래는 이렇게 for문을 두 리스트에 돌리겠지만, >>> numbers = [1, 2, 3] >>> letters = ["A", "B", "C"] >>> for i in range(3): ... pair = (numbers[i], letters[i]) ... print(pair) ... (1, 'A') (2, 'B') (3, 'C') zip을 사용하면, >>> for i in range(3): ... pair = (numbers[i], letters[i]) 이렇게 두 줄이 >>> for pair in zip(numbers,.. 2022. 11. 29.
728x90