본문 바로가기

분류 전체보기

plotly 연습 # 참고 데이터 import plotly.express as px data_canada = px.data.gapminder().query("country == 'Canada'") # 참고할 색상 표 colorscales: ['aggrnyl', 'agsunset', 'algae', 'amp', 'armyrose', 'balance', 'blackbody', 'bluered', 'blues', 'blugrn', 'bluyl', 'brbg', 'brwnyl', 'bugn', 'bupu', 'burg', 'burgyl', 'cividis', 'curl', 'darkmint', 'deep', 'delta', 'dense', 'earth', 'edge', 'electric', 'emrld', 'fall', 'gey.. 더보기
분류 (4) - LightGBM LightGBM XGBoost와 함께 Boosting 계열 알고리즘에서 가장 각광받고 있음. XGBoost는 학습 시간이 오래 걸리는 것이 단점 LightGBM의 가장 큰 장점: XGBoost보다 학습에 걸리는 시간이 훨씬 적다 + 메모리 사용량이 상대적으로 적다 예측 성능은 비슷하면서 기능은 LightGBM이 더 많음. LightGBM은 일반 GBM 계열의 트리 분할 방법(보통 Level Wise)과 다르게 리프 중심 트리 분할(Leaf Wise) 방식을 사용함 Level Wise : 최대한 균형 잡힌 트리를 유지하면서 분할하기 때문에 트리의 깊이가 최소화 될 수 있음. 균형잡힌 트리는 오버피팅에 보다 더 강함 균형을 맞추는 시간이 오래 걸림 Leaf Wise : 트리의 균형을 맞추지 않고, 최대 손실.. 더보기
분류 (3) - Xgboost XGBoost(eXtra Gradient Boost) tree 기반 앙상블 학습에서 가장 각광받고 있음. Kaggle Contest에서 다수 사용됨 GBM에 기반하고 있지만, GBM의 단점인 느린 수행시간, 과적합 규제(Regularization) 부재 를 해결한 모델 In [1]: # XGBoost 버전 확인 import xgboost print(xgboost.__version__) 1.1.1 파이썬 Native XGBoost 적용 – 위스콘신 Breast Cancer 데이터 셋 In [1]: import xgboost as xgb from xgboost import plot_importance import pandas as pd import numpy as np from sklearn.datasets.. 더보기
분류 (2) - 앙상블 학습 1. 앙상블 학습 개요 앙상블 학습을 통한 분류 : 여러개의 분류기를 생성하고 그 예측을 결합함으로써 보다 정확한 최종 예측을 도출함. 앙상블 학습의 목표 : 다양한 분류 기의 예측 결과를 결합함으로써 단일 분류기보다 신뢰성이 높은 예측값을 얻는 것. Voting 유형 : Hard Voting / Soft Voting 하드보팅 다수결의 원칙과 비슷함. 예측 결괏값들 중 다수의 분류기가 결정한 예측값을 최종 보팅 결괏값으로 선정함 소프트 보팅 (선호됨) 평균 분류기들의 레이블 값 결정 확률을 모두 더하고 이를 평균해서 이들 중 가장 확률이 높은 레이블 값을 최종 보팅 결괏값으로 선정함 In [1]: import pandas as pd from sklearn.ensemble import VotingClass.. 더보기
분류 (1) - Decision Tree 1. 분류의 개요 지도학습 : label(명시적인 정답)이 있는 데이터가 주어진 상태에서 학습하는 머신러닝 방식 분류 : 학습데이터로 주어진 데이터의 feature와 label값을 머신러닝 알고리즘으로 학습해 모델을 생성하고, 생성된 모델에 새로운 데이터가 주어질 때 미지의 레이블값을 예측함 즉, 기존 데이터가 어떤 label에 속하는지 패턴을 알고리즘으로 인지 -> 새롭게 관측된 데이터에 대한 label을 판별 분류의 다양한 알고리즘 베이즈(Bayes)통계와 생성모델에 기반한 나이브 베이즈(Naive Bayes) 독립변수와 종속변수의 선형관계성에 기반한 로지스틱 회귀(Logistic Regression) 데이터 균일도에 따른 규칙 기반의 결정 트리(Decision Tree) 개별 클래스 간의 최대 분류.. 더보기
머신러닝 성능 평가 지표 (2) - 정밀도,재현율,F1 score, ROC curve 오차행렬, Confusion Matrix 이진분류에서 활용, 혼동행렬이라고도 해석되며 학습된 분류 모델이 예측을 수행하면서 얼마나 헷갈리고 있는지를 함께 보여주는 지표임. 이진 분류의 예측 오류가 얼마인지 + 어떤 유형의 오류가 발생하는지 함께 확인 가능 TN, TP, FP, FN은 예측 클래스와 실제 클래스의 Positive 결정 값(값1)과 Negative 결정값 (값 0)의 결합에 따라 결정됨 앞의 값 : 예측 클래스와 실제 클래스가 같은 가 뒤의 값 : 예측값이 무엇인가 뒤에서 부터 읽으면 쉬움 TN : 예측값을 Negative 값 0으로 예측했고 실제 값 역시 Negative 값 0 TP : 예측값을 Positive 값 1으로 예측했고 실제 값은 Negative 값 0 FN : 예측값을 Nega.. 더보기
머신러닝 성능 평가 지표 (1) - 정확도(accuracy_score) Machine Learning Evaluation Evaluation Metric (성능 평가 지표) : 모델의 타입(분류 / 회귀)에 따라 나뉨 회귀 : 대부분 실제값과 예측값의 오차 평균값에 기반함 분류 : 실제 결과 데이터와 예측 결과 데이터의 차이만으로 판단하지는 않음. 특히, 이진 분류(0 or 1로 판단)에서는 accuracy score보다는 다른 성능 평가 지표를 함께 사용하는 것이 선호됨. 분류의 성능 평가 지표 정확도(Accuracy) : 불균형한 label data set에서 사용 X 오차행렬(confusion Matrix) : 오차의 정도, 종류를 알 수 있음 정밀도(Precision) : (선호됨) 재현율(Recall) : (선호됨) F1 스코어 ROC AUC 분류는 label cl.. 더보기
Prognostics and Health Management (PHM)이란? PHM(Prognostics and Health Management) 1. 정의 - 운용유지단계에서 센서를 이용하여 장비나 기계시스템의 상태를 실시간으로 모니터링하고, 고장 징후를 포착하는 진단(Diagnostics)과 잔여유효수명(RUL)을 예지(Prognostics)하는 효과적인 건전성 관리 기술 - 분야: PHM은 기계, 항공, 발전소 등 고장 발생 시 손실이 매우 큰 설비나 시스템에 주로 적용 - (1) 상태 정보를 수집하여 시스템의 이상상황을 감지하고 - (2) 분석 및 예지진단을 통하여 고장 시점을 사전에 예측하여 - (3) 설비 운영과 관리를 최적화를 이루는 기술 2. PHM 5대 구성 요소 (1) 신뢰도: 공정(process)과 자산(asset)이 건전한 상태를 유지하도록 이상징후를 사전에.. 더보기
데이터 전처리 기본 (2) - feature scailing 피처 스케일링과 정규화 feature scaling : 서로 다른 변수의 값 범위를 일정한 수준으로 맞추는 작업 대표적인 방법 : 표준화(Standardization) / 정규화(Normalization) 표준화(Standardization) : data의 feature 각각을 평균 = 0, 분산 = 1인 가우시간 정규 분포를 가진 값으로 변환하는 것 $$ Xi(new) = \frac {Xi-mean(X)} {stdev(x)} $$ X : 표준화를 통해 변환될 feature Xi : feature X의 i번째 데이터 Xi(new) : feature X의 i번째 데이터를 표준화한 것 mean(X) : feature X의 평균 stdev(X) : feature X의 표준편차 정규화(Normalization).. 더보기
데이터 전처리 기본 (1) - data encoding 데이터 전처리(Data Preprocessing) ML AL이 data에 기반하므로, 데이터를 어떻게 처리하느냐에 따라 결과가 달라질 수 있음. sklearn의 ML AL을 적용하기 전 반드시 해야할 전처리 결손값 처리. NaN, Null값은 허용되지 않는다. feature값 중 Null 값이 얼마 되지 않음 -> 평균값 등으로 대체 feature값 중 Null 값이 대부분 -> 해당 feature를 drop하는 것이 좋음 문자열 sklearn의 ML AL은 문자열값을 입력값으로 허용하지 않음 모든 문자열 값은 인코딩하여 숫자형으로 변환해야 함 문자열 피처 : 카테고리형 피처 / 텍스트형 피처(피처 벡터화로 벡터화 수행하거나 불필요한 경우 삭제) ex) 주민번호, 단순 문자열 : 인코딩 하지 않고 삭제하.. 더보기
Pandas (5) Method Chaining DataFrame method chain으로 묶기 Series와 달리 DataFrame에 대한 method chaining은 각 단계에서 반환되는 객체 유형을 정확히 숙지해야 함 In [66]: movie = pd.read_csv(r'C:\Users\user\jupyterpractice\EDA\Pandas-Cookbook-master\data\movie.csv') movie.isnull().head() Out[66]: color director_name num_critic_for_reviews duration director_facebook_likes actor_3_facebook_likes actor_2_name actor_1_facebook_likes gross genres actor_1_name m.. 더보기
Pandas (4) Dataframe 연산 전체 DataFrame에 대한 연산 In [31]: pd.options.display.max_rows = 8 movie = pd.read_csv(r'C:\Users\user\jupyterpractice\EDA\Pandas-Cookbook-master\data\movie.csv') movie.shape Out[31]: (4916, 28) In [32]: movie.size Out[32]: 137648 In [33]: # numpy에서 ndim은 차원의 수를 반환함 movie.ndim Out[33]: 2 In [34]: # len은 row의 수를 반환함 len(movie) Out[34]: 4916 In [35]: # count method로 각 열의 누락값을 제외한 실제 값의 개수를 알아낸다. movie.c.. 더보기
Pandas (3) Column 네이밍 In [3]: import pandas as pd import numpy as np pd.options.display.max_columns = 40 movie = pd.read_csv(r'C:\Users\user\jupyterpractice\EDA\Pandas-Cookbook-master\data\movie.csv') 열 이름 일목요연하게 정렬하기 가이드 라인 각 열을 연속 / 불연속에 따라 분류 연속 / 불연속 내에서 공통적인 열은 그룹으로 만들기 그룹 내 가장 중요한 열이 가장 먼저 나오게 하고, 범주형 열을 연속형보다 먼저 나오게 하기 추가로 볼 논문 : Tidy Data (http://bit.ly/2v1hvH5) In [25]: movie = pd.read_csv(r'C:\Users\user\ju.. 더보기
Pandas (2) Column 조작 Chapter 2: DataFrame 필수 연산 In [3]: import pandas as pd import numpy as np pd.options.display.max_columns = 40 DataFrame에서 복수의 열 선택 방법 1. DataFrame[[사용할 컬럼들]] 방법 2. 같은 방법인데 이중 인덱스 안에 길게 표기하는 게 싫을 때.. -> 아래에 따로 추가된 사항 방법이 이거임 cols = [사용할 컬럼들] DataFrame[cols] In [4]: movie = pd.read_csv(r'C:\Users\user\jupyterpractice\EDA\Pandas-Cookbook-master\data\movie.csv') movie_actor_director = movie[['actor_.. 더보기
Pandas (1) 데이터 정보 확인 In [1]: import pandas as pd import numpy as np import matplotlib.pyplot as plt %matplotlib inline In [2]: movie = pd.read_csv(r'C:\Users\user\jupyterpractice\EDA\Pandas-Cookbook-master\data\movie.csv') In [3]: movie.head(3) Out[3]: color director_name num_critic_for_reviews duration director_facebook_likes actor_3_facebook_likes actor_2_name actor_1_facebook_likes gross genres ... num_user_for_r.. 더보기
웹 프로그래밍 이해하기 1. 웹 프로그래밍이란? 간단히는 HTTP(S) 프로토콜로 통신하는 클라이언트와 서버를 개발하는 것 (보통은 웹 서버를 개발하는 경우가 많기에 Django와 같은 웹 프레임워크로 웹 서버 개발하는 것을 떠올린다.) 예를 들면, 웹 브라우저를 실행해 네이버에 접속하는 것이 바로 웹 프로그램이 동작하는 것이다. 이 경우 [웹 브라우저 = 웹 클라이언트, 네이버 서버 = 웹 서버] 이다. 대표적인 웹 브라우저는 Chrome, Internet Explorer, Firefox 등이 있다. 2. HTTP 프로토콜 2.1 HTTP 프로토콜의 정의 HTTP (Hypertext Transfer Protocol) : 웹 서버와 웹 클라이언트 사이에서 데이터를 주고받기 위해 사용하는 통신 방식 HTTP란 이름대로라면 hyp.. 더보기
sklearn의 model selction module (데이터셋 분리 및 교차검증) sklearn의 Model selection module 살펴보기 이번 시간에는 데이터를 학습 / 검증 / 테스트 용으로 분리하기 위한 메소드를 살펴본다. 그런 다음 교차 검증에 관한 4가지 방법을 순차적으로 학습한다. sklearn의 model_selection module에서 제공하는 함수/클래스 train data/test data의 분리 (train_test_split()) 교차 검증 분할 및 평가(KFold, Stratified_KFold) Estimator의 하이퍼 파라미터를 튜닝 In [10]: # train/test를 분할하지 않았을 때의 문제 : 모의고사만 똑같은 거 2번 보는 셈 from sklearn.datasets import load_iris from sklearn.tree imp.. 더보기
sklearn 기반 프레임워크 살펴보기 Iris dataset을 통해 알아보는 Scikit-Learn 기반 프레임워크 iris 품종 예측이란? iris data set로 붓꽃의 품종을 분류하는 것 꽃잎의 길이, 너비 / 꽃받침의 길이, 너비 총 4개의 feature Classification : 대표적인 지도학습(Supervised Learning) 지도학습 학습을 위한 feature + 분류결정값인 Lable = 학습 -> 별도의 테스트 데이터세트에서 미지의 레이블 예측 정확한 정답이 주어진 데이터를 먼저 학습한 후, 미지의 정답을 예측하는 방식 training data set(학습을 위한 데이터 세트) test data set(머신러닝 모델의 예측 성능을 평가하기 위한 별도의 데이터 세트) scikit-learn package내의 modu.. 더보기
Plotly-Dash Environmental Testing In [1]: import plotly.express as px from jupyter_dash import JupyterDash import dash_core_components as dcc import dash_html_components as html from dash.dependencies import Input, Output # Load Data df = px.data.tips() # Build App app = JupyterDash(__name__) app.layout = html.Div([ html.H1("JupyterDash Demo"), dcc.Graph(id='graph'), html.Label([ "colorscale", dcc.Dropdown( id='colorscale-dropdo.. 더보기
[Python] Linked List (2) Problem 14. Merge Two Sorted Lists https://leetcode.com/problems/merge-two-sorted-lists/ Solution 1. 재귀 구조 def merge_two_lists(self, l1: ListNode, l2: ListNode) -> ListNode: if (not l1) or (l2 and l1.val > l2.val): l1,l2 = l2,l1 if l1: l1.next = self.mergeTwoLists(l1.next, l2) return l1 Problem 15. Reverse Linked Lists https://leetcode.com/problems/reverse-linked-list/ Solution 1. 재귀 구조 def reve.. 더보기