본문 바로가기

Data Science & Analytics

빅데이터분석기사시험 공부

반응형

 


실기시험 안내

1. 출제문항

실기검정 방법

- 필답형 10문제 (각 3점)

- 작업형 제1유형 3문제 (각10점), 제2유형 1문제 (40점)

 

시험시간 : 180분

 

합격기준 100점 만점에 60점 이상

 

2. 작업형 주요내용

빅데이터 분석 실무

- 문제수 : 데이터 수집 작업

- 주요항목 : 데이터 수집하기

- 세부항목 :

> 정형, 반정형, 비정형 등 다양한 형태의 데이터를 읽을 수 있다,

> 필요시 공개 데이터를 수집할 수 있다.

 

빅데이터 탐색

- 문제수 : 데이터 전처리 작업

- 주요항목 : 데이터 정제하기, 데이터 변환하기

- 세부항목 :

> 데이터 정제하기 : 정제가 필요한 결측값, 이상값 등이 무엇인지 파악할 수 있다, 결측값과 이상값에 대한 처리 기준을 정하고 제거 또는 임의의 값으로 대체할 수 있다.

> 데이터 변환하기 : 데이터의 유형을 원하는 형태로 변환할 수 있다, 데이터의 범위를 표준화 또는 정규화를 통해 일치시킬 수 있다, 기존 변수를 이용하여 의미 있는 새로운 변수를 생성하거나 변수를 선택할 수 있다.

 

빅데이터 모델링

- 문제수 : 데이터 모형 구축 작업

- 주요항목 : 분석모형 선택하기, 분석모형 구축하기

- 세부항목 : 

> 분석모형 선택하기 : 다양한 분석모형을 이해할 수 있다, 주어진 데이터와 분석 목적에 맞는 분석모형을 선택할 수 있다.

> 분석모형 구축하기 : 모형 구축에 부합하는 변수를 지정할 수 있다, 모형 구축에 적합한 형태로 데이터를 조작할 수 있다.

 

빅데이터 결과 해석

- 문제수 : 데이터 모형 평가 작업

- 주요항목 : 구축된 모형 평가하기, 분석결과 활용하기

- 세부항목 :

> 구축된 모형 평가하기 : 최종 모형을 선정하기 위해 필요한 모형 평가 지표들을 잘 사용할 수 있다, 선택한 평가지표를 이용하여 구축된 여러 모형을 비교하고 선택할 수 있다, 성능 향상을 위해 구축된 여러 모형을 적절하게 결합할 수 있다.

> 분석결과 활용하기 : 최종모형 또는 분석결과를 해석할 수 있다, 최종모형 또는 분석결과를 저장할 수 있다.

 

 

 

 

Part01 빅데이터 분석 개요 (필답형 대비) 

1과목 소개 : 빅데이터 분석에 대한 전반적인 내용을 짚어보고 주요 용어에 대해 공부하여 필답형 문제에 대비합니다. 실제 시험에 폭넓은 범위에서 10문제가 출제가 되고 있으며 어떻게 관심을 두고 있는지에 따라 체감 난이도가 달라질 수 있습니다.

 

Chapter 01 데이터 수집과 전처리

학습방향 : 유형에 따른 데이터 수집 방법과 여러 기술들을 학습합니다. 전처리 과정을 포함하여 결측값, 이상값 등을 다루는 내용들은 실기 과정에도 필요한 부분이므로 확실히 이해하도록 합니다. 필기 시험에서 다뤘던 내용들을 다시 확인하며 주요 용어들의 출제에 대비하여야 합니다.

 

Section 01 데이터 수집과 탐색

핵심포인트 : 하둡, 데이터웨어하우스, ETL, 크롤링, NoSQL, 스트리밍, 맵리듀스, API, DBMS, 인터프리터, 스쿱

 

* 하둡 (Hadoop) 다수의 컴퓨터를 마치 하나인 것처럼 묶어 대용량 데이터를 처리하는 공개 소스 프레임워크 

* 비즈니스 프로세스 비즈니스 전개에 필요한 모든 순차적이거나 병렬적인 활동들의 집합

 

01 데이터 수집

데이터 처리 시스템에 들어갈 데이터를 모으는 과정으로 여러 장소에 있는 데이터를 한 곳으로 모으는 것이다.

** 데이터 수집 수행 자료 : 용어집, 서비스 흐름도, 업무 매뉴얼, 데이터 명세서, 데이터 수집 계획서, 원천 데이터 담당자 정보, 원천 데이터 소유 기관 정보, 데이터 수집 기술 매뉴얼, 인프라 구성도, 소프트웨어 아키텍처 개념도, 수집 솔루션 매뉴얼, 하둡 오퍼레이션 매뉴얼

 

기초 데이터 수집 수행 절차

비즈니스 도메인 정보 수집

- 전문가 인터뷰

- 인터뷰 결과 분석

 

분석기획서 기반 도메인, 서비스 이해

- 비즈니스 현황 (이슈)

- 원천데이터 습득 현황

 

수집 데이터 탐색

- 수집 데이터 선정

- 데이터 위치, 유형, 수집방법, 비용

 

기초 데이터 수집

- 체크리스트 

- 기초 데이터 수집

 

데이터 수집 시스템 구축 절차

수집 데이터 유형 파악

- 수집 세부계획서 정독

- 데이터의 종류 확인

 

수집 기술 결정

- 데이터 유형에 맞는 최적의 수집기술 선정

 

아키텍처 수립

- 수집 솔루션 아키텍처 파악

- 아키텍처 커스터마이징

 

하드웨어 구축

- 하드웨어 스펙 및 규모 결정

- 서버, OS, 스토리지 설치

 

실행환경 구축

- Sqoop, Flume 등 수집 솔루션 설치

 

 

1) 비즈니스 도메인과 원천 데이터 정보 수집

2) 내/외부 데이터 수집

(1) 데이터의 종류 : 내부데이터 / 외부데이터 

(2) 데이터의 수집 주기

(3) 데이터의 수집 방법

 

3) 데이터 수집 기술

(1) 데이터 유형별 수집 기술

(2) ETL (Extract, Transform, Load) 

(3) FTP (File Transfer Protocol) 

(4) 정형데이터 수집을 위한 아파치 스쿱 (Sqoop) 기술

(5) 로그/센서 데이터 수집을 위한 아파치 플럼 (Flume) 기술

(6) 웹 및 소셜 데이터 수집을 위한 스크래피 (Scrapy) 기술

 

 

 

02 데이터 변환

1) 데이터 변환 (Data Transformation) 

(1) 데이터 변환 방식의 종류

(2) 데이터 변환 수행 자료 

 

2) 데이터베이스 구조 설계

(1) DBMS 구축 여부 결정

(2) 저장 데이터베이스 결정

(3) DBMS 설치

(4) 테이블 구조 설계

 

3) 비정형/반정형 데이터의 변환

(1) 수집 데이터의 속성 구조 파악

(2) 데이터 수집  절차에 대한 수행 코드 정의

(3) 데이터 저장 프로그램 작성

(4) 데이터베이스에 저장

 

4) 융합 데이터베이스 설계

(1) 요구사항 분석

(2) 데이터 표준화와 모델링 수행

 

5) 고려사항

 

 

03 데이터 적재

1) 데이터 적재 도구

(1) 데이터 수집 도구를 이용한 데이터 적재

(2) NoSQL DBMS가 제공하는 도구를 이용한 데이터 적재

(3) 관계형 DBMS의 데이터를 NoSQL DBMS에서 적재

 

2) 데이터 적재 완료 테스트

(1) 데이터 적재 내용에 따라 체크리스트를 작성

(2) 데이터 테스트 케이스를 개발

(3) 체크리스트 검증 및 데이터 테스트 케이스 실행

 

04 데이터 저장

1) 빅데이터 저장시스템

(1) 파일 시스템 저장방식

(2) 데이터베이스 저장방식

 

2) 분산 파일 시스템

(1) 하둡 분산 파일 시스템 (HDFS: Hadoop Distributed File System) 

