전체 글 378

머신러닝 로지스틱 회귀

지금까지는 에측 모델이다, 로지스틱 회귀 같은 경우도 예측선을 그어주기는 하지만 데이터가 존재하는 예측선을 그어주고 서로 분류를 해주는 것이다. 예를들어 해당 범위에 있는 것을 참 거짓을 판별해준다. employee_id : 임의의 아이디 department : 부서 region : 지역 education : 학력 gender : 성별 recruitment_channel : 어떤 방식으로 채용도히었는지 no_of_trainings : 트레이닝 받은 횟수 age : 나이 previous_year_rating : 작년 고과 점수 length_of_service : 근속 년수 awards_won : 수상경력 avg_training_score : 고과 평균점수 is_promoted : 승진 여부 도큐먼트 독립변..

Python 데이터분석 크롤링(벅스뮤직, 멜론, 지니 차트)

크롤링(Crawling): 인터넷의 데이터를 활용하기 위해 정보들을 분석하고 활용할 수 있게 수집하는 행위 스크레이핑(Scraping): 크롤링 + 데이터를 추출해서 가공하는 최종 목표 4. 멜론 차트 robots.txt : 웹사이트에 웹 크롤러같은 로봇들의 접근을 제어하기 위한 규약. 권고안이라 꼭 지킬 의무는 없음 5. 지니 차트 200

그래프 용어, 종류와 트리와의 차이점

