CodeOnWeb
로그인

Python 활용 실습

AI PM 강의 [3. Python 활용] 실습

서 종한 2018/09/05, 16:13

내용

AI PM 강의 (49)

Python 환경 만들기 Python 기초 실습 Python 기초 요약 Python 활용 실습 Python 활용 요약 Linear Regression 01 Linear Regression 02 Linear Regression 03 Linear Regression 04 Linear Regression 05 Linear Regression 06 Linear Regression 요약 Logistic Regression 01 Logistic Regression 02 Logistic Regression 03 Logistic Regression 04 Logistic Regression 05 Logistic Regression 요약 추천 시스템 실습 - 내용 기반 추천 추천 시스템 실습 - 협업 필터링1 추천 시스템 실습 - 협업 필터링2 TMDB API키 만들기 추천 시스템 요약 ML 방법론 및 결과 해석 실습 - 데이터셋 나누기 ML 방법론 및 결과 해석 실습 - Skewed Classes ML 방법론 및 결과 해석 실습 - Precision/Recall ML 방법론 및 결과 해석 실습 - Down/Up Sampling ML 방법론 및 결과 해석 요약 Neural Network 01 Neural Network 02 Neural Network 03 Neural Network 04 Neural Network 요약 Convolutional Neural Network 01 Convolutional Neural Network 02 Convolutional Neural Network 03 Convolutional Neural Network 04 Convolutional Neural Network 05 Convolutional Neural Network 06 Convolutional Neural Network 요약 ML as a Service (MLaaS)

AI PM 강의 V1

라이브러리 사용하기

Python에서 제공하는 기본적인 기능 들이 있긴하지만 Python은 기계학습을 위해 만들어진 언어가 아니기 때문에
데이터 처리와 기계학습을 도와주는 프로그램을 추가로 설치하고 불러와서 사용해야 합니다.

이러한 Python 기본 기능 이외에 특수한 목적을 위해서 설치해서 사용하는 프로그램을 일반적으로 라이브러리라고 합니다.

라이브러리를 사용하기 위해서는 해당 라이브러리를 먼저 불러와야 합니다.
그리고 불러온 라이브러리에서 정의한 속성과 함수를 사용하여 필요한 기능을 구현합니다.

이번 실습에서는 라이브러리를 불러오는 방법, 라이브러리에 정의된 기능 찾는 방법 등을 소개하고 라이브러리를 사용하여 데이터를 처리하고 시각화 해 보도록 하겠습니다.

라이브러리 불러오기

라이브러리는 import 혹은 from import로 불러올 수 있습니다.

as라는 키워드를 사용해서 불러온 라이브러리에 별명(alias)를 붙이고 사용할 수 있습니다

혹은 from ... import ... 를 사용하여 라이브러리의 해당 기능만들 불러서 사용할 수 있습니다

객체(Object)

라이브러리를 사용한다고 하는 것은 라이브러리 내의 객체를 사용한다는 것으로 이해하셔도 됩니다.
객체는 속성(attributes)기능(functions)의 묶음 이며 속성 = 변수, 기능 = 함수로 생각하시면 됩니다.

생성된 객체의 종류는 type함수로 체크할 수 있습니다

객체의 속성값을 읽어옵니다

객체의 함수를 이용하여 기능을 수행합니다

기술 문서

라이브러리에서 제공하는 객체 사용법과 예제들을 기술한 문서 모음입니다. 특정 라이브러리의 객체를 사용하기 위해서는 이 문서를 참조합니다.
NumPy 문서
Matplotlib 문서
pandas 문서
scikit-learn 문서

NumPy

NumPy 배열 생성

Python 리스트를 이용하여 NumPy 배열(array)를 생성합니다.

물론 2차원 배열 생성도 가능합니다.

NumPy에서는 배열을 만들기 위한 많은 함수를 제공합니다.

NumPy 배열 생성 해보기

정답SHOW

$\begin{pmatrix}1 & 2 & 3 \\\ 4 & 5 & 6 \\\ 7 & 8 & 9\end{pmatrix}$ 다차원 배열을 생성해 봅시다.
생성된 배열의 shape을 출력 해 봅니다.