(2) 구글 파일 시스템 (GFS: Google File System) 

 

3) NoSQL 

(1) NoSQL 개요

(2) CAP 이론 : 기존 데이터 저장 구조의 한계 

(3) NoSQL 의 기술적 특성

(4) NoSQL 의 데이터 모델

 

4) 빅데이터 저장시스템 선정을 위한 분석

(1) 기능성 비교 분석

(2) 분석방식 및 환경

(3) 분석대상 데이터 유형

(4) 기존 시스템과의 연계

 

5) 데이터 발생 유형 및 특성

(1) 대용량 실시간 서비스 데이터

(2) 대용량 실시간 서비스 데이터 저장

 

6) 안정성과 신뢰성 확보 및 접근성 제어계획 수립

(1) 빅데이터 저장시스템 안정성 및 신뢰성 확보

(2) 접근성 제어계획 수립

 

 

합격을 다지는 예상문제

01 데이터 수집을 위한 시스템 구축 절차를 보기에서 골라 알맞은 순서로 나열하시오 

수집데이터 유형파악 > 수집기술 결정 > 아키텍처 수립 > 하드웨어 구축 > 실행환경 구축

 

02 보기의 빈 칸에 알맞은 내용을 기재하시오

비즈니스 모델, 비즈니스 용어집, 비즈니스 프로세스 로부터 (비즈니스 도메인) 정보를 습득하고, 도메인 전문가 인터뷰를 통해 데이터의 정보를 습득한다.

 

03 보기에서 설명하고 있는 데이터베이스는 무엇인가?

- 데이터 무결성과 정확성을 보장한다.

- 정규화된 테이블과 소규모 트랜잭션이 있다.

- 확장성에 한계가 있으며, 클라우드 분산 환경에 부적합하다.

> Relational 데이터베이스

 

04 보기의 빈 칸에 알맞은 내용을 순서대로 기재하시오

데이터 분석을 수행하고자 할 때 외부 데이터 또는 내부 데이터를 이용할 수 있는데, 서비스 시스템 데이터나 네트워크 및 서버 장비 데이터 등을 (내부데이터)  라 하고, 소셜 데이터나 특정 기관의 데이터 등은 (외부데이터) 라 한다.

 

05 보기에서 설명하고 있는 데이터 수집 방법은 무엇인가? 

DBMS 간에 데이터를 동기화 또는 전송하는 방법이다.

> DBtoDB

 

06 보기에서 설명하고 있는 데이터 수집 기술은 무엇인가? 

인터넷 상에서 제공되는 다양한 웹 사이트의 소셜 네트워크 정보, 뉴스, 게시판 등으로부터 웹 문서 및 정보를 수집하는 기술이다. 

> 크롤링 

 

07 보기와 같은 특징을 갖고 있는 데이터는 무엇인가? 

- 대용량성

- 실시간성

- 무중단성

> 스트리밍 데이터

 

08 보기의 빈 칸에 알맞은 내용을 기재하시오.

(key-value 데이터베이스) 는 NoSQL 데이터베이스 저장방식 중의 하나로, 관계형 데이터베이스보다 확장성이 뛰어나고, 단순한 데이터 모델에 기반을 두고 있으며, 데이터를 키와 그에 해당하는 값의 쌍으로 저장한다. 

 

09 보기에서 사용 목적이 다른 하나를 고르고 (가), 그 사용 목적 (나) 를 기재하시오. 

- 스크라이브 (Scribe) 

- 맵리듀스 (MapReduce) 

- 플루언티드 (Fluented) 

- 로그스태시 (Logstash) 

(가) 맵리듀스

(나) 데이터 수집을 위한 도구

 

10 보기에서 설명하고 있는 기술은 무엇인가? 

아파치 진영에서 분산 환경 컴퓨팅을 목표로 시작한 프로젝트로 데이터 손상을 방지하기 위해서 데이터 복제 기법을 사용하고 대용량 파일을 클러스터에 여러 블록으로 분산하여 저장하며 클러스터에 저장되는 블록들은 마지막 블록을 제외하고 모두 크기가 동일하며 기본 크기는 64MB 이다. 

> 하둡 분산 파일 시스템 (HDFS) 

 

11 보기에서 설명하고 있는 데이터 수집 기술은 무엇인가? 

수집 대상 데이터를 추출, 변환, 적재의 3단계 프로세스로 저장하는 기술이다.

> ETL 

 

12 보기에서 설명하고 있는 데이터베이스는 무엇인가? 

- 연관된 데이터 위주로 읽는데 유리한 구조이다

- 하나의 레코드를 변경하려면 여러 곳을 수정해야 한다

- 동일 도메인의 열 값이 연속되므로 압축 효율이 좋다

> column-oriented 데이터베이스

 

13 보기의 맵리듀스 연산 과정 중 빈 칸에 알맞은 내용을 순서대로 기재하시오

Input - Splitting - (Mapping) - Shuffling - Reducing - Final result

 

14 CAP 이론에 대한 설명으로 보기의 빈 칸에 알맞은 내용을 순서대로 기재하시오

- 분산 환경에서 모든 노드가 같은 시점에 같은 데이터를 보여줘야 하는 것을 일관성이라 한다.

- 일부 노드가 다운되어도 다른 노드에 영향을 주지 않아야 하는 것을 (가용성) 이라 한다.

- 데이터 전송 중에 일부 데이터를 손실하더라도 시스템은 정상 동작해야 하는 것을 (지속성) 이라 한다.

- NoSQL 데이터베이스는 일관성이나 (가용성) 중 하나를 포기하고, (지속성) 을 보장한다.

 

15 보기에서 설명하고 있는 데이터 수집 기술은 무엇인가? 

웹사이트를 크롤링하고 구조화된 데이터를 수집하는 도구로 API 를 이용하여 데이터를 추출할 수 있어, 범용 웹크롤러로 사용될 수 있다.

> 스크래피 

 

16 빅데이터 저장시스템 선정을 위한 기능성 비교분석 항목에 대한 설명으로 보기의 빈 칸에 알맞은 내용을 순서대로 기재하시오

트랜잭션 일관성은 데이터베이스 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 ACID 요소 중 하나로, 데이터 수정, 삭제 등의 작업이 빈번하게 일어나는 환경에서 중요도가 높으며, 배치중심의 하둡 기반 분석환경에서는 중요도가 그리 높지 않다. 따라서 트랜잭션의 일관성이 중요한 분야에서는 (RDBMS) 를, 그렇지 않은 때에만 (NoSQL) 을 선택하여야 한다.

 

17 보기에서 설명하고 있는 데이터베이스는 무엇인가?

- 문서마다 다른 스키마가 있다.

- 레코드 간의 관계 설명이 가능하다.

- 개념적으로 관계형 데이터베이스와 비슷하다.

> Document-oriented 데이터베이스

 

18 보기의 빈 칸에 알맞은 내용을 기재하시오

대용량 실시간 서비스 데이터 저장 시 대상 데이터의 용량, 정형/비정형 등 유형 및 요건을 파악하여 빅데이터 저장 계획 수립에 반영하여야 하고, 대용량의 특성과 무중단 서비스를 보장하는 저장 체계를 구축해야 하며, 실시간 서비스를 웹 페이지로 제공하는 것이 필요한 환경에서는 (Redis) 와 같은 메인 메모리 저장 시스템을 저장소로 사용하기도 한다.

 

19 보기에서 설명하고 있는 데이터 수집 기술은 무엇인가? 

정형 데이터 수집 기술의 하나로, 시스템 간 연동을 통해 실시간으로 데이터를 수신할 수 있도록 기능을 제공하는 인터페이스이다.

> API 

 

20 보기에서 설명하는 것은 무엇인가?

관련성이 있는 데이터들을 하나의 통합된 저장소에 저장 - 공유 - 관리하는 시스템

> 데이터베이스

 

21 보기에서 설명하는 것은 무엇인가?