1. 그래프(Graph) 실제 세계의 현상이나 사물의 정점(Vertex) 또는 노드(Node)와 간선(Edge)으로 표현하기 위해 사 2. 그래프 관련 용어 노드(node) : 위치, 정점이라고 함 간선(edge) : 위치간의 관계를 표현한 선으로 노드를 연결한 선(link 또는 Branch라고도 함) 인접 정점(adjacent vertex) : 간선으로 직접 연결된 정점(또는 노드) 3. 그래프의 종류 3-1. 무방향 그래프 방향이 없는 그래프 간선을 통해, 노드를 양뱡향으로 갈 수 있음 3-2. 방향 그래프 간선에 방향이 있는 그래프 보통 노드 A, B가 A -> B로 가는 간선으로 연결되어 있는 경우 로 표기(와 는 다름 3-3. 가중치 그래프 간선에 비용 또는 가중치가 할당된 그래프 3-4. 연결..

Python 자료구조&알고리즘 - 순차 탐색, 이진 탐색

1. 순차 탐색(Sequential Search) 탐색은 여러 데이터 중에서 원하는 데이터를 찾아내는 것을 의미 데이터가 담겨있는 리스트를 앞에서부터 하나씩 비교해서 원하는 데이터를 찾는 방법 1. 이진 탐색(Binary Search) 탐색할 자료를 둘로 나누어 해당 데이터가 있을만한 곳을 탐색하는 방 1-1. 이진 탐색과 순차 탐색의 비교 2. 분할 정복 알고리즘과 이진 탐색 분할 정복 알고리즘 divide : 문제를 하나 또는 둘 이상으로 나눔 conquer : 나눠진 문제가 충분히 작고 해결이 가능하면 해결하고, 그렇지 않으면 다시 나눔 이진 탐색 divide : 리스트를 두 개의 서브 리스트로 나눔 conquer : 검색할 숫자 > 증가값 : 뒷 부분의 서브 리스트에서 검색힐 숫자를 찾음 검색할 ..

Python 자료구조&알고리즘 - 분할 정복

1. 분할 정복(Division Conquer) 문제를 나눌 수 없을 떄까지 나누어서 각각을 풀면서 다시 병합하여 문제의 답을 얻는 알고리즘 하향식 접근방법으로 상위의 해당을 구하기 위해 아래로 내려가면서 하위의 해답을 구하는 방식(재귀함구로 구현) 문제를 잘게 쪼갤때 부분 문제는 서로 중복되지 않음 Memorization 기법을 사용하지 않음 2. 대표적인 분할 정복 알고리즘 : 퀵 정렬(quick sort 정렬 알고리즘의 꽃(고급 알고리즘) 기준점(pivot)을 정해서 기준점보다 작은 데이터는 왼쪽, 큰 데이터는 오른쪽으로 모으는 함수를 작성 각 왼쪽, 오른쪽은 재귀용법으로 사용해 다시 동일 함수로 호출하여 위 작업을 반복함 2-1. 퀵 정렬 알고리즘 구현 리스트 개수가 1개면 해당 리스트를 리턴 리..

Python 자료구조&알고리즘 - 동적 계획법, 백준 11726번

1. 동적 계획법(Dynamic Programming) 입력 크기가 작은 부분 문제들을 해결한 후, 해당 부분의 값을 활용해서 보다 큰 크기의 부분 문제를 해결함 상향식 접근법(최하위 해답을 구한 후 해당 결과를 이용해서 상위 문제를 풀어가는 방식) 프로그램 실행 시 이전의 계산한 값을 저장하여 다시 계산하지 않도록 전체 실행 속도를 빠르게 하는 기술(메모이제이션 : Memoization)을 사용 문제를 잘게 쪼갤 때, 부분 문제는 중복되기 때문에 재활용 2. 동적 계획법 알고리즘 피보나치 수열 n을 입력받아서 아래와 같이 계산 피보나치 수열 함수흫 '피보나치' fibonacci(0) : 0 fibonacci(1) : 1 fibonacci(2) : 1 fibonacci(3) : 2 fibonacci(4)..

Python 자료구조 & 알고리즘 - 재귀호출

1. 재귀호출(recusive call) 함수 안에서 동일한 함수를 호출하는 형태 여러 알고리즘, 고급 정렬 알고히즘 작성시 자주 사용됨 1-1. 재귀 호출 분석 2! = 1 * 2 3! = 1 * 2 * 3 4! = 1 * 2 * 3 * 4 = 3! * 4 1-2. 규칙 n! = n * (n-1)! 함수로 만들어 보자 함수(n)은 n=1 함수(n)은 n>1 이면 return n*함수(n-1) 1-3. 검증 2! 함수(2)이면 2>1 이므로 2 * 함수(1) 함수(1)은 1이므로 return 2 * 1, 답은 2 3! 함수(3)이면 3>1 이므로 3 * 함수(2) 함수(2)는 위 계산에 의해 2! 이므로 return 2*1 = 2 3 * 함수(2) = 3 * 2 = 3 * 2 * 1, 답은 6 4! 함수..

Python 자료구조 & 알고리즘 - 정렬(버블, 삽입, 선택)

1. 정렬 어떤 데이터들이 주어졌을 때 이를 정해진 순서대로 나열하는 것 프로그램 개발 시 빈번하게 정렬을 필요로 함 다양한 알고리즘이 고안되었으며 알고리즘 학습의 필수사항 2. 버블 정렬(bubble sort) 두 인접한 데이터를 비교해서 앞에있는 데이터가 뒤에 있는 데이터보다 크면 (작으면) 자리를 바꾸는 정렬 알고리즘 3. 삽입 정렬(insertion sort) 인덱스(key)앞에 있는 데이터(A)부터 비교해서 key가 더 작으면(크면) 데이터(A)값을 뒤 인덱스로 복사 key가 더 큰 데이터를 만날 때까지 반복 큰 데이터를 만난 위치 바로 뒤에 key를 이동 4. 선택 정렬(selection sort) 주어진 데이터 중, 최소값을 찾음 해당 최소값을 데이터 맨 앞에 위치한 값과 교체함 맨 앞의 위..

Python 자료구조 & 알고리즘 - 복잡도

1. 알고리즘 복잡도 표현방법 1-1. 알고리즘 복잡도 계산이 필요한 이유 하나의 문제를 푸는 알고리즘은 다양함 * 정수의 절대값을 구하는 방법 * 방법1 : 값이 음수인지 확인해서 0보다 작은 음수일 때 -1을 곱하기 * 방법2 : 정수값을 재곱한 값에 루트를 씌우기 디양한 알고리즘 중 어떤 알고리즘이 더 좋은지 분석하기 위해 복잡도를 정의하고 계산함 1-2. 알고리즘 복잡도 계산 항목 공간 복잡도 : 알고리즘이 사용하는 메모리 사이즈 시간 복잡도 : 알고리즘 실행 속도 1-3. 알고리즘 성능 표기법 오메가 표기법 알고리즘 최상의 실행 시간을 표기 세타 표기법 알고리즘 평균 실행시간을 표기 빅오 표기법 최악의 실행 시간을 표기 아무리 최악의 상황이라도 이 정도의 성능은 보장함을 의미 가장 많이 사용 1..

Python 데이터분석 - 형태소분석

1. 형태소 분석 자연 언어의 문장을 형태소라는 최소 단위로 분할하고 품사를 판별하는 작업 영어 형태소 분석은 형태소마다 띄어쓰기를 해서 문장을 구성하는 것이 기본임(분석이 쉬운편) 아시아 계열 언어분석은 많은 노력이 필요 한국어 형태소 분석 라이브러리: KoNLpy 2. KoNLPy에 다양한 형태소 분석 라이브러리 Hannanum: 한나눔. KAIST Semantic Web Research Center 개발 KKma: 꼬꼬마. 서울대학교 IDS(Intelligent Data Systems) 연구실 개발 Komoran: 코모란. Shineware에서 개발 Mecab: 메카브. 일본어용 형태소 분석기를 한국어로 사용할 수 있도록 수정 개발 OKT(Open Korean Text): 오픈소스 한국어 분석기. ..

Python 데이터분석 -쇼핑몰 고객주문 데이터 프로젝트

1. 고객 주문 데이터 파악하기 1-1. 데이터 셋 가상 온라인 리테일 사이트의 2010/12 ~ 2011/12까지의 주문 기록 데이터 약 500,000건의 데이터 ✔ import, 드라이브 연결 1-2. 컬럼 살펴보기 InvoiceNo: 주문번호 StockCode: 아이템 아이디 Description: 상품 설명 Quantity: 주문 수량 InvoiceDate: 주문 시간 UnitPrice: 상품 가격 CustomerID: 고객 아이디 Country: 고객 거주 지역(국가) 1-3. 날짜 타입 데이터 변환 문자열로 데이터를 로딩하는 것보다 datetime 타입으로 로딩하는 것이 날짜 분석 및 계산에 용이 1-4. 매출 구하기 2. 매출 데이터로부터 Insight 전체 매출의 약 82%가 UK에서 발생..

Python 데이터분석 matplotlib

1. matplotlib 파이썬 기반 시각화 라이브러리 파이썬 표준 시각화 도구라고 불릴만큼 다양한 기능을 제공 한글에 대한 지원이 완벽하지 않음 세부기능이 많아 사용성이 복잡함 pandas와 연동이 용이함 matplotlib 공식 홈페이지 https://matplotlib.org Matplotlib — Visualization with Python seaborn seaborn is a high level interface for drawing statistical graphics with Matplotlib. It aims to make visualization a central part of exploring and understanding complex datasets. statistical dat..

백준 Python 1302번 (베스트셀러)

문제 - 1302 김형택은 탑문고의 직원이다. 김형택은 계산대에서 계산을 하는 직원이다. 김형택은 그날 근무가 끝난 후에, 오늘 판매한 책의 제목을 보면서 가장 많이 팔린 책의 제목을 칠판에 써놓는 일도 같이 하고 있다. 오늘 하루 동안 팔린 책의 제목이 입력으로 들어왔을 때, 가장 많이 팔린 책의 제목을 출력하는 프로그램을 작성하시오. song = int(input('오늘 책이 얼마나 팔렸나요?')) books = {} # books를 딕셔너리형 {}으로 초기화 for _ in range(song): book = input('어떤 책이 팔렸나요?') if book not in books: books[book] = 1 # book이 기존 딕셔너리 books에 없다면 빈도를 1 else: books[boo..

백준 - Python 1543번 문제 (문서 검색)

문제 - 1543 세준이는 영어로만 이루어진 어떤 문서를 검색하는 함수를 만들려고 한다. 이 함수는 어떤 단어가 총 몇 번 등장하는지 세려고 한다. 그러나, 세준이의 함수는 중복되어 세는 것은 빼고 세야 한다. 예를 들어, 문서가 abababa이고, 그리고 찾으려는 단어가 ababa라면, 세준이의 이 함수는 이 단어를 0번부터 찾을 수 있고, 2번부터도 찾을 수 있다. 그러나 동시에 셀 수는 없다. 세준이는 문서와 검색하려는 단어가 주어졌을 때, 그 단어가 최대 몇 번 중복되지 않게 등장하는지 구하는 프로그램을 작성하시오 hun = input('입력 값1') # 입력 값1 seop = input('입력 값2') # 입력 값2 cnt = 0 song = 0 while song

Python 데이터 분석 Data Preprecessing

1. 데이터 전처리(Data Preprecessing) 특정 분석에 적합하게 데이터를 가공하는 작업 업무에서 사용하는 데이터는 분석, 머신러닝(딥러닝)에 적합하지 않은 경우가 많기 때문에 이를 방지하기 위한 작업을 함 2. 공공데이터 * [공공데이터](https://bit.ly/ds-house-price) * [민간 아파튼 가격동향](https://bit.ly/ds-house-price) ✔ strip() : 공백이 있는 데이터의 해당 앞뒤 공백을 삭제하는 기능을 가지고 있다.

Python 백준 - 1966번 문제 - 큐

문제 -1 966 여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에 쌓여서 FIFO - First In First Out - 에 따라 인쇄가 되게 된다. 하지만 상근이는 새로운 프린터기 내부 소프트웨어를 개발하였는데, 이 프린터기는 다음과 같은 조건에 따라 인쇄를 하게 된다. 현재 Queue의 가장 앞에 있는 문서의 ‘중요도’를 확인한다. 나머지 문서들 중 현재 문서보다 중요도가 높은 문서가 하나라도 있다면, 이 문서를 인쇄하지 않고 Queue의 가장 뒤에 재배치 한다. 그렇지 않다면 바로 인쇄를 한다. 예를 들어 Queue에 4개의 문서(A B C D)가 있고, ..

머신러닝 - 사이킷런

1. Scikit-learn 모듈 대표적인 파이썬 머신러닝 모듈 다양한 머신러닝 알고히즘을 제공 다양한 샘플 데이터를 제공 머신러닝 결과를 검증하는 기능을 제공 BSD 라이선스이기 때문에 무료로 사용 및 배포가 가능 사이킷런 공식홈페이지 https://scikit-learn.org 2. LinearSVC 클래스를 구분으로 하는 분류문제에서 각 클래스를 잘 구분하는 선을 그려주는 방식을 사용하는 알고리즘 지도학습 알고리즘을 사용하는 학습 전용 데이터와 결과 전용 데이터를 함께 가지고 있어야 사용이 가능

백준 - Python - 11650문제

2차원 평면 위의 점 N개가 주어진다. 좌표를 x좌표가 증가하는 순으로, x좌표가 같으면 y좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오. -11650 song = int(input()) hun = [] for i in range(song): # 반복을 돌리며 입력받은 [a, b] = map(int, input().split()) hun.append([a, b]) # hun 리스트 안에 a, b좌표를 저장 hun = sorted(hun) # 정장된 값을 정렬 for i in range(song): print(hun[i][0], hun[i][1]) # 위에 있는 출력식으로 출력

Python Pandas 2

2. 데이터 기본 정보 알아보기 df = pd.read_csv('http://bit.ly/ds-korean-idol') df type(df) pandas.core.frame.DataFrame 2-1. column(열) df.columns Index(['이름', '그룹', '소속사', '성별', '생년월일', '키', '혈액형', '브랜드평판지수'], dtype='object') new_column = ['name','group','company','gender','birthday','height','blood','brand'] df.columns = new_column df.columns Index(['name', 'group', 'company', 'gender', 'birthday', 'height'..

Pythone Pandas(판다스) 기본

1. Pandas 데이터 작업을 쉽고 직관적으로 할 수 있도록 설계된 빠르고 유연한 데이터 구조를 제공하는 모듈개요[편집] 팬더스 (pandas)는 파이썬의 데이터 분석 라이브러리이다. 팬더스는 수치형 테이블과 시계열 데이터를 조작하고 운영하기 위한 데이터를 제공하는데, 3조항 BSD 라이선스 조건 하에서 무료로 사용 가능하다 1-1. Series와 DataFrame 1차원, 1개의 column은 Series라고 부름 데이터프레임: 가로축, 세로축이 있는 2차원의 다양한 데이터를 저장하는 자료구조

Python 백준 스택수열

문제 1. 스택수열 스택 (stack)은 기본적인 자료구조 중 하나로, 컴퓨터 프로그램을 작성할 때 자주 이용되는 개념이다. 스택은 자료를 넣는 (push) 입구와 자료를 뽑는 (pop) 입구가 같아 제일 나중에 들어간 자료가 제일 먼저 나오는 (LIFO, Last in First out) 특성을 가지고 있다. 1부터 n까지의 수를 스택에 넣었다가 뽑아 늘어놓음으로써, 하나의 수열을 만들 수 있다. 이때, 스택에 push하는 순서는 반드시 오름차순을 지키도록 한다고 하자. 임의의 수열이 주어졌을 때 스택을 이용해 그 수열을 만들 수 있는지 없는지, 있다면 어떤 순서로 push와 pop 연산을 수행해야 하는지를 알아낼 수 있다. 이를 계산하는 프로그램을 작성하라. 입력 첫 줄에 n (1 ≤ n ≤ 100,..

Python 데이터 분석 Numpy

1. Numpy 수학, 과학 계산용 페키지 성능 : ndarray가 파이썬의 list보다 빠름 메모리 사이즈 : ndarray가 파이썬의 list보다 적은 메모리를 사 1-1. array(배열) 여러값들의 그룹 1-2. array의 data타입 ndarray는 list와 다르게 단일 데이터 타입만 허용 1-3. 인덱싱과 슬라이싱 배열의 부분 선택 1-4. Fancy 인덱싱 범위가 아닌 특정 index의 집합의 값을 선택하여 추출하고 싶을 때 활용 1-5. Boolean 인덱싱 조건 필터링을 동하여 Boolean 값을 이용한 색

Python 크롤링(서점)

# 셀레니움 : 웹 브라우저를 이용하여 웹 사이트에서 자동적으로 제어할 수 있음 # 뷰티풀 숩 이란 HTML과 XML 문서들의 구문을 분석하기 위한 파이썬 패키지이다. # HTML로부터 데이터를 추출하기 위해 사용할 수 있는 파싱된 페이지의 파스 트리를 만드는데, # 이는 웹 스크래핑에 유용하다. ✔ 메인 페이지 -> 파이썬 (검색) -> 어디서 찾을지(HTML) ✔ yes24에서 내용 긁어오기 ✔ 엑셀로 저장 ✔ 결과

머신러닝 딥러닝 기초

1. 머신러닝 인공지능 : 인공(Artificial) + 지능(Intelligence) 머신러닝 : 학습(learning)하는 기계(machine) 딥러닝 : 깊은(deep) 신경망 구조의 머신러닝 1-1. 배경 과거 컴퓨터로 데이터를 읽어들이고, 그 데이터 안에서 특징을 학습하여 패턴을 찾아내는 작업(패턴인식) 데이터를 대량으로 수집 처리할 수 있는 환경이 갖춰짐으로 할 수 있는 열이 많아짐 머신러닝은 데이터로부터 특징이나 패턴을 찾아내는 것이기 때문에 데이터가 가장 중요함 1-2. 정의 머신러닝은 인공지능의 한 분야로 컴퓨터가 학습할 수 있도록 하는 알고리즘과 기술을 개발하는 분야 무엇(x)으로 무엇(y)을 예측하고 싶다의 f(함수)를 찾아내는 것 주어진 데이터를 통해서 입력변수와 출력변수간의 관계를..

Python 자료구조&알고리즘 - 힙(Heap)

1. 힙(Heap) 1-1. 힙 데이터에서 최대값과 최소값을 빠르게 찾기 위해 고안된 완전 이진 트리(Complete Binary Tree) 완전 이진 트리 : 노드를 삽입할 때 최하단 왼쪽 노드부터 차례대로 삽입하는 트리 1-2. 힙을 사용하는 이유 배열에 데이터를 넣고 최대값, 최소값을 찾으려면 시간이 많이 걸릴 수 있음 힙에 데이터를 넣고 최대값, 최소값을 찾으면 시간이 적게 소모됨 우선순위 큐와 같이 최대값 또는 최소값을 빠르게 찾아야 하는 자료구조 및 알고리즘 구현등에 활용됨 2. 힙(Heap) 구조 힙은 최대값을 구하기 위한 구조(최대힙, Max Heap)와 최소값을 구하기 위한 구조(최소 힙, Min Heap)로 분류할 수 있음 힙은 아래와 같이 두가지 조건을 가지고 있는 자료구조 각 노드의..

Python 자료구조&알고리즘 - 트리(Tree), 이진 탐색

1. 트리(Tree) Node와 Branch를 이용해서 사이클을 이루지 않도록 구성한 데이터 구조 트리중 이진 트리(Binary Tree)형태의 구조로 탐색(검색)알고리즘을 구현을 위해 많이 사용됨 2. 알아둘 용어 Node: 트리에서 데이터를 저장하는 기본 요소(데이터와 다른 연결된 노드에 대한 Branch 정보를 포함) Root Node: 트리 맨 위에 있는 노드 Level: 최상위 노드를 Level 0으로 했을 때 하위 Branch로 연결된 노드의 깊이를 나타냄 Parent Node: 어떤 노드의 상위 레벨에 연결된 노드 Child Node: 어떤 노드의 하위 레벨에 연결된 노드 Leaf Node: Child Node가 하나도 없는 노드 Sibling Node: 동일한 Parent Node를 가진 ..

Python 자료구조&알고리즘 - 해쉬 테이블(Hash Table)

1. 해쉬 테이블(Hash Table) 키(key)에 데이터(value)를 저장하는 데이터 구조 파이썬에서는 딕셔너리(dick)타입이 해쉬 테이블의 예 key를 통해 데이터를 바로 찾을 수 있으므로 검색 속도가 빠름 보통 배열로 미리 Hash Table 사이즈 만큼 생성 후에 사용 2. 알아둘 용어 해쉬(Hash) : 임의의 값을 고정 길이로 변환하는 것 해쉬 테이블(Hash Table): 키 값의 연산에 의해 직접 접근이 가능한 데이터 구조 해쉬 함수(Hashing Function) : key에 대해 산술 연산을 이용해 데이터 위치를 찾을 수 있는 함수 해쉬 값(Hash Values) 또는 해쉬 주소(Hash Address) : key를 해싱 하무로 연산해서 해쉬 값을 알아내고 이를 기반으로 해쉬 테이..