NumPy 배열 인덱싱

1차원 배열에서 값을 읽는 방법은 Python list에서 읽는 방법과 동일합니다

2차원 배열에서 값을 읽기 위해서는 어떻게 해야 할까요?
예를들어 위에서 생성한 board에서 2를 읽어오고 싶다면 어떻게 해야 할까요?

board 안에 있는 배열을 변수로 바꿔 보겠습니다

board[0]를 하면 어떤 값이 나올까요? 그렇습니다 r0에 들어있는 배열이 나오겠죠.
이제 board[0]를 변수 c에 할당해 볼까요. 이제 c는 1차원 배열이 되었습니다.
1차원 배열에서 인덱싱은 Python list의 인덱싱과 동일하다는 것을 위에서 배웠죠?

이제 c에서 2를 가져오기 위해서는 c[1]을 가져오면 됩니다.

위의 과정을 정리하면 아래와 같이 표현할 수 있겠죠. 한번 원하는 값이 나오는지 실행 해 볼까요

NumPy에서는 이렇게 인덱싱할 수도 있습니다

NumPy 배열 인덱싱 해보기

정답SHOW

m = $\begin{pmatrix}1 & 2 & 3 \\\ 4 & 5 & 6 \\\ 7 & 8 & 9\end{pmatrix}$ 에서 6을 읽어오려면 어떻게 해야 할까요?

NumPy 배열 슬라이싱

슬라이싱(slicing)을 이용하여 특정 row, column 데이터를 가져올 수 있습니다

슬라이싱을 사용하여 여러개의 row, column을 가져올 수도 있습니다
a = $\begin{pmatrix}1 & 2 & 3 & 4 \\\ 5 & 6 & 7 & 8 \\\ 9 & 10 & 11 & 12\end{pmatrix}$ 다차원 배열을 생성하고
여러개의 rows, columns을 읽어보도록 하겠습니다.

NumPy 배열 슬라이싱 해보기

정답SHOW

a = $\begin{pmatrix}1 & 2 & 3 & 4 \\\ 5 & 6 & 7 & 8 \\\ 9 & 10 & 11 & 12\end{pmatrix}$ 에서
$\begin{pmatrix} 2 & 3 \\\ 6 & 7 \end{pmatrix}$을 슬라이싱 하려면 어떻게 해야 할까요?

NumPy 배열 연산

NumPy 배열에 대해서 (+ - * /) 연산자를 이용하여 사칙 연산을 할 수 있습니다. 이때 연산은 각 요소(element) 단위로 적용됩니다.

NumPy에서 제공하는 함수(add, subtract, multiply, divide)를 사용하여 연산 할 수 도 있습니다

벡터 내적, 매트릭스 벡터 곱 혹은 매트릭스 간의 곱을 계산하기 위해서는 어떻게 해야 할까요?
numpy의 dot 함수를 사용합니다

마지막으로 NumPy와 같은 라이브러리를 쓰면 어떤 장점이 있는지 예제를 통해서 살펴 보겠습니다

Matplotlib

matplotlib을 사용하여 그래프를 그릴 수 있습니다.

(x, y) = ((1, 2), (2, 4), (3, 6)) 그래프를 그려봅니다.

이미지도 그릴 수 있습니다.

Matplotlib 해보기1

정답SHOW

scatter 함수를 사용하여 산점도(scatter plot)를 그려봅니다

Matplotlib 해보기2

정답SHOW

싸인, 코싸인 그래프를 그려보자
xlabel 함수
ylabel 함수
title 함수
legend 함수

pandas

pandas.Series

pandas.Series를 이용하여 1차원 배열을 만들어 봅니다

series의 값은 다음과 같은 방법으로 가져 올 수 있습니다

pandas.Series 해보기

정답SHOW

index가 ('uno', 'dos', 'tres')이고 값이 (1, 2, 3)인 pandas.Series를 만들어 봅시다

pandas.DataFrame

pandas.DataFrame을 이용하여 테이블을 만들고 값을 확인해 봅니다

