본문 바로가기

Python

(47)
Python - 의사결정나무(Decision Tree) 의사결정나무(Decision Tree) - 의사결정나무는 분류함수를 의사결정 규칙으로 이뤄진 나무 모양으로 그리는 방법이다. - 회귀와 분류 모두 사용될 수 있다. - 의사결정나무 구성요소 뿌리마디(root node) : 시작되는 마디로 전체 자료를 포함 자식마디(child node) : 하나의 마디로부터 분리되어 나간 2개 이상의 마디들 부모마디(parent node) : 주어진 마디의 상위마디 끝마디(terminal node) : 자식마디가 없는 마디 중간마디(internal node) : 부모마디와 자식마디가 모두 있는 마디 가지(branch) : 뿌리마디로부터 끝마디까지 연결된 마디들 깊이(depth) : 뿌리마디부터 끝마디까지의 중간마디들의 수 의사결정나무의 활용 1. 세분화 데이터를 비슷한 특..
Python - SVM(서포트 벡터 머신) SVM (서포트 벡터 머신) - 패턴인식, 자료 분석 등을 위한 지도학습 모델 - 비확룰적 이진 선형 분류 모델을 생성한다. - SVM의 분류 모델은 데이터들의 경계로 표현되며, 공간상 존재하는 여러 경계 중 가장 큰 폭을 가진 경계를 찾는다. - 위 그림에서 x와 o의 분류할 때 데이터들 간의 벡터 거리를 측정했을 때, 그 거리가 최대가 되는 분류자를 찾아나간다. - 각 그룹을 구분하는 분류자를 결정 초평면(Desicion Hyperline), 초평면에 가장 근접한 최전방 데이터들을 서포트벡터라고하며, 서포트 벡터와 초평면 사이의 수직 거리를 마진(Margin)이라고 한다. - SVM 모형은 선형 분류 뿐만 아니라 비선형 분류에도 사용되는데, 커널 트릭을 사용한다. - SVM 장점 1. 분류와 예측에 ..
Python - KNN(K-Nearest-Neighbors) K-Nearest Neighbor Classification(K-최근접 이웃 알고리즘) - 지도학습 (Supervised Learning) - K-NN 알고리즘의 원리 : 새로운 데이터의 클래스를 해당 데이터와 가장 가까운 k개 데이터들의 클래스로 결정한다. - K-NN 알고리즘의 최근접 이웃 간의 거리를 계산할 때 유클리디안 거리, 맨하탄 거리, 민코우스키 거리 등을 사용한다. 대표적으로 유클리디안 거리를 사용한다. *유클리디안 거리 : 두 점 P와 Q가 각각 P=(p1,p2,p3,...,pn) Q=(q1,q2,q3,...,qn)의 좌표를 가질 때 아래 공식으로 표현된다. - k의 선택은 학습의 난이도와 데이터의 개수에 따라 결정될 수 있으며, 일반적으로 훈련 데이터 개수의 제곱근으로 설정한다. - k..
Python - 회귀분석(Regression) ''' 머신러닝 : 기계학습 각각의 변수들의 관계를 찾는 과정. 예측 단계. 예측 : 회귀분석 분류 : KNN 군집 : K-means ... 지도학습 : 회귀분석, 분류 => 정답을 알고 학습 비지도학습 : 군집 => 정답이 없는 상태에서 서로 비슷한 데이터끼리 그룹화 강화학습 머신러닝 프로세스 데이터 정리 -> 데이터 분리(훈련데이터/검증데이터) -> 알고리즘 준비 -> 모형학습(훈련데이터) -> 예측(검증데이터) - > 모형평가 -> 모형활용 ''' ''' 회귀분석(regression) : 가격, 매출, 주가 등등의 연속성이 있는 데이터의 예측에 사용되는 알고리즘 설명(독립)변수 : 예측에 사용되는 변수 -> 학습 (머신러닝 알고리즘 : 회귀 분석) -> 예측(종속)변수 ''' # 단순 회귀 분석 :..
Python - 서울시 CCTV수를 파악해서 시각화하기 (산점도, 회귀선) ''' 서울시 각 구별 CCTV 수를 파악하고, 인구대비 CCTV 비율을 파악해서 순위 비교 서울시 각 구별 CCTV 수 : 01. CCTV_in_Seoul.csv 서울시 인구 현황 : 01. population_in_Seoul.xls ''' import pandas as pd CCTV_Seoul = pd.read_csv("01. CCTV_in_Seoul.csv", encoding='utf-8') CCTV_Seoul.head() CCTV_Seoul.info() # 기관명 컬럼의 이름을 '구별' 컬럼으로 변경하기 CCTV_Seoul.rename(columns={'기관명':'구별'},inplace=True) CCTV_Seoul.head() # 첫번째 컬럼의 이름을 '구별'로 컬럼명을 변경하기 CCTV_Seo..
Python - 웹크롤링 후 텍스트 마이닝 (seleium) ''' ##### 크롤링으로 데이터 가져오기 ##### wordcloud 그래프로 시각화하기 pip install pytagcloud pygame simplejson ㄴ 아래 세가지를 합쳐서 입력 1. pip install pytagcloud => wordcloud 그래프 2. pip install pygame 3. pip install simplejson ##### 형태소 분석 : konlpy 모듈 필요 ** 윈도우 사용시 셋팅 필수 ! pip install konlpy https://www.lfd.uci.edu/~gohlke/pythonlibs/#jpype 파이썬의 버전 확인 anaconda prompt > python --version 입력 > 3.8.8 jpype 사이트에서 JPype1-1.1.2..
Python - 웹크롤링 (BeautifulSoup/ Selenium) html = ''' 포털 목록 naver" target="_blank" rel="noopener">http://www.naver.com'>naver daum" target="_blank" rel="noopener">http://www.daum.net'>daum ''' from bs4 import BeautifulSoup soup = BeautifulSoup(html, "html.parser") links = soup.find_all("a") for a in links : # attrs : 속성값 # 이름이 href인 속성의 값을 리턴 href = a.attrs["href"] #http://www.naver.com text = a.string #a 태그의 내용 #daum print(text,">",href..
Python - 변수저장, 데이터프레임 필터(조회기능), 데이터프레임 병합 import seaborn as sns # titanic 데이터를 가져와서 titanic 변수에 저장하기 titanic = sns.load_dataset('titanic') titanic # titanic 데이터셋에서 age, fare 2개 열을 선택하여 데이터프레임 df 만들기 import pandas as pd df = titanic.loc[:,['age','fare']] df # df 데이터셋에 ten 컬럼에 10을 넣어서 추가하기 df['ten'] = 10 print(df.head()) # 10을 더하여 저장 함수 add_10를 생성하기 def add_10(x): return x + 10 # 두개의 변수 더하여 저장하는 add_two_obj 함수 def add_two_obj(a,b): return..