사용자의 의사 결정에 도움을 주기 위하여, 다양한 운영시스템에서 추출, 변환, 통합되고 요약된 데이터베이스

> 데이터 웨어하우스

 

22 대량의 데이터를 처리하기 위해 데이터베이스 테이블을 수평 분할 (Horizontal partitioning) 하여 물리적으로 서로 다른 곳에 분산 저장 및 조회하는 기술을 무엇이라 하는가? 

> 샤딩 (Sharding)

 

23 보기에서 설명하는 데이터 수집 소프트웨어는 무엇인가? 

- MySQL, Oracle 등 관계형 데이터베이스에 저장된 대량의 데이터를 HDFS 로 전송하기 위해 아파치 그룹에서 구현된 도구

- 데이터 가져오기/내보내기 과정을 맵리듀스를 통해 처리하기 때문에 병렬처리가 가능하고 장애에도 강한 특징을 갖는다. 

> 스쿱 (Scoop) 

 

24 보기의 ( ) 안에 들어갈 적절한 말을 적으세요

플럼에서 하나의 에이전트는 소스, 채널, (싱크) 로 구성된다. 소스는 웹서버, 로그데이터서버 등 원시데이터소스와 연결되며, 소스로부터 들어오는 데이터는 큐의 구조를 갖는 채널로 들어간 후, (싱크) 를 통해 목표 시스템으로 전달된다. 

 

25 보기와 같은 특징을 갖는 데이터베이스는 무엇인가?

- 대용량 데이터 저장 측면에서 봤을 때, 관계형 데이터베이스보다 수평적 확장성, 데이터 복제, 간편한 API 제공, 일관성 보장 등의 장점이 있다.

- 저장방식의 경우 key-value 데이터베이스, column-oriented 데이터베이스, document 데이터베이스가 있다.

> NoSQL

 

26 보기의 ( ) 안에 들어갈 적절한 말을 적으세요

- HDFS는 대용량 파일을 클러스터에 여러 블록으로 분산하여 저장하며, 블록들은 마지막 블록을 제외하고 모두 크기가 동일하다.

- HDFS는 마스터 (Master) 하나와 여러개의 슬레이브 (Slave) 로 클러스터링 되어 구성된다.

- 마스터노드는 (네임) 노드라고 하며 슬레이브를 관리하는 메타데이터와 모니터링 시스템을 운영한다.

 

27 보기에서 설명하고 있는 NoSQL 의 데이터 모델은 무엇인가?

- 데이터를 키와 그에 해당하는 값의 쌍으로 저장하는 데이터 모델에 기반을 둔다.

- 응답시간이 빠르나 범위 질의 처리에는 취약하다

 

28 여러 문서에 들어있는 단어의 수를 맵리듀스를 통해 계산할 때 보기에서 설명하는 것은 어느 과정인가?

- 분할된 데이터 조각에 포함된 단어와 그 빈도수를 계산하여 기록한다.

> 매핑 (Mapping)

 

 

 

 

 

 

 

 

Section 02 데이터 전처리

* 핵심포인트 : 명목자료, 표준편차, 정규화, 이상치, 대치법, 후진소거법, 과적합, 무작위 결측, 차원축소, 요인분석, 로그변환, 전처리

 

01 데이터에 내재된 변수의 이해

1) 데이터 관련 정의

(1) 데이터

(2) 단위

(3) 관측값

(4) 변수

(5) 원자료

 

2) 데이터의 종류

(1) 단변량자료

(2) 다변량자료

(3) 질적자료

(4) 수치자료

(5) 시계열자료

(6) 횡적자료

(7) 종적자료

 

3) 데이터의 정제 

(1) 데이터 정제의 필요성

(2) 정제과정을 거치지 않은 데이터의 문제점

(3) 데이터 정제의 과정 (processing) 

(4) 데이터 정제의 전처리 - 후처리

 

02 데이터 결측값 처리

1) 결측 데이터의 종류

(1) 완전 무작위 결측 (MCAR : Missing Completely At Random) 

(2) 무작위 결측 (MAR : Missing At Random) 

(3) 비 무작위 결측 (NMAR : Not Missing At Random) 

 

2) 결측값 유형의 분석 및 대치

(1) 단순 대치법 (Simple Imputation) 

(2) 다중 대치법 (Multiple Imputation) 

 

03 데이터 이상값 처리

1) 이상치의 종류 및 발생원인

(1) 이상치의 종류

(2) 이상치의 발생 원인

 

2) 이상치의 문제점

(1) 기초(통계적) 분석결과의 신뢰도 저하

(2) 기초통계에 기반한 다른 고급 통계분석의 신뢰성 저하

 

3) 이상치의 탐지 

(1) 시각화 를 통한 방법 (비모수적, 단변량 (2변량) 의 경우) 

(2) Z-score 를 통한 방법 (모수적 단변량 또는 저변량의 경우) 

(3) 밀도기반 클러스터링 방법 (DBSCAN: Density Based Spatial Clustering of Application with Noise) 

(4) 고립 의사나무 방법 (Isolation Forest) 

 

04 변수 선택

1) 회귀분석의 사례

2) 변수별 모형의 분류

(1) 전체모형 (FM: Full Model) 

(2) 축소모형 (RM: Reduced Model) 

(3) 영 모형 (NM: Null Model) 

3) 변수의 선택 방법

(1) 전진 선택법 (Forward Selection) 

(2) 후진 소거법 (Backward Elimination), 후진 선택법 (Backward Selection) 

(3) 단계적 선택법 (Stepwise Selection) 

 

05 차원 축소

1) 차원 축소의 필요성

(1) 복잡도의 축소 (Reduce Complexity)

(2) 과적합 (Overfit) 의 방지

(3) 해석력 (Interpretability) 의 확보

(4) 차원의 저주 (Curse of Dimensionality) 

 

2) 차원 축소의 방법

(1) 요인분석 (Factor Analysis) 

(2) 주성분 분석 (PCA: Principla Component Analysis) 

(3) 특이값 분해 (SVD: Singular Value Decomposition) 

(4) 음수 미포함 행렬분해 (NMF: Non-negative Matrix Factorization) 

 

06 파생변수의 생성

1) 파생변수

2) 요약변수

3) 요약변수 vs 파생변수

(1) 요약변수 처리 시의 유의점

(2) 파생변수 생성 및 처리의 유의점

 

07 변수 변환

1) 변수 변환의 개념

2) 변수 변환의 방법

(1) 범주형 변환

(2) 정규화

(3) 로그변환 (Log Transformation) 

(4) 역수변환 (Inverse Tranformation) 

(5) 지수변환 (Power Transformation) 

(6) 제곱근변환 (Square Root Transformation) 

(7) 분포형태별 정규분포 변환 

(8) 기타 방법 - 데이터 축소 

 

08 불균형 데이터 처리

1) 불균형 데이터의 문제점

2) 불균형 데이터의 처리 방법

(1) 가중치 균형방법 (Weighted Balancing) 

(2) 언더샘플링 (Undersampling) 과 오버샘플링 (Oversampling) 

 

합격을 다지는 예상문제

01 보기의 빈 칸에 알맞은 내용을 순서대로 기재하시오

각 조사 단위별로 기록한 정보나 특성알 관측값 이라 하며, 각 단위에서 측정된 특정 결과를 변수 라 한다.

 

02 보기의 빈 칸에 알맞은 내용을 기재하시오

(질적자료) 는 정성적 자료라고도 하며, 분류의 편리상 부여된 수치의 크기에는 의미를 부여하지 않는다. 

 

03 보기의 빈 칸에 알맞은 내용을 순서대로 기재하시오

(서열자료) 는 정성적 자료의 한 종류로 명목자료와 비슷하나 수치나 기호가 서열을 나타내는 자료이며, (명목자료) 는 질적자료의 한 종류로 측정대상이 범주나 종류에 대해 구분되어지는 것을 수치 또는 기호로 분류되는 자료이다.

 

04 보기에서 설명하고 있는 자료의 유형은 무엇인가? 