위와 같이 pandas.DataFrame은 열(column) -> 행(row) 순서로 읽을 수 있습니다.

pandas.DataFrame 해보기

정답SHOW

table에서 5값을 가져오려면 어떻게 해야 할까요?

loc

또는 pandas.DataFrame.loc 함수를 이용해서 값을 읽어올 수 있습니다.
loc함수는 라벨 기반의 인덱싱 함수이며 loc[{row 인덱스}, {column 인덱스}]로 값을 읽어올 수 있습니다.

라벨 인덱싱을 이용한 슬라이싱도 가능하며 list를 이용하여 특정 라벨 값만 가져 올 수도 있습니다

iloc

pandas.DataFrame.iloc는 loc와 마찬가지로 인덱싱 함수이며 라벨이 아닌 정수 인덱스를 사용합니다

loc와 동일하게 슬라이싱이 가능하며 리스트도 특정 데이터만 가져올 수 있습니다.

CSV 파일 데이터 읽기/그리기

데이터를 자동으로 다운로드하는 코드를 미리 구현해 놓았습니다. 아래 코드를 실행하면 'population_profit.csv'파일을 다운로드 받습니다.

pandas-CSV

pandas를 이용하여 csv파일을 읽고 DataFrame에 저장 해 봅니다.
pandas.read_csv 함수

pandas-CSV 해보기

정답SHOW

5번째 도시의 population, profit 출력하려면 어떻게 해야 할까요?

matplotlib으로 그래프 그리기

정답SHOW

population을 x 데이터, profit을 y 데이터로 하는 산점도 그래프(scatter graph)를 그려봅니다.

대용량 CSV 파일

2017년9월 ~ 2018년9월 아파트 실거래 가격 데이터를 다운로드 받습니다.

데이터가 어떻게 구성 되어 있는지는 data1, data2에서 보실 수 있습니다.

다운로드 받은 csv 파일을 읽고 하나의 DataFrame으로 통합합니다

describe() 함수를 통하여 number 형식의 모든 column 데이터 통계를 확인 할 수 있습니다

특정 column의 통계를 보기위해서는 아래와 같이 하시면 됩니다.

'거래금액' column의 통계값을 해당 함수를 이용해서 각각 뽑아보도록 하겠습니다.

특정 조건을 만족하는 데이터만 필터링 하는 방법을 알아보도록 하겠습니다.
전용면적이 99.1736$m^2$(30평) 이상인 집만 보기 위해서는 아래와 같이하시면 됩니다.

서울시 소재 집 데이터만 가져오기 위해서는 어떻게 해야 할까요?
'시군구' column 데이터를 보시면 '서울특별시'로 시작하는 것을 보실 수 있습니다.

그러면 서울시에 있는 30평 이상의 집 데이터만 보기위해서는 어떻게 해야 할까요?

데이터를 특정 column 값에 의해서 정렬해서 보기 위해서는 sort_values() 함수를 사용하시면 됩니다
'건축년도' 오래된 순으로 정렬하고 만약 '건축년도'가 동일한 경우 '계약년월'이 빠른 순으로 정렬하는 코드입니다.

pivot table 기능도 pandas를 이용해서 만들 수 있습니다. pivot_table() 함수를 이용하시면 됩니다.
서울에 있는 아파트를 행정구역, 계약년월 별로 실거래 가격의 평균을 만드는 방법입니다.

위의 지역별 서울 평균 실거래가 데이터를 이용하여 서울시 강남구 개포동 (첫번째 row) 평균 거래가 그래프를 그려 보겠습니다.


434 읽음
이전 Python 기초 요약
다음 Python 활용 요약

저자

토론이 없습니다

Please log in to leave a comment

16.5.11592.20190313.allo
문제 보고 · 사용조건 · 개인정보보호
래블업 주식회사 · 대한민국 서울 테헤란로 145 · 대표: 신정규 · 사업자번호: 864-88-00080 · +82 70-8200-2587

거절 확인

닫기
좋아요 책갈피 토론

아래 주소를 복사하세요