본문 바로가기

전체 글323

빅데이터 부트캠프 33일차 Hadoop 설치 전 세팅 (Java 설치, Name node&Data node 모두) - Hadoop은 Java로부터 파생되었기 때문에 Java 설치가 필수! - sudo add-apt-repository ppa:openjdk-r/ppa로 Java ppa APT 추가 - sudo apt-get install openjdk-8-jdk로 Java 8버전 설치 - sudo gedit ~/.bashrc 실행 후 맨 마지막 줄에 export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 export PATH=$PATH:$JAVA_HOME/bin export PATH 추가 후 저장 (Java PATH 설정) - source ~/.bashrc로 bashrc 다시 한번 저장 - Jav.. 2022. 8. 19.
빅데이터 부트캠프 32일차 ※ vi는 GUI가 아닌 환경에서 문서를 편집할 수 있는 유일한 방법 vi 종료 명령키 - :q = 작업한 것이 없을 때 종료 - :q! = 작업한 것을 저장하지 않고 종료 - :w = 저장 - :wq = 수정사항 저장 후 종료 - ZZ = 수정사항 저장 후 종료 vi 입력 모드 전환 명령키 - 명령키는 기본적으로 Esc를 누른 후 입력해야함 - i = 현재 커서 위치에 입력, a = 현재 커서 다음 위치에 입력 - o = 다음 행에 입력(Enter키와 유사), O = 이전 행에 입력(o의 정반대), - I(대문자 i) = 해당 행의 첫번째 칸으로 이동, A = 해당 행의 마지막 칸으로 이동 vi 커서 이동 명령키 - j = 아랫행로 이동, k = 윗행로 이동, h = 왼쪽으로 이동, l(소문자 L) =.. 2022. 8. 18.
Stack, Queue, deque Stack - 후입선출의 LIFO(Last In First Out) 구조 - 책이 쌓여있을때 맨 위에 책을 추가로 쌓는 것 = push(=append) - 책을 위에서 내려다 보았을 때 가장 위에 있는 책을 확인하는 것 = peek - 맨 위에 있는 책을 가져가는 것 = pop - Python은 리스트 스택으로 사용 가능하도록 구현됨 -스택의 대표적인 활용은 인터넷 창 이전 페이지, 다음 페이지 class Stack(li): push = li.append def peek(self): return self[:-1] s = Stack() s.push(1) s.push(2) s.push(3) print('my stack is : ', s) # my stack is : [1, 2, 3] print('제거 :',.. 2022. 8. 17.
빅데이터 부트캠프 31일차 Linux 터미널 입력 기본 - 명령어 입력 후 무조건 띄어쓰기 필수! - 디렉터리명이나 파일명을 입력할 때 tab 키를 사용하면 자동완성이 되어 편리 Linux 터미널 단축키 - ctrl + alt + t = 터미널 실행 - ctrl + shift + t = 터미널내에서 새로운 탭으로 터미널 실행 - ctrl + shift + n = 터미널내에서 새로운 창으로 터미널 실행 - ctrl + shift + q = 터미널 종료 - ctrl + shift + f = 터미널내에서 문자열 검색 - ctrl + shift + c = 복사 - ctrl + shift + v = 붙여넣기 - ctrl + insert = 복사하기 - shift + insert = 붙여넣기 - ctrl + l(소문자 L) = 화면 clea.. 2022. 8. 17.
빅데이터 부트캠프 30일차 - 빅데이터 정의(3V) = Volume(양), Velocity(속도), Variety(다양성) - 실시간 = 리얼타임, 일괄처리 = 배치처리 ※ Batch = 컴퓨터의 데이터 처리 형태의 하나로 처리해야 할 데이터를 일정 기간 또는 일정량 정리하여 처리하는 것 - XML(extensible markup language) = 데이터를 표현하고 교환하기 위해 만든 프로그램 (반정형 데이터) - HTML(Hypertext Markup Language) = 홈페이지 프로그래밍 언어 - 대부분의 프로그래밍 언어는 C(절차적 언어) 기반 - 프로그래밍 언어 유행 = C -> C++ (객체지향이 추가) -> Java -> Python (C++ 기반) - int(4byte=32bit) = -2^16 ~ 2^16-1,.. 2022. 8. 16.
빅데이터 부트캠프 28&29일차 RNN(Recurrent Neural Network, 순환 신경망) - 순서가 있는 데이터를 처리하기 위한 Neural Network - 순서가 있는 데이터는 발생 순서가 중요한 데이터 - 은닉층 활성화 함수로 주로 tanh 사용 (값 = -1~1 사이, 기울기 값 = 0~1 사이) (유사한 sigmoid는 값 = 0~1 사이, 기울기 값 = 0~0.25 사이) - 데이터의 길이가 길어질수록 앞쪽의 데이터 내용이 뒤쪽으로 전달되지 않아 학습 능력이 크게 감소하는 '장기 의존성' 문제가 존재 ex) 입력한 데이터 x와 참고할 데이터 h 간의 거리가 멀면 그 만큼 까먹을 가능성이 높음 - tf.keras.layers.SimpleRNN(units=, return_sequences=출력 시퀀스의 마지막 출력을 .. 2022. 8. 11.
빅데이터 부트캠프 26&27일차 CNN(Convertion Neural Network, 합성곱 신경망) - 입력 데이터의 전체에 가중치를 적용하는 것이 아니라 일부에 가중치를 곱하여 계산 - Convertion(합성곱) = 설정한 가중치의 개수에 따라 한 칸씩 아래로 이동하면서 출력을 만드는 것 - CNN에서는 뉴런을 필터 혹은 커널이라 부름 - Feature map(특성 맵) = 합성곱 계산을 통해 얻은 출력 Padding - 입력 배열의 주위를 가상의 원소로 채우는 것 (주로 0으로) ex) (4,4) 크기의 입력에 1번 패딩 -> (6,6) 크기 (6 = 4+1x2) Pooling - 특성 맵의 가로세로 크기를 줄이는 것 (특성 맵 자체의 개수는 변함X) - Max Pooling = 필터를 적용한 부분의 최대값을 출력 - Aver.. 2022. 8. 10.
빅데이터 부트캠프 25일차 딥러닝(Deep Learning) - 머신러닝의 대표적인 학습법 - 여러 층을 거쳐 점점 추상화 단계로 접어드는 알고리즘 형태 - 패턴을 찾기 위해선, 패턴을 견고하게 만드는 많은 훈련데이터가 필요 ReLU 함수 - ReLU(x) = max(0, x) - 0보다 작은 값을 0으로 강제 - 딥러닝에서 가장 많이 사용됨 - 미분 값이 일정(0 or 1)하여 학습이 효율적 - 구현이 단순하여 매우 빠른 연산 Tensorflow - Google이 2015년에 공개한 머신러닝 오픈소스 Framework - ML 모델을 개발하고 학습시키는 데 도움이 되는 핵심 오픈소스 라이브러리 - TensorFlow는 graph로 연산(computation)을 나타내는 프로그래밍 시스템 - 데이터 = Tensorflow, 데이터.. 2022. 8. 8.
빅데이터 부트캠프 23&24일차 앙상블 - 이미 만든 여러 분류기를 연결하여 더 좋은 분류기를 생성하는 방법 Simple Voting - Hard Voting : 다수의 분류기들 간에 다수결로 최종 클래스를 선정하는 방법 - Soft Voting : 다수의 분류기들이 각각 분류한 확률값들을 기반으로 평균 확률값을 내어서 더 높은 확률값을 갖는 클래스로 최종 선정하는 방법 VotingClassifier - 개별 모델들을 하나의 분류기 객체에 담아 앙상블 학습을 진행 - Regressor 없이 모두 Classifier만 담아져야함 (Regressor 앙상블은 VotingRegressor) - 데이터셋 분리(train_test_split) 전에 실행해야함 - from sklearn.ensemble import VotingClassifier .. 2022. 8. 5.
빅데이터 부트캠프 22일차 Decision Tree - 데이터에 있는 규칙을 학습을 통해 자동으로 찾아 tree 기반의 분류 규칙 적용 - 트리를 어떻게 분할할 것인가가 중요 - tree 깊이가 깊어질수록 결정 tree의 예측 성능이 저하될 수도 있음 - 가급적 최대한 균일한 데이터 세트를 구성할 수 있도록 분할할 수 있게 해야 함 ※ 그래프 구조 - 루트 노드 : 최상위 node - 규칙 노드(Decision Tree) = 규칙 조건 - 리프 노드 = 결정된 클래스값 (맨 마지막) ※ graphic에 표현된 문구들 - gini : value=[]로 주어진 데이터 분포의 지니계수 - samples : 한 규칙에 해당하는 데이터 건수 - value = [] : 클래스 값 기반의 데이터 건수 ※ 지니(gini) 계수 - 경제학에서 불.. 2022. 8. 4.
빅데이터 부트캠프 21일차 StandardScaler (표준화) - 데이터의 특징 스케일링(feature scaling)을 위한 방법 중 하나로 평균이 0, 분산이 1인 값으로 변환 - 중심이 원점에서 떨어져있는 그래프의 중심을 원점으로 옮기는 것 - from sklearn.preprocessing import StandardScaler scaler = StandardScaler() scaler.fit(iris_df) scale = scaler.transform(iris_df) iris_scaled_df = pd.DataFrame(data=scale, columns=iris.feature_names) iris_scaled_df - fit() = 평균과 표준편차 계산 - transform() = 표준화 - fit_transform(.. 2022. 8. 3.
빅데이터 부트캠프 19&20일차 머신러닝의 정의 인공지능의 한 분야로 컴퓨터 스스로 방대한 양의 데이터를 분석하여 미래 혹은 결과를 예측하는 것 머신러닝의 종류 지도학습(Supervised Learning) - 정답이 있는 데이터를 바탕으로 데이터 분류 및 올바른 결과 예측 비지도학습(Unsupervised Learning) - 정답이 없는 데이터를 바탕으로 데이터의 유의미한 패턴 혹은 구조 발견 강화학습(Reinforcement Learning) - 행동에 대한 보상을 통해 누적 보상을 최대화 하는 의사결정 회귀(Regression) - 주어진 연속적인 데이터로부터 변수들 간의 상관관계를 찾아 결과를 예측하는 것 (데이터의 경향성을 하나의 선을 그어서 표현하는 것) - 예측 결과가 연속형 데이터(숫자)일 때 주로 사용 분석(Class.. 2022. 8. 1.
강남구청, 강서구청 따릉이 대여 현황 분석 미니 프로젝트 프로젝트 주제 2021년 따릉이 월별 대여이력 데이터를 바탕으로 ① 서울 시민들의 '강남구청','강서구청' 대여소에서의 월별/시간대별 따릉이 대여 성향 ② '강남구청', '강서구청'에서 따릉이를 대여한 후 가장 많이 반납하는 대여소 top 10 파악 후 지도 및 그래프 등으로 시각화 (데이터 출처 = http://data.seoul.go.kr/dataList/OA-15182/F/1/datasetView.do#, 서울시 열린 데이터 광장) 맡은 역할 1. 7월 및 8월 데이터에서 불필요한 columns 제거 후 대여 대여소가 '강남구청', '강서구청'인 데이터만 추출해 두 데이터(7월,8월)를 통합한 뒤 csv파일로 저장후 팀원에게 전달 https://colab.research.google.com/driv.. 2022. 7. 27.
빅데이터 부트캠프 18일차 folium - 파이썬 지도 시각화 라이브러리 (import folium) - 기본적으로 지도를 생성하며 추가적으로 마커 추가 및 원으로 범위 표기 등을 가능케 함 - folium.Map(location=[위도,경도], zoom_start= 줌설정(1~18), tiles='지도 스타일 설정',width,heigth) -> 지정한 위도와 경도를 기준으로 지도 출력 (우리나라 도시를 기준으로 줌설정은 16~18 정도가 적당) - folium.메서드.add_to(map)를 하면 이미 작성한 map에 해당 메서드로 명령한 요소들을 추가시킬 수 있음 - folium.Marker([위도,경도],popup,tooltip) -> 지정한 위치에 마커를 표시하고 popup으로 마커 클릭시 나올 문구 설정, tooltip으.. 2022. 7. 27.
빅데이터 푸트캠프 17일차 crawling, parsing, scraping - 크롤링(crawling) = 지정한 링크의 데이터를 다 긁어오는 것 - 파싱(parsing) = 문자열데이터를 분석 및 분해하여 목적한 패턴에 맞게 문자열의 구조를 결정하는 것 - 스크래핑(scraping) = 파싱한 데이터에서 필요한 데이터만 가져오는 것 - requests 모듈을 통해 실행(import requests) - requests.get('주소')로 원하는 데이터를 불러옴 - response = requsets.get('주소') response.text로 텍스트 데이터 크롤링 response.content로 바이너리 데이터 크롤링 BeautifulSoup - 받아온 html(크롤링)을 파싱하기 위해 사용하는 패키지 import bs4 bs.. 2022. 7. 26.