키, 몸무게, 월수입 등으로 사칙연산이 가능한 자료이다.

> 비율자료

 

05 보기에서 설명하고 있는 데이터 분석 과정은 무엇인가?

수집된 데이터를 대상으로 분석에 필요한 데이터를 추출하고 통합하는 과정을 말하며, 데이터로부터 원하는 결과나 분석을 얻기 위해 수집된 데이터를 분석의 도구 또는 기법에 맞게 다듬는 과정이다.

> 데이터 정제

 

06 데이터 정제 과정을 보기에서 골라 알맞은 순서로 나열하십시오

데이터 수집 >  데이터 저장 >  데이터 변환 >  데이터 품질확인 >  데이터 관리

 

07 보기에서 설명하고 있는 용어는 무엇인가? 

데이터 집합에서 다른 측정값들과 비교하여 현저한 차이를 보이는 값으로, 분석결과의 왜곡을 불러올 수 있다.

> 이상치 (Outlier) 

 

08 보기에서 설명하고 있는 자료의 유형은 무엇인가?

수치의 크기에 의미를 부여할 수 있는 자료를 나타내며 세부적으로는 구간자료와 비율자료가 있다.

> 수치자료

 

09 보기에서 설명하고 있는 결측값의 종류를 순서대로 기재하시오

- (완전 무작위 결측) 은 어떤 변수상에서 결측 데이터가 관측된 혹은 관측되지 않는 다른 변수와 아무런 연관성이 없다.

- (무작위 결측) 은 변수상의 결측 데이터가 관측된 다른 변수와 연관되어 있지만 그 자체가 비 관측값들과는 연관되지 않는다.

- (무작위 결측) 은 어떤 변수의 결측 데이터가 (완전 무작위 결측) 또는 (무작위 결측) 이 아닌 결측 데이터로 정의된다.

 

10 보기에서 설명하고 있는 대치법 (Imputation) 은 무엇인가?

평균대치법에서 추정량 표준오차의 과소 추정을 보완하는 대치법으로 Hot-Deck 방법이라고도 하며, 확률추출에 의해서 전체 데이터 중 무작위로 대치하는 방법이다.

> 단순확률 대치법 (Single Stochastic Imputation) 

 

11 보기에서 설명하고 있는 변수선택법은 무엇인가?

- 영 모형에서 시작, 모든 독립변수 중 종속변수와 단순 상관계수의 절댓ㄱ밧이 가장 큰 변수를 분석모형에 포함시키는 것을 말한다.

- 부분F검정 (F-test) 를 통해 유의성 검증을 시행, 유의한 경우는 가장 큰 F통계량을 가지는 모형을 선택하고 유의하지 않은 경우는 변수선택 없이 과정을 중단한다.

- 한번 추가된 변수는 제거하지 않는 것이 원칙이다.

> 전진 선택법

 

12 보기에서 설명하고 있는 변수선택법은 무엇인가? 

전진 선택법을 통해 가장 유의한 변수를 모형에 포함하고 나머지 변수들에 대해 후진소거법을 적용하는 방법이다.

> 단계적 선택법

 

13 보기에서 설명하고 있는 용어는 무엇인가?

- 기존의 변수를 조합하여 새로운 변수를 만들어내는 것을 의미한다.

- 사용자가 특정 조건을 만족하거나 특정 함수에 의해 값을 만들어 의미를 부여하는 변수로 매우 주관적일수 있으므로 논리적 타당성을 갖출 필요가 있다.

- 특정상황에만 유의미하지 않게 대표성을 나타나게 할 필요가 있다.

- 고객관리 등에 유용하게 사용된다.

> 파생변수

 

14 보기에서 설명하고 있는 필요 작업은 무엇인가? 

- 데이터를 분석하는 데 있어서 시간복잡도 (Time complexity) 와 공간복잡도 (Space complexity) 를 고려 시 동일한 품질을 나타낼 수 있따면 효율성 측면에서 데이터 종류의 수를 줄여야 한다.

- 차원이 적은 간단한 분석모델일수록 내부구조 이해가 용이하고 해석이 쉬워진다

- 작은 차원만으로 안정적인 결과를 도출해낼 수 있다면 많은 차원을 다루는 것보다 효율적이다

> 차원 축소

 

15 보기에서 설명하고 있는 작업은 무엇인가? 

- 다수의 변수들 간의 관계를 분석하여 공통차원을 축약하는 통계분석 과정이다.

- 독립변수, 종속변수의 개념이 없으며, 주로 기술 통계에 의한 방법을 이용한다.

- 관련된 변수들을 군집화함으로써 서로 간의 상호 독립성 및 변수의 특성을 파악한다.

> 요인 분석

 

16 보기의 주성분분석 에 대한 설명 중 옳지 않은 것을 모두 고르시오

 

17 보기에서 설명하고 있는 용어는 무엇인가? 

- 수집된 정보를 분석에 맞게 종합 (Aggregate) 한 변수이다

- 데이터 마트에서 가장 기본적인 변수이다.

- 많은 분석 모델에서 공통으로 사용될 수 있어 재활용성이 높다.

> 요약변수

 

18 보기에서 설명하고 있는 변수변환방법은 무엇인가? 

- 로그를 취하면 그 분포가 정규 분포에 가깝게 분포하는 경우가 있으며, 이를 로그정규분포를 가진다고 한다. 

- 대표적으로 주식가격의 변동성 분석에 활용된다.

- 데이터분포의 형태가 우측으로 치우친 경우 정규분포화를 위해 사용한다.

> 로그변환 

 

19 보기에서 설명하고 있는 문제점은 무엇인가? 

클래스에 속한 데이터의 개수의 차이에 의해 발생하는 문제로, 비대칭 데이터 문제 (Imbalanced Data Problem) 이라고도 한다.

> 불균형 데이터 문제

 

20 보기의 빈 칸에 알맞은 내용을 순서대로 기재하시오

- (언더샘플링) 은 대표클래스 (Majority Class) 의 일부만을 선택하고, 소수클래스 (Minority Class) 는 최대한 많은 데이터를 사용하는 방법이다.

- (오버샘플링) 은 소수클래스의 복사본을 만들어, 대표클래스의 수만큼 데이터를 만들어 주는 방법이다.

 

21 보기에서 설명하는 데이터 분석 과정은 무엇인가?  

- 데이터 저장 전의 처리과정으로 대상 데이터와 입수방법 결정 및 저장방식 장소를 선정한다.

- 데이터 정제, 교환 및 변환 과정을 포함한다. 

> 데이터 전처리

 

22 다음의 경우와 같이 누락된 데이터를 무엇이라고 하는가? 

가구별 소득 수준을 조사할 때, 저소득 가구는 가구 소득을 밝히지 않는 경우가 있다

> 비 무작위 결측

 

23 결측값을 대치하는 방법 중의 하나로 여러 개의 대치값을 생성하여 결측값을 대치한 후 분석을 실시하고, 복수개의 분석결과에 대한 통계적 결합을 통해 결과를 도출하는 방법을 무엇이라 하는가? 

> 다중 대치법

 

24 보기의  (  ) 에 들어갈 말은 무엇인가? 

- 분석변수의 수가 많아지면 데이터의 예측/분류 모형이 변수와 데이터에 맞추게 되는 (과적합) 이 발생할 가능성이 커진다.

- 분석변수의 차원을 줄여서 분석 모형을 만들면 (과적합) 발생 가능성을 줄일 수 있다. 

> 과적합

 

25 보기에서 설명하고 있는 변수변환 방법은 무엇인가? 

각 변수의 값을 다른 열로 바꾸어 값이 없는 경우는 '0' 으로 표현하고, 값이 있는 경우는 '1' 로 표현하는 방법

> 더미 변수화

 

26 보기에서 설명하고 있는 변수변환 방법은 무엇인가? 

데이터를 특정 구간으로 바꾸는 척도법으로 정규화 기법을 적용할 수 있다.

> 스케일링

 

27 다음은 최대-최소 정규화를 위한 수식이다. (  ) 안에 들어갈 알맞은 말은? 

최대-최소 정규화 = 변수값 - (  ) /  최대값  -  최소값

> 최소값

 

28 다음은 Z-점수 정규화를 위한 수식이다.   (   ) 안에 들어갈 알맞은 말은?

Z = 변수값 - 평균 / (     ) 

> 표준편차

 

29 다음 그래프처럼 데이터의 분포가 왼쪽으로 치우쳐져 있을때 평균, 중앙값, 최빈값 을 A, B, C 에 순서대로 나열하세요

 

A : 최빈값

B : 중간값

C : 평균 

 

30 보기에서 설명하는 것은 무엇인가?

mxn 크기의 데이터 집합에 대해 mxm 크기의 직교행렬(Orthogonal Matrix), Sum 은 mxn 크기의 대각행렬 (Diagonal Matrix) , n x n 크기의 직교행렬로 분해하여 유사한 정보를 유지하면서도 데이터의 차원을 축소하는 기법

 

 

 

 

Chapter 02 분석 모형 구축과 평가

* 핵심포인트 : 신뢰수준, 정보획득, 지니지수, 분산, 이항분포, 배깅, 편향, 오차역전파, 렐루, SVM, 오토인코더, 지지도, 신뢰도, 향상도

 

Section 01 분석 모형 구축

01 분석 모형 선정

1) 분석 모형 선정 필요성

- 의사결정

- 불확실성 해소

- 요약

- 인과관계 파악

- 예측

 

* 빅데이터 분석 근본 목적 : 과거의 데이터를 토대로 원인에 대해 분석하고 그 결과로 미래를 예측하는 것이다.

> 데이터는 후행성 성격을 지니지만 선행성의 성격도 가지고 있다.

> 사람들이 포털에서 검색하는 것은 무언가를 알고 싶기 때문이며 검색키워드라는 후행성 데이터로 '왜 사람들이 그것을 알고 싶어할까?' 라는 분석을 통해 미래에 일어날 일을 예측할 수 있다. 

 

2) 분석 모형 선정 프로세스

(1) 문제요건 정의 및 비즈니스 이해에 따른 대상 데이터 선정과 분석 목표/조건 정의

(2) 데이터 수집, 정리 및 도식화

(3) 데이터 전처리 (데이터 정제, 종속/독립변수 선정, 데이터 변환, 데이터 통합, 데이터 축소 등) 

(4) 최적의 분석 모형 선정

 

02 분석 모형 정의

1) 분석 모형 정의와 종류

(1) 예측 분석 모형

(2) 현황 진단 모형

(3) 최적화 분석 모형

 

2) 분석 모형 정의를 위한 사전 고려사항

(1) 상향식 접근

(2) 하향식 접근

 

03 분석 모형 구축 절차

1) 분석 시나리오 작성

2) 분석 모형 설계

(1) 분석 모형 설계 시 사전 확인 사항

(2) 분석 모델링 설계와 검정

(3) 분석 모델링에 적합한 알고리즘 설계

(4) 분석 모형 개발 및 테스트

 

3) 분석 모델링 설계와 검정 - 분석 목적에 기반한 가설검정 방법

(1) 유의수준 결정, 귀무가설과 대립가설 설정

(2) 검정통계량의 설정

(3) 기각역의 설정

(4) 검정통계량 계산

(5) 통계적인 의사걸졍 (가설검정) 

 

4) 분석 모델링 설계와 검정 - 추정 방법에 대한 기술 검토 

 

04 분석 기법 개요

1) 학습 유형에 따른 데이터 분석 모델

(1) 지도학습

(2) 비지도학습

(3) 준지도학습 

(4) 강화학습

 

2) 데이터 분석 알고리즘과 분야 

 

05 회귀분석

1) 선형회귀분석

(1) 단순 선형회귀분석

(2) 다중 선형회귀분석

 

2) 로지스틱 회귀분석 

(1) 단순 로지스틱 회귀분석

(2) 다중 로지스틱 회귀분석

 

3) 회귀분석의 장단점

 

06 의사결정나무

1) 의사결정나무의 종류

(1) 분류나무

(2) 회귀나무

 

2) 의사결정나무의 분석 과정

(1) 변수선택

(2) 의사결정나무 형성

(3) 가지치기

(4) 모형 평가 및 예측

(5) 가지치기

(6) 타당성 평가

(7) 해석 및 예측

 

3) 의사결정나무의 대표적 알고리즘

(1) CART (Classification and Regression Trees) 

(2) C4.5 / C5.0 

(3) CHAID (Chi-squared Automatic Interaction Detection) 

(4) 랜덤 포레스트 

 

4) 의사결정나무의 장단점

 

07 인공신경망

1) 인공신경망의 특징

2) 인공신경망의 발전

(1) 기존 신경망 다층 퍼셉트론이 가진 문제

(2) 딥러닝 의 등장

 

3) 인공신경망의 원리

 

4) 학습

(1) 손실 함수

(2) 평균제곱 오차

(3) 교차 엔트로피 오차

(4) 학습 알고리즘

(5) 오차 역전파

(6) 활성(활성화) 함수

(7) 과대적합(과적합, Overfitting) 

 

5) 딥러닝 모델 종류

(1) CNN, Convolutional Neural Network

(2) RNN, Recurrent Neural Network

(3) LSTM, Long Short-Term Memory Network

(4) Autoencoder

(5) GAN (Generative Adversarial Network) 

 

6) 인공신경망의 장단점

 

08 서포트벡터머신

1) SVM의 특징

2) SVM의 장단점

 

09 연관성분석

1) 연관규칙 (Association Rule) 순서

(1) 데이터 간 규칙 생성

(2) 어떤 규칙이 데이터 특성에 부합되는지 기준 설정

(3) 규칙의 효용성 평가

 

2) 아프리오리 (Apriori) 알고리즘

 

3) 연관성분석의 장단점

 

10 군집분석

1) 군집분류 시 기본 가정

 

2) 군집분석의 척도

(1) 유클리드 거리

(2) 맨하탄 거리

(3) 민코프스키 거리

(4) 마할라노비스 거리

(5) 자키드 거리

 

3) 군집분석의 종류

(1) 계층적 군집분석

(2) 비계층적 군집분석 (분할적 군집) 

 

4) 군집분석의 장단점

 

 

 

 

Seciton 02 분석 모형 평가

평가 지표

1) 지도학습 - 분류모델 평가 지표

- ROC, AUC

 

2) 지도학습 - 회귀모델 평가 지표

- SSE (Sum Squared Error) 

- MSE (Mean Squared Error) 

- RMSE (Root Mean Squared Error) 

- MAE (Mean Absolute Error) 

- R2

- Adjusted R2

- MSPE (Mean Square Percentage Error) 

- MAPE (Mean Absolute Percentage Error) 

- RMSLE (Root Mean Squared Logarithmic Error) 

- AIC (Akaike Information Criterion) 

- BIC (Bayes Information Criteria) 

 

3) 비지도학습 - 군집분석 평가 지표 

- Silhouette 계수 

- Dunn Index 

 

 

분석 모형 진단

1) 정규성 가정 

2) 잔차 진단 

 

k-폴드 교차검증

 

적합도 검정

1) 카이제곱 검정

2) 콜모고로프 스미르노프 검정 

 

과대적합 방지

1) 모델의 낮은 복잡도 

2) 가중치 감소 

3) 편향-분산 트레이드오프 

 

매개변수 최적화

1) 확률적 경사 하강법 (Stochastic Gradient Descent) 

2) 모멘텀 (Momentum) 

3) AdaGrad (Adaptive Gradient) 

4) Adam (Adaptive Moment Estimation) 

5) 초매개변수 (하이퍼파라미터, HyperParameter) 최적화 

- 학습률, 미니배치 크기, 훈련반복 횟수 (Epoch), 이터레이션 (Iteration), 은닉층 (Hidden Layer) 수 

 

분석 모형 융합

1) 앙상블 학습 

- 배깅, 부스팅, 랜덤포레스트 

 

2) 결합분석 모형

 

 

최종모형 선정

1) 회귀모형에 대한 주요 성능평가지표 

2) 분류모형에 대한 주요 성능평가지표 

3) 비지도학습 모형에 대한 주요 성능평가지표 

(1) 군집분석

(2) 연관분석 

 

Part02 파이썬 분석

Chapter 01 파이썬 프로그래밍

 

Section 01 파이썬 프로그래밍 기초 

파이썬 개요

 

 

변수, 데이터타입, 연산자

a = 1

print(a) 

b=5

a=b

print(a) 

 

 

조건문과 반복문

 

 

리스트, 튜플, 딕셔너리

a=[]

b=[1,2,3]

c=['사과', '오렌지', '딸기', '포도', '바나나']

d=[1,2,'python','programming']

 

a=[1,2,3,4,5]

print(a) 

print(a[0],a[-1],a[0]+a[2]) 

 

a=[1,2,3]

b=[4,5,6]

 

a=['a','b','c']

a.append('d') 

print(a)

a.insert(1, 'aa') 

 

a = ['a','b','c']

a[2] = 'f'

print(a) 

 

a = ['a','b','c','d','e']

a.reverse()

print(a) 

print(a.index('b'))

a.sort()

print(a) 

print(a.index('b')) 

 

a=[10,20,30,40,50,30]

print(a.count(30)) 

a.remove(30) 

print(a) 

 

a = ['a','b','c']

for x in a: 

    print(x, end = '  ')

 

scores = [[] [] [] [] []]

 

 

t = ('a', 'b', 'c')

 

print(t[0]) 

dic1 = {1:'a',2:'b'}

 

dic.keys()

dic.values() 

dic.items()

 

 

함수와 라이브러리 (모듈, 패키지) 

def sum(x,y,) : 

  return x+y

 

!pip list

 

 

 

 

 

 

 

 

 

 

 

Section 02 파이썬으로 데이터 다루기

넘파이 배열 다루기


import numpy as np

ar1 = np.array([1,2,3,4,5])

ar2 = np.array([[1,2,3],[1,2,3]])

 

import numpy as np

ar3 = np.random.randn(3) 

ar4 = np.random.randn(2,3) 

 

print(ar3) 

print(ar4) 

 

 

 

판다스 데이터프레임

import pandas as pd

sr1 = pd.Series([10,2,3,4,])

 

print(sr1) 

 

sr1 = pd.Series([10,3,21]) 

print(sr1) 

sr1 = pd.Series([1,2,3,4], index=['a','b','c']) 

 

sr1 =  pd.Series([10,2,3,1,4], index=['a',...]) 

 

sr1[1:5]

 

import pandas as pd 

df1 = pd.DataFrame([[][]) 

 

dict = {'a': [1,1,1,1], 

'b': [2,2,2,2], 

'c': [3,3,3,3]}

 

df1 = pd.DataFrame(dic1) 

print(df1) 

 

df.rename(columns = {'fruit': '과일'}) 

 

df1.shape 

df. value_counts() 

 

df[['a','b']].corr() 

 

df1.loc['S05']

 

df2 = df1.drop(0) 

 

df2= df1.sort_values(by='기말', ascending=True) 

 

 

 

 

 

 

데이터 전처리

- 파생변수 생성 

df['a'] = df['b'] + df['c']

 

import numpy as np 

mid_avg = np.mean(df['중간']) 

np.std() 

 

 

df_cls_grp = df.grouby(df['a'])

df_cls.grp.mean()

 

df['중간'].groupby(df['cls']).count()

df['퀴즈'].apply(np.sqrt) 

 

df.isnull()

df.notnull()

 

df_new = df.dropna(axis=0)

df_new = df['토론'].dropna()

 

df_1QR = df['기말'].quantile(0.25) 

df_3QR = df['기말'].quantile(0.75)

df_IQR = df_3QR - df_1QR 

 

 

Chapter 02 파이썬 제 1유형 : 데이터 전처리

Section 01 데이터 탐색

분석기사 실기 가이드라인

탐색적 데이터 분석 (EDA) 

파이썬 데이터 탐색

import numpy as np

import pandas as pd

import matplotlib.pyplot as plt

df = pd.read_csv('asdf.csv') 

df

df.info() 

df['survived'] = df['survived'].astype(str) 

df.info() 

 

grouped = df.groupby('Pclass') 

grouped.size() 

 

data_0 = df[df['a']==0]

data_1 = df[df['a']==1]

 

fig, ax =  plt.subplots() 

ax.boxplot([data_0, data_1]) 

plt.show() 

 

grouped = df.groupby('sex') 

print(grouped.size())

 

 

 

Section 02 데이터 전처리 개요

데이터 전처리 유형

데이터 변환

차원축소 : PCA(주성분분석) 

결측치 처리

df_1 = df.dropna(axis=0) 

print(df_1.isnull().sum().sum())

df_1.shape

 

print(df['age'].isnll().sum())

age_mean  = df['age'].mean()

df['age'].fillna(age_mean, inplace=True) 

print(df['age'].isnull().sum()) 

 

from scipy.stats import mode 

print(df['embarked'].isnull().sum()) 

embarked_mode= df['embarked'].mode() 

 

df.groupby('sex')['age'].mean()

df.groupby('Pclass')['age'].mean()

 

이상치 처리

plt.boxplot(df['a'])

plt.show( )

Q1 = df['a'].quantile(.75) 

Q2 = df['b'].quantile(.5) 

Q3 = df['c'].quantile(.25) 

 

 

평활화 (Smoothing) 

df['sma'] = df['value'].rolling(10).mean()

plt.plot(df['value']) 

plt.plot(df['sma']) 

 

df['ewm'] = df['value'].ewm(10).mean() 

plt.plot(df['value']) 

 


Chapter03 파이썬 제2유형 : 데이터 분석

데이터 분석을 수행하고 그 결과를 도출하는 제2유형 작업은 학습유형에 따라 지도학습, 비지도학습, 준지도학습, 강화학습으로 구분되며, 각 유형에 따라 다양한 분석모델이 있습니다. 빅데이터분석기사 실기시험 대비를 위해서 지도학습과 비지도학습의 기본 분석모델을 중심으로 학습합니다.

 

Section01 빅데이터 분석 과정

01 빅데이터 분석 과정 이해

 

import numpy as np

import pandas as pd

import sklearn 

 

# 의사결정나무 분류모델을 위한 패키지 임포트 

from sklearn.tree import DecisionTreeClassifier 

 

# 학습 및 테스트 데이터셋 분리를 위한 패키지 임포트

from sklearn.model_selection import train_test_split

 

df = pd.read_csv("asdf.csv")

 

df.shape

df.info()

df.describe()

 

df['species'].replace({'setosa': 0, 'versicolor': 1, 'virginica': 2}, inplace = True)

 

X = df[['A','B','c','D']]

y = df['Y']

 

x_train, x_test, y_train, y_test = train_test_split(x, y, test_size = 0.2, random_state = 11) 

 

print(x_train.shape)

print(x_test.shape) 

print(y_train.shape)

print(y_test.shape) 

 

dt =DecisionTreeClassifier(random_state=11)

dt.fit(X_train, Y_train) 

 

pred = dt.predict(X_test)

 

from sklearn.metrics import accuracy_score 

acc = accuracy_score(y_test, pred) 

 

print(acc)

 

 

sklearn.preprocessing 

sklearn.feature_selection

sklearn.feature_extraction

sklearn.model_selection

sklearn.metrics

sklearn.tree

sklearn.neighbors

sklearn.svm

sklearn.ensemble

sklearn.linear_model

sklearn.naive_bayes

sklearn.cluster

 

Classification 

- DecisionTreeClassifier 

- RandomForestClassifier

- GradientBoostingClassifier

- GaussianNB

- SVC

 

Regression

- LinearRegression

- Ridge

- Lasso

 

TP (True Positive) 

FN (False Negative) 

FP (False Positive) 

TN (True Negative) 

 

from sklearn.metrics import confusion_matrix

confusion_matrix(y_test, pred) 

 

from sklearn.metrics imporrt classification_report

confusion_matrix(y_test, pred) 

 

 

from sklear.metrics import classificatio_report

rpt = classificatin_report(y_test, pred) 

 

 

 

import numpy as np 

import pandas as pd 

import sklearn

 

from ssklearn.tree import DecisionTreeClassifier

from sklearn.model_selection import train_test_split

 

 

df = pd.read_csv("sadf.csv")

 

df 

df.info()

df.describe()

 

d_mean = df["age"].mean()

df["age"].fillna(d_mean, inplace=True) 

 

d_mode = df["Embarked"].mode()[0]

df["embarked"].fillna(d_mode, inplace=True) 

 

from sklearn.preprocessing import LabelEncoder 

df["sex"] = LabelEncoder().fit_transform(df["Sex"])

 

from sklearn.preprocessing import LabelEncoder 

df["embarked"] = LabelEncoder().fit_transform(df["Embarked"])

 

df["FamilySize"] = df["SibSp"] + df["Parch"]

 

X = df[['asdf','asdf','asdf','asdf'']]

Y = df["Survived"]

 

X_train , X_test, Y_train, Y_test = train_test_split(X, y, test_size = 0.2, random_state = 11) 

 

print(X_train.shape) 

... 

 

 

dt = DecisionTreeClassifier(random_state=11) 

dt.fit(x_train, y_train) 

pred = dt.predict(x_train) 

 

from sklearn.metrics import accuracy_score

acc = accuracy_score(y_test, pred) 

print(acc) 

 

df.info()

 

df.describe()

 

from sklearn.preprocessing import MinMaxScalar

scaler = MinMaxScaler()

df[['a']] = scaler.fit_transform( df[['a']] )

 

x=df[]

y=df[]

 

x_train , x_test , y_train , y_test = train_test_split(x, y, test_size = 0.2 , random_state = 11) 

 

print(x_train.shape) 

print(x_test.shape) 

 

knn = KNeighborClassifier(n_neighbors = 3) 

knn.fit(x_train, y_train) 

 

pred = knn.predict(x_test) 

 

from sklearn.metrics import accuracy_score

acc = accuracy_score(y_test, pred) 

print(acc) 

 

 

dt = DecisionTreeClassifier(random_state = 11) 

dt.fit(x_train, y_train) 

pred = dt.predict(x_test) 

 

knn = KNeighborsClassifier(n_neighbors = 5) 

knn.fit(x_train, Y_train) 

pred = knn.predict(x_test) 

fro sklearn.metrics import confusion_matrix 

 

 

 

 

from sklearn.svm import SVC

from sklearn.model_selection import train_test_split

 

df = pd.read_csv("aa.csv")

 

df

 

d_mean =

 

 

sv = svm.SVC(kernel = 'rbf')

sv = svm.SVC(kernel = 'linear', C=1, gamma = 0.1) 

sv = svm.SVC(kernel = 'rbf', C = 0.1, gamma = 0.1) 

 

 

import numpy as np

import pandas as pd 

 

from sklearn.linear_model import LogisticRegression

from sklearn.model_selection import train_test_split

 

lr = LogisticRegression()

lr.fit(x_train, y_train) 

 

pred = lr.predict(x_test) 

from sklearn.metrics import accuracy_score

acc = accracy_score(y_test, pred) 

print(acc) 

 

 

from sklearn.ensemble import RandomForestClassifier

from sklearn.model_selection import train_test_split 

 

import numpy as np

import pandas as pd

 

from sklearn.ensemble import RandomForestClassifier

 

 

d_mean = df["age"].mean()

df["age"].fillna(d_mean, inplace=True) 

d_mode = df["embarked"].mode()[0]

 

from sklearn.preprocessing import LabelEncoder

 

df["sex"] = LabelEncoder().fit_transform(df["SEX"])

 

 

rf = RandomForestClassifier(n_estimators = 50, max_depth = 3, random_state = 20) 

rf.fit(x_train, y_train) 

 

pred = rf.predict(x_test) 

 

 

 

 

 

 

 

사이킷런 패키지 구성

분석모델 성능 평가 방법

 

Section02 지도학습 - 분류

의사결정나무를 이용한 분류 문제 해결

KNN을 이용한 분류 문제 해결

SVM을 이용한 분류 문제 해결

로지스틱 회귀를 이용한 분류 문제 해결

랜덤 포레스트를 이용한 분류 문제 해결

 

 

 

 

Section03 지도학습 - 회귀 (예측) 

*핵심포인트 : 지도학습(예측) , 선형회귀 , 다중선형회귀

 

단순 선형 회귀분석을 이용한 예측 문제 해결

 

import numpy as np

import pandas as pd

import sklearrn 

import matplotlib.pyplot as plt 

 

from sklearn.linear_model import LinearRegression

from sklearn.model_selection import train_test_split 

 

df.info()

 

df.plot(kind='scatter', x='cylinders', y='mpg') 

df.plot(kind='scatter', x='displacement', y='mpg') 

plt.show()

 

df.plot(kind='scatter', x='horsepower', y='mpg') 

plt.show()

 

df.plot(kind='scatter', x='weight', y='mpg') 

df.plot(kind='scatter', x='acceleration', y='mpg') 

 

df = df.dropna(axis=0) 

x = df[["weight"]]

y = df["mpg"]

 

xtrain, xtest, ytrain, ytest = train_test__split(x, y, test_size = 0.2, random_state = 10) 

print(x_train.shape) 

print(x_test.shape) 

 

lr = LinearRegression()

lr.fit(x_train, y_train) 

 

print("기울기 a: ", lr.coef_) 

print("y절편 b: ", lr.intercept_)

 

pred = lr.predict(X_test) 

 

from sklearn.metrics import r2_score

score = r2_score(y_test, pred) 

print(score) 

 

pred = lr.predict(x_train) 

from sklearn.metrics imort r2_score

score = r2_score(y_train, pred) 

print(score) 

 

import numpy as np 

import pandas as pd

import sklearn 

import matplotlib.pyplot as plt 

 

from sklearn.linear_model import LinearRegression 

from sklearn.model_selection import train_test_split

df = pd.read_csv("csvsd.csv") 

df = df.dropna(axis=0) 

x =  df[['horsepower']]

y = df['mpg']

 

x_train, x_test, y_train, y_test = train_test_split(x, y, test_size = 0.2, random_state = 10) 

 

lr = LinearRegression()

lr.fit(x_train, y_train) 

 

print('기울기 a: ", lr.coef_)

print('y절편 b: ", lr.intercept_) 

 

pred = lr.predict(x_test) 

 

from sklearn.metrics import r2_score 

score = re_score(y_test, pred) 

print(score) 

 

corr = df.corr(method = 'pearson') 

 

 

 

 

 

 

 

 

다중 선형 회귀분석을 이용한 예측 문제 해결

import numpy as np 

import pandas as pd

import sklearn 

import matplotlib.pyplot as plt 

 

from sklearn.linear_model import LinearRegression

from sklearn.model_selection import train_test_split

 

 

df = pd.read_csv("asdfwef.csv") 

 

 

df.info()

df = df.dropna(axis=0)  # 행 제거 

df = df.drop("ocean_rpximity", axis = 1)  # 열 제거 

 

corr = df.corr(method = "pearson") 

print(corr) 

 

 

x = df.drop('median_house_value', axis = 1) 

y = df['median_house_value']

 

x_train, x_test, y_train, y_test = train_test_split(x, y, test_size = 0.3, random_state = 42) 

 

print(x_train.shape) 

 

 

lr = LinearRegression()

lr.fit(x_train, y_train) 

 

 

print("기울기 : ", lr.coef_) 

print('y절편 : ", lr.intercept_) 

 

 

pred = lr.predict(x_test) 

 

from sklearn.metrics import r2_score

score = r2_score(ytest, pred) 

print(score) 

 

pred = lr.predict(x_train) 

from sklearn.metrics import r2_score

score = r2_score(ytrain, ped) 

print(score) 

 

 

 

 

 

 

 

 

 

 

의사결정나무를 이용한 예측 문제 해결

import numpy as np

import pandas as pd

import sklearn 

import matplotlib.pyplot as plt 

 

from sklearn.tree import DecisionTreeRegressor 

from sklearn.model_selection import train_test_split

 

df = pd.read_csv("asdfasdf.csv") 

 

df

 

df.info()

 

df = df.dropna(axis=0) 

df = df.drop(ocean_proximity", axis=1) 

 

corr = df.corr(method='pearson') 

print(corr) 

 

x = df.drop('median_house_value', axis=1) 

y = df['median_house_value'] 

 

print(x_train.shape) 

print(x_test.shape) 

 

dtr = DeecisionTreeRegressor(max_depth = 3, random_state = 42) 

dtr.fit(x_train, y_train) 

 

pred =  dtr.predict(x_test) 

 

from sklearn.metrics import mean_squared_error

mse = mean_squared_error(y_test, pred) 

print(mse) 

 

pred = dtr.predict(x_Train) 

from sklearn.metrics import mean_squared_error

mse = mean_squared_error(y_train, pred) 

print(mse) 

 

 

 

 

 

 

 

 

 

 

 

랜덤포레스트를 이용한 예측 문제 해결 

import numpy as np

import pandas as pd 

import sklearn 

import matplotlib.pyplot as plt

 

from sklearn.ensemble import RandomForestRegressor

from sklearn.model_selection import train_test_split 

 

df = pd.read_csv("asdf.csv") 

 

df 

 

df.info() 

 

df = df.dropna(axis=0) 

df = df.drop("ocean_proximity", axis=1) 

 

corr = df.corr(method="pearson") 

print(corr) 

 

x = df.drop(median_house_value", axis=1) 

y = df['median_house_value'] 

 

x_Train_x_test, y_train, y_test = train_test_split(x, y, test_size = 0.3, random_state = 42) 

 

rfr = RandomForestRegressor(max_depth=3, random_state = 42) 

rfr.fit(X_train, y_train) 

 

pred = rfr.predict(x_test) 

 

from sklearn.metrics import mean_squared_error

mse = mean_squared_error(y_test, pred) 

print(mse) 

 

pred = rfr.predict(x_train) 

 

from sklearn.metrics import mean_squared_error

mse = mean_squared_error(y_train, pred) 

print(mse) 

 

 

 

 

 

Section04 비지도학습 

군집분석을 이용한 문제 해결

import numpy as np

import pandas as pd 

import matplotlib.pyplot as plt

 

from sklearn.cluster import KMeans 

 

df = pd.read_csv('asdfasef.csv') 

df

 

df.info()

 

 

from sklearn.preprocessing import LabelEncoder

df['yyy'] = LabelEncoder().fit_transform(df['yyy'])

df.heaad() 

 

 

df_copy = df

 

import  seaborn as sns 

from matplotlib import pyplot as plt 

from mpl_toolkits.mplot3d import Axes3D

from mpl_toolkits.mplot3d import proj3d

sns.pairplot(df, hue='species') 

plt.show() 

 

cluster1 = KMeans(n_clusters=3, n_init=10, max_iter = 500, random_state = 42, algorithm = 'auto') 

cluster1.fit(df) 

KMeans(max_iter = 500, n_clusters=3, random_state=42) 

 

cluster_center = cluster1.cluster_centers_

cluster_prediction = cluster1.predict(df) 

print(pd.DataFrame(cluster_center)) 

print(cluster_prediction) 

 

df_copy['cluster'] = cluster_prediction

df_copy 

 

scope = range(1,10) 

inertias = []

 

for k in scope: 

   model = KMeans(n_clusters=k) 

   model.fit(df) 

   inertias.append(model.inertia_) 

 

plt.figure(figsize=(4,4)) 

plt.plot(scope, inertias, '-o')

plt.xlabel('number of clusters, k') 

plt.ylabel('inertia') 

plt.show() 

 

 

 

 

 

연관분석을 이용한 문제 해결

 

 

from mlxtend.frequent_patterns import apriori, association_rules 

 

from google.colab import drive

drive.mount('/content/drive') 

df = pd.read_csv('/content/drive/MyDrive/Colab Notebooks/retail_dataset.csv', sep=',')

 

df.info()

 

items = set()

for col in df: 

   items.update(df[col].unique())

 

itemset = set(items) 

encoding = []

for index, row in df.iterrows(): 

   rowset = set(row) 

   labels = {}

   dismatching =list(itemset - rowset) 

   matching = list(itemset.intersection(rowset))

   for i in dismatching: 

        labels[i] = 0 

   for j in matching: 

        labels[j] = 1

   encoding.append(labels) 

encoding[0]

result = pd.DataFrame(encoding) 

 

result 

 

freq_items = apriori(result, min_support = 0.2, use_colnames = True) 

 

rules = association_rules(freq_items, metric = "confidence", min_threshold=0.6) 

rules.head() 

 

 

 

 

 

파이썬 모의고사

학습방향 

- 출제 유형을 반영한 모의고사 문제로 실제 시험에 대비하세요

- 빅데이터분석기사 실기 시험은 필답형 10문제, 제1유형 3문제, 제2유형 1문제가 출제되고 있습니다.

- 이기적 스터디 카페 (cafe.naver.com/yjbooks) 에서 다양한 유형의 문제들을 추가로 제공하고 있으니 꼭 확인해보세요.

 

Section01 모의고사 작업형 1회

from google.colab import drive 

drive.mount('/content/drive') 

import pandas as pd

import numpy as np 

df = pd.read_csv('/content/drive/MyDrive/Colab Notebooks/airquality.csv') 

df.info()

print(df['ozone'].isnull().sum())

ozone_mean = df['ozone'].mean()

df['ozone'].fillna(0, inplace=True)

 

 

 

Section02 모의고사 작업형 2회

from google.colab import drive

drive.mount('/content/drive') 

import numpy as np 

import pandas as pd

import sklearn 

import matplotlib.pyplot as plt 

 

cur_dir = '/content/drive/MyDrive/Colab Notebooks/'

ploan = pd.read_csv(cur_dir + "Bank_Personal_Loan_Modelling.csv") 

 

ploan.shape 

 

ploan.head(10) 

 

ploan_processed = ploan.dropna().drop(['ID','ZIP CODE'], axis=1, inplace=False) 

 

X= ploan_processed.drop(['Personal Loan'], axis=1) 

y = ploan_processed['Personal Loan']

 

from sklearn.model_selection import train_test_split 

 

X_train, X_test, y_train, y_test = train_test_split(X, y, stratify=y, train_size = 0.7 , test_size = 0.3, random_state = 1234) 

 

print(X_trai

 

import sklearn.preprocessing as preprocessing

preprocessor = preprocessing.Normalizer() 

 

X_train  = preprocessor.fit_transform(X_train) 

X_test = preprocessor.transform(X_test) 

 

from sklern import metrics 

from sklearn.metrics import confusion_matrix

from sklearn.metrics import accuracy_score 

from sklearn.neighbors import KNeighborsClassifier

 

training_accuracy = []

tst_acucracy - []

 

neighbors_setting = range(1,25) 

for n_neighborsin neighbors_setting: 

clf = KNeighborsClassifier(n_neighbors_n_neighbors) 

clf.fit(X_trin, y_train) 

training_accuracy.append(clf.score(X_train, y_train)) 

test_accuracy.append(clf.score(X_test, y_test)) 

plt.plot(neighbors_settings, training_accuracy, label="Training Accuracy") 

plt.plot(neighbors_settings, test_accuracy, label = "Test Accuracy") 

plt.ylabel("Accuracy") 

plt.xlabel("n_neighbors") 

plt.legend()

 

 

 

 

 

 

 

 

 

반응형
LIST