67
2015 수수수 수수수수 Data Science 수수: 수수수 수수수수 수수수 2010251004 수수수 2010251005 수수수 2010251022 수수수

Web viewit업계에서는 2~3년 마다 유행어가 나타나는데, 앞선 키워드 ‘클라우드’가 완전히 정착한 후 다음으로 가장 많이 주목 받는

Embed Size (px)

Citation preview

Page 1: Web viewit업계에서는 2~3년 마다 유행어가 나타나는데, 앞선 키워드 ‘클라우드’가 완전히 정착한 후 다음으로 가장 많이 주목 받는

2015 수학과 학부연구

Data Science

수업: 정도현

지도교수 이정자

2010251004 박영철

2010251005 조창욱

2010251022 김은정

2010251037 강민석

목차

Page 2: Web viewit업계에서는 2~3년 마다 유행어가 나타나는데, 앞선 키워드 ‘클라우드’가 완전히 정착한 후 다음으로 가장 많이 주목 받는

Ⅰ. 서론

Ⅱ. 본론

1. Data Science 가 되기 위한 8 가지 단계

2. HTML & CSS3. Python

① Code Academy

② Python 을 이용한 문제풀이

4. R

5. Doing Data Science 1 장, 2 장, 3 장 요약

6. Doing Data Science 문제풀이

Ⅲ. 결론 및 제언

Ⅳ. 출처

Ⅴ. 참고 문헌

I. 서론

IT 업계에서는 2~3 년 마다 유행어가 나타나는데, 앞선 키워드 ‘클라우드’가 완전히 정착한 후 다음으로 가장 많이 주목 받는 키워드는 ‘빅데이터’ 이다. 그래서 우리는 빅데이터에 관한 공부를 시작하기로 했다. 이에 앞서 빅데이터가 무엇을 의미 하는 것이고 어떤 활용 점과 특징이 있는지 알아 볼 필요가 있었다. 왜냐하면 빅데이터를 단순히 크기가 큰 데이터라고 생각하고 들어오면 연구의 방향을 잡기가 쉽지 않기 때문이다. 사실 ‘빅데이터’란 단어의 뜻과 기원은 명확하지 않다. 또한 ‘

Page 3: Web viewit업계에서는 2~3년 마다 유행어가 나타나는데, 앞선 키워드 ‘클라우드’가 완전히 정착한 후 다음으로 가장 많이 주목 받는

빅데이터’의 정의도 무엇인지 내려지지 않고 각각 다른 정의로 의미만 파악 할 수 있는 정도이다. 일반적으로는 “빅데이터란 기존의 일반적인 기술로는 관리하기 곤란한 대량의 데이터군이다.” 라고 말할 뿐이다. 또한 IT 업체인 IDC 에서는 정의를 “클라우드 컴퓨팅과 대형 메모리 모델의 변화를 포함한 하드웨어 기능의 변화와 플랫폼 변경에 따른 데이터 처리 능력과 비용을 극대화하기 위한 기술 범위의 발현이다.” 라고 하였다. 간단히 말해 큰 볼륨의 데이터를 기존과는 다른 방식으로 신속히 처리하는 기술이라 말할 수 있다. 단순히 데이터의 크기만을 의미하는 것이 아니라 데이터 처리 속도, 데이터 관리 인프라 등 여러 사항을 만족했을 때, 데이터를 빅데이터라 부를 수 있는 것이다.

그럼 빅데이터는 어떤 특성을 가지고 있을까? 보통 빅데이터의 특성을 말할 때 4V 를 언급한다.

Volume : 데이터의 크기를 말하며, 축적되는 데이터의 크기가 수직 확장성의 물리적 한계를 초과하는 거대한 데이터 크기.

Velocity : 데이터 변화와 축적, 분석 속도를 의미하는데, 데이터의 변화 속도보다 더 빠른 결정이 이루어지는 것.

Variety : 데이터의 다양성으로 다양한 형식과 채널.

Variability : 데이터의 변동성을 의미하는 것으로 데이터가 고정된 패턴으로 축적되고 특정 규격이나 형식을 갖고 있지만, 많은 옵션과 변수에 의해 분석과 해석이 쉽지 않은 것.

이러한 4V 관점에서 빅데이터 처리를 위한 빅데이터 플랫폼 시스템은 더 통찰력 있는 분석 시스템이 요구되며 상당히 높은 수준의 민첩성을 필요로 한다. 또한, 엄청난 규모의 데이터 처리에 필요한 컴퓨팅 자원의 규모 있는 확장성도 중요하다. 그리고 데이터 일관성, 무결성과 속도, 유연성이 필수적으로 균형을 이루어야 빅데이터의 가치가 들어나게 될 것이다.

여기서 “왜 빅데이터가 핫 이슈가 되었을까?”라는 의문의 답을 찾을 수 있게 된다. 그 이유로 첫째, 새로운 형태의 원천 데이터가 기하급수적으로 만들어지고 있어서이다. 기존에는 데이터로서 생성이 필요 없던 데이터가 이제는 데이터로 생성되기 때문이며, 새로운 목적과 서비스를 위해 데이터들이 생성되기 때문이기도 하다. 둘째, 디지털 데이터의 폭발적 증가이다. 아날로그 데이터의 디지털 데이터화 그리고 디지털 데이터의 구조화 하면서 증가되기 때문이다. 셋째, 디지털 데이터를 증가하게 하는 채널의 다양화와 새로운 채널의 출현이다. 디지털 데이터를 만들어 내는 센서나, 소셜 네트워크 같은 인터넷 서비스가 데이터를 늘리는 요인이다. 넷째, 기업 환경의 글로벌화와 변화이다. 글로벌화가 가속화되고 성장과 경쟁이 치열해지면서, 기업은 발 빠르게 상황에 대처하기 위해 다양한 환경 분석과 시나리오 기반의 경영시스템을 구축하게 되었다. 다섯째, 대용량 데이터의 축적과 빠른 데이터의 처리를 위해서이다.

이제 실제로 빅데이터의 사례를 보며 어떻게 적용되고 있는지 알아보자. 신제품 개발에 관련하여 기기의 이용 상황에 관한 데이터를 대량으로 취득하여 축적시킨 후 분석하면 그 다음 제품을 개발할 때 적절한 과제를 설정할 수 있다. 구입 후 유저가 기기를 사용하는 빈도는 어느 정도인지, 어떤 설정이나 기능을 좋아하는지에 대한 데이터를 자동적으로 취득하고 처리, 분석하면 전체적인 경향이나 문제점을 파악할 수 있기 때문이다. 이러한 과정을 통해 제조사는 편리한 기능이라고 생각해서 구비한 기능이 소비자에게는 전혀 소용이 없거나 과잉 성능이라는 것이 밝혀지기도 한다.

또한 음성인식 알고리즘의 품질 향상을 위한 데이터 활용으로 구글의 GOOG-411 가 있다. GOOG-411 은 각 국의 전화번호 안내 서비스이다. 이 서비스는 수입을 기대하기 어려운 비즈니스 모델이여서 어떻게 수익을 발생할 것인지 의문이 많았지만 구글은 서비스를 통해 사람들의 목소리 데이터를 모아 음성인식 알고리즘의 품질 향상을 꾀했다. 단기적인 수입보단 미래가치를 위해 효율적이고 대량의

Page 4: Web viewit업계에서는 2~3년 마다 유행어가 나타나는데, 앞선 키워드 ‘클라우드’가 완전히 정착한 후 다음으로 가장 많이 주목 받는

그리고 다양한 데이터를 수집하고 적용한 사례인 것이다.

이렇듯 점차 빅데이터의 영향력은 커지고 있다. 제품 개발, 프로그램 개발뿐만 아니라 SNS 를 통해 실시간으로 고객과 소통하기 위해선 적용하지 않으면 뒤처지기 때문에 경쟁을 위해 점차 확대되고 있다. 우리는 이런 빅데이터의 중요성을 사례를 통해 인식하고, 본격적으로 분석이 이루어 질 때 필요한 프로그램과 분석방법을 배우기 위하여 빅데이터 과학에 입문하였다.

Data Science 수업표

4월 11 일

수업계획 소개 및 데이터 과학을 배우기 위해 필요한 지식 과제 : HTML, Python

4월 18 일데이터 과학자가 되기 위한 8 가지 방법 이야기 및 필요한 웹 페이지 설명

과제 : 구글 파워서칭 강의 수강, Github 와 Wordpress 개설

4월 25 일Python 을 이용한 문제 풀이(프로젝트 오일러)

과제 : python 을 이용한 1000 이하의 소수의 합 프로그래밍 해서 Github 에 올리기

5월 2 일R 언어 입문 및 Doing data Science 1 장,2 장 공부

과제 : Data camp 와 에서 R 언어 배우기, 2 장 문제 풀어보기, 3 장 예습, R studio 설치

5월 9 일

Page 5: Web viewit업계에서는 2~3년 마다 유행어가 나타나는데, 앞선 키워드 ‘클라우드’가 완전히 정착한 후 다음으로 가장 많이 주목 받는

R Studio 사용법, R 언어를 이용해 2 장 문제 풀이 과제 : 3 장 예습, 진로에 관해 찾아보기

5월 16 일

R 언어를 이용해 2 장 문제 풀이, 알고리즘의 종류 과제 : 면담에서 질문할 것 준비 하기

5월 23 일

진로 상담

5월 26 일

개인 면담(다음 학기 스터디 방향)II. 본론

1. Data Science 가 되기 위한 8 가지 단계

   5 년 전, What is Web 2.0 란 제목의 글에서 Tim O'Reilly 는 "데이터는 차기 Intel Inside"가 될 것이라 했으며, 하버드 비즈니스 리뷰 (Harvard Business Review) 에서는 "21 세기 의 가장 섹시한 직업" 으로 데이터 과학자를 뽑아 대중들이 데이터 과학에 대한 많은 관심을 가지게 되었다. 이런 관심을 받는 데이터 과학자란 무엇 이며 그들이 하는 일은 정확히 무엇일까?

아래에서 DataCamp, 데이터 과학 학습 플랫폼 팀에 의해 작성된 데이터 과학자가 되기 위해서는 어떤 단계를 거쳐야 하는지 알아보자.

Step 1:  수학, 통계, machine learning 에 대한 지식을 가진다.

수학과 통계에 대한 지식이 부족하다면 Math Track of Khan academy 와 Linear Algebra by MIT OpenCourseware, statistics by Udacity 에서 온라인으로 제공하는 무료강의를 들을 수 있다. 또한 g Stanford 의 Andrew NG 와 John Hopkins 의 Practical Machine Learning 강좌를 Coursera에서 무료 제공한다.Ex> https://www.khanacademy.org/math

Step 2:  컴퓨터 코드를 배운다.

가장 기본이 되는 언어는 R 과 Python 언어로 이 또한 Datacamp 와 Codecademy, Google class 에서 인터넷 강좌를 제공한다. 이외에는 SAS, SPSS 등.. 에 대해 알아두면 좋다.

Ex> https://www.datacamp.com/courses/free-introduction-to-r

Step 3:  databases 에 대해 이해한다.

Page 6: Web viewit업계에서는 2~3년 마다 유행어가 나타나는데, 앞선 키워드 ‘클라우드’가 완전히 정착한 후 다음으로 가장 많이 주목 받는

MySQL, Postgres, MongoDB, Cassandra 등 의 데이터베이스 관리 시스템을 이해한다.

Ex> https://www.mysql.com/

Step 4:  데이터를 정리하고 시각화 및 보고서로 만드는 것을 마스터 한다.

Data wrangler 와 R tool 을 이용해 데이터를 정리하고Ggvis 와 Vega tool 을 통해 시각화시키고Tableau, Spotfire, R markdown 으로 자료를 쉽게 구분할 수 있게 만든다.

Step 5:  level up with big data

Hadoop, Map Reduce, Spark 에 대해 이해하고 big data 를 다뤄 본다.

Step 6:  연습하고 경험을 쌓으며 data scientists mentor 를 만나라.

대회에 참가하거나 Pet Project 를 수행하거나 데이터 과학자를 만나며 자기 실력을 키운다.

Data scientists mentor : Hiary Mason, David Smith, Nate Silver, dj patil

Step 7:  Internship 이나 직업을 가지며 경험을 쌓는다.

Amazon, Zipfian, Twitter 등 빅데이터를 다뤄 볼 수 있는 경험을 갖는다.

Step8: 커뮤니티에 속해라.

Data Tau, Kdnuggets, fivethirtyeight, datascience101, r-bloggers 등 커뮤니티에 가입해 정보를 이용, 공유한다.

2. HTML & CSSHTML 이란 Hyper Text Markup Language 의 약자이다. 여기서 Hypertext 는 링크를 포함한 텍스트를 의미하며 새로운 웹 페이지에 연결된 단어를 클릭하는 것은 hypertext 를 클릭하는 것을 뜻한다. markup language 란 단순 텍스트를 넘어서 더 많은 일을 하기 위한 프로그래밍 언어로 markup language 를 사용하면 이미지, 링크, 테이블, 리스트 등을 사용 할 수 있다. 그리고 HTML 은 우리가 배울 markup language 중 하나 이다. 또한 CSS 는 Cascading Style Sheets 를 뜻하며 웹 페이지를 예쁘게 꾸미는 역할을 한다. 우리가 볼 수 있는 모든 웹 페이지는 HTML&CSS 언어로 작성되어 있기에 Code academy 의 HTML & CSS 코스를 수강해 아래 내용을 배워 보았다.

Introduction to HTML

Page 7: Web viewit업계에서는 2~3년 마다 유행어가 나타나는데, 앞선 키워드 ‘클라우드’가 완전히 정착한 후 다음으로 가장 많이 주목 받는

<!DOCTYPE html> 브라우저가 어떤 언어를 읽을 것인지 알려주는 것이기에 항상 첫째 줄에 쓴다.

<html> html 의 시작을 알린다. 또한 반드시 닫히는 태그도 만들어야 한다!

<head> HTML 은 head 부분과 body 부분으로 나누어진다.

<title> Headings & Paragraphs </title> Title 을 적는다.

</head> Head 닫는 태그.

<body> body 여는 태그. 웹 화면에서 보이고 싶은 내용을 넣는다.

<h1>Head 1</h1> 제목(header)을 쓰는 것으로 가장 큰 h1 부터 가장 작은 제목크기인 h6 까지 있다.

<p>Pragreph</p> 단락(paragraph)으로 웹에 보이고 싶은 내용을 쓴다.

<a href> http://www.google.com</a> 명령어 사이의 주소 링크를 화면에 추가한다.

<img src="http://s3.amazonaws.com/codecademy-blog/assets/f3a16fb6.jpg" />화면에 이미지를 추가한다.

<a href=" http://www.google.com"> <img src="http://s3.amazonaws.com/codecademy-blog/assets/f3a16fb6.jpg" /></a>

이미지를 클릭하면 링크가 연결되게 하기.<!--I'm a comment!-->

화면에 나오지 않는 comment 달기.</body>

Body 닫는 태그.</html>

HTML 닫는태그

HTML Structure: Using Lists

리스트 만들기. Body 안에 작성한다.

<ol>은 oderlist 의 약자로 1,2,3,…순으로 리스트를 만든다. <h1>List of my favorite things</h1>

<ol><li>Raindrops on roses</li><li>Whiskers on kittens</li>

Page 8: Web viewit업계에서는 2~3년 마다 유행어가 나타나는데, 앞선 키워드 ‘클라우드’가 완전히 정착한 후 다음으로 가장 많이 주목 받는

<li>Bright copper kettles</li><li>Warm woolen mittens</li>

</ol>

<ul>은 unoderlist 의 약자로 기호를 사용해 리스트를 만든다.<h1>Alpabet</h1>

<ul><li>A</li><li>B</li><li>C</li><li>D</li>

</ul>

폰트 크기, 색상, 글씨체 설정하기 <p style="font-size:20px;color:blue;font-family:Arial">A truly spectacular paragraph!</p>

단락 크기 20px,파란색, Arial글씨체 설정하기

<h1 style=" color:green;font-size: 16px;font-family: Arial">Big title</h1>제목 크기 16px,초록색,Arial 글씨체 설정하기

<ol><li style="font-family: Arial; font-size:25px">This item is big Arial.</li><li style="font-family:verdana;Font-size:20px">This item is medium

Verdana.</li><li style="font-size:12px; font-family:impact">This item is small Impact.</li>

</ol>

배경화면 색 바꿔보기.

<body style="background-color:brown"><h3>Favorite Football Teams</h3>

<ol style="background-color:yellow"><li>The Hawthorn Football Club</li><li>San Franscisco 49ers</li><li>Barcelona FC</li></ol>

</body>

글 위치설정<li style="text-align:left">The Hawthorn Football Club</li><li style="text-align:center">San Franscisco 49ers</li><li style="text-align:right">Barcelona FC</li>

글 강조하기

Page 9: Web viewit업계에서는 2~3년 마다 유행어가 나타나는데, 앞선 키워드 ‘클라우드’가 완전히 정착한 후 다음으로 가장 많이 주목 받는

굵은 글씨 <strong> strong</strong>기울어진 글씨 <em>emememem</em>

HTML Structure: Tables, Divs, and Spans 표 만들기

<html> <head> <title>Table Time</title> </head> <body> <table border="1px">

표 칸 둘레 지정하기. <thead>

테이블 제목 <tr>

테이블 행 만들기 <th colspan="2">Famous Monsters by Birth Year</th>

<colspan>으로 제목 테이블 합치기. </tr> <tr> <th>Famous Monster</th> <th>Birth Year</th> </tr> </thead> <tbody>

테이블 내용 넣기 <tr> <td>King Kong</td>

<td>는 table date cell 의 약자 <td>1933</td> </tr> <tr> <td>Dracula</td> <td>1897</td> </tr> <tr> <td>Bride of Frankenstein</td> <td>1935</td> </tr> </tbody> </table> </body></html>

division(분할)

Page 10: Web viewit업계에서는 2~3년 마다 유행어가 나타나는데, 앞선 키워드 ‘클라우드’가 완전히 정착한 후 다음으로 가장 많이 주목 받는

<body><div style="width:50px; height:50px; background-color:red"></div><div style="width:50px; height:50px; background-color:blue"></div><div style="width:50px; height:50px; background-color:green"></div><div style=" width:50px;height:50px; background-color:yellow"></div>

</body>

부분만 강조,색,크기,스타일 변경하기

<p> <span style="font-size:25px;color:red;font-family:Impact"> A </span> long time ago</p>

Introduction to CSS

index.html탭에서 쓰여진 내용들을 stylesheet.css 탭은 그 요소가 어디로 가야하며 무슨 색이어야 하는지, 크기는 얼마나 커야 하는지 등 모든 CSS 스타일링 정보를 포함한다.

CSS 로 꾸며보기

index.html탭<!DOCTYPE html><html>

<head><link type="text/css" rel="stylesheet" href="stylesheet.css"/>

stylesheet.css 와 연결될 수 있게 반드시 넣어 줘야 한다.<title>I Know CSS </title>

</head><body>

<div><h3>What's CSS for?</h3><p>CSS is for styling HTML pages!</p><h3>Why use it?</h3><p>It makes webpages look <span>really rad</span>.</p><h3>What do I think of it?</h3><p>It's awesome!</p>

</div></body>

</html>

stylesheet.css탭

selector{property: value; }선택자{선언: 값;}순으로 써야 한다.

/*I'm a comment!*/ css 에서 comment 쓰기

H3{ color:red;}글짜 색 바꾸기

p{ font-family:Times,serif;}단락 글씨체 바꾸기&예비 값 설정

Page 11: Web viewit업계에서는 2~3년 마다 유행어가 나타나는데, 앞선 키워드 ‘클라우드’가 완전히 정착한 후 다음으로 가장 많이 주목 받는

CSS 는 모든 문단(p)의 텍스트에 Times 체를 적용한다. 만약 사용자의 컴퓨터에 Times 체가 없다면 serif 체를 적용 할 수 있다.

span{background-color:yellow;}배경색 바꾸기

* { border: 2px solid red; } the * selector 는 모든 요소에 값을 적용시킨다

모든 테두리 2px // solid(실선), dotted(점선), dashed(짧은 실선)// color

CSS Classes and IDs

Class 와 ID 이용해 꾸미기 index.html 탭

<p>I'm the first child!</p><h3 class="red">I'm an h3 header in the red class!</h3>

Class “red”만들기 <h3>I'm just a regular old h3 header.</h3><p class="red">I'm a paragraph in the red class!</p>

Class “red” 추가 <p>I'm just a regular old paragraph.</p><p id="rogue">I'm a rogue paragraph! I do what I want!</p>

Id “rogue” 만들기 stylesheet.css 탭

.red { color: red; }Class “red”색 빵강을 변경하기.

#rogue {color: #FF00FF;font-weight: bold;font-family: cursive;}

id “rogue” 스타일 변경하기.

P:first-child{ font-family:cursive; color:green;}

첫번째 단락 선택해 스타일 바꾸기. n번째 선택은 p:nth-child(n)으로 표시한다.

Page 12: Web viewit업계에서는 2~3년 마다 유행어가 나타나는데, 앞선 키워드 ‘클라우드’가 완전히 정착한 후 다음으로 가장 많이 주목 받는

링크 CSS 스타일 변경하기 a:link : 방문되지 않은 링크.a:visited : 방문된 링크.a:hover : 마우스 커서로 위를 맴돈 링크.

CSS탭에서 a:visited{color:green}로 설정하면 반문한 링크의 색을 바꿀 수 있다.

ID 와 class 이용 예제

index.html 탭

<!DOCTYPE html><html>

<head><link type="text/css" rel="stylesheet" href="stylesheet.css"/><title>My Social Network</title>

</head><body>

<div class="friend" id="best_friend"></div><div class="family"></div><div class="enemy" id="archnemesis"></div>

</body></html>

stylesheet.css탭

div {display: inline-block;margin-left: 5px;width:100px;height:100px;color:blue;border-radius:100%;border: 2px solid black;}

div 에 동그란 원 이미지 넣기.friend{ border: 2px dashed #008000;}.family{border: 2px dashed #0000FF;}.enemy{border: 2px dashed #FF0000;}

Page 13: Web viewit업계에서는 2~3년 마다 유행어가 나타나는데, 앞선 키워드 ‘클라우드’가 완전히 정착한 후 다음으로 가장 많이 주목 받는

Class 로 스타일 변경하기 #best_friend{border: 4px solid #00C957;}#archnemesis{border: 4px solid #CC0000;}

Id 로 추가 설정 하기

CSS Element Positioning

요소를 자리배치 하는 데는 margin, border, padding 이 있고 다음 그림과 같이 배치를 움직일 수 있는 영역으로 나눠져 있다.

CSS Display

block: 요소를 블록 박스로 만듭니다. 그것은 옆에 어떠한 요소도 허용하지 않고, 전체 너비를 차지합니다.

inline-block: 요소를 블록 박스로 만들지만, 같은 줄에 다른 요소가 위치하는 것을 허용합니다.

inline: 그 요소가 다른 요소와 같은 줄에 위치하는 것을 허용하지만, block 과 같은 형식을 가지지 않습니다. 그것은 필요로 하는 만큼의 너비를 차지합니다.

none: 요소와 요소의 내용을 페이지에서 완전히 사라지게 만듭니다.

index.html 탭 <body>

<div id="one"></div><div id="two"></div><div id="three"></div><div id="four"></div>

</body>

stylesheet.css 탭* { border: 1px dashed blue; }

모든 요소의 테두리 1px 실선 파란색 div {

height: 50px;width: 100px;border: 2px solid black;border-radius: 5px;display:block; /*or display:inline-block;*/}

div 의 display 설정하기

#one { background-color: #FF0000;}

Page 14: Web viewit업계에서는 2~3년 마다 유행어가 나타나는데, 앞선 키워드 ‘클라우드’가 완전히 정착한 후 다음으로 가장 많이 주목 받는

#two { background-color: #0000FF;}

#three { background-color: #FFD700;}

#four { background-color: #308014;}Id 설정으로 색 설정하기

< display: block 이라 설정 한 경우>

<display: inline-block 이라 설정한 경우>

여백(margin), 테두리(border), 패딩(padding) 설정하기

index.html 탭 <!DOCTYPE html><html>

<head><link type="text/css" rel="stylesheet" href="stylesheet.css"/><title>Result</title>

</head><body>

<div></div></body>

</html> stylesheet.css 탭

* {border: 1px dashed black;}

div {height: 50px;width: 100px;border:4px solid #FF0000;border-radius: 5px;background-color: #308014;

margin: 20px 50px 10px 5px;여백(margin) 설정하기.

순서대로 top, right, bottom, left 순으로 여백을 설정할 수 있다.

Page 15: Web viewit업계에서는 2~3년 마다 유행어가 나타나는데, 앞선 키워드 ‘클라우드’가 완전히 정착한 후 다음으로 가장 많이 주목 받는

padding:40px; }padding 은 border 와 가장 안쪽의 레이어인 실제 컨텐츠 사이의 공간으로

margin 과 다르게 내부 공간을 설정한다.padding-top, padding-right, padding-bottom, padding-left 로 값을 지정 할 수도 있고 한꺼번에

padding: top, right, bottom, left 로 도 지정할 수 있다.

띄우기(Floating) 설정

index.html 탭

<!DOCTYPE html><html>

<head><link type="text/css" rel="stylesheet" href="stylesheet.css"/><title>Result</title>

</head><body>

<div id="header"></div><div class="left"></div><div class="right"></div><div id="footer"></div>

</body></html>

stylesheet.css 탭

div {border-radius: 5px;}

#header {height: 50px;background-color: #F38630;margin-bottom: 10px;

}

.left {height: 300px;width: 150px;background-color: #A7DBD8;float: left;

왼쪽으로 띄우기margin-bottom: 10px;

}

Page 16: Web viewit업계에서는 2~3년 마다 유행어가 나타나는데, 앞선 키워드 ‘클라우드’가 완전히 정착한 후 다음으로 가장 많이 주목 받는

.right {height: 300px;width: 450px;background-color: #E0E4CC;float: right;

오른쪽으로 띄우기margin-bottom: 10px;

}

#footer {height: 50px;background-color: #69D2E7;clear:both; }

clear: right, left, 또는 both 로 쓸 수 있고 가려지는 부분을 보이게 하는 명령어 이다.

positioning static, absolute, relative, fixed

index.html 탭

<!DOCTYPE html><html>

<head><link type="text/css" rel="stylesheet" href="stylesheet.css"/><title>Result</title>

</head><body><div id="outer">

Page 17: Web viewit업계에서는 2~3년 마다 유행어가 나타나는데, 앞선 키워드 ‘클라우드’가 완전히 정착한 후 다음으로 가장 많이 주목 받는

<div id="inner1"> <div id="inner2"> <div id="inner3"> <div id="inner4"></div></div></div></div></div></body>

</html>

stylesheet.css 탭

div {height: 100px;width: 100px;border-radius: 5px;border: 2px solid black;

}

#inner1 {height: 75px;width: 75px;background-color: #547980;float:right;

static positioning //파란색}#inner2 {

height: 75px;width: 75px;background-color: green;position:absolute;

절대 위치(Absolute positioning) //초록색margin-left: 100px;}

#inner3 {height: 75px;width: 75px;background-color: red;position:relative;margin-left: 100px}

상대위치(Relative positioning) // 빨간색 #inner4 {

height: 75px;width: 75px;background-color: yellow;position:fixed;

고정 위치(Fixed positioning) // 노란색 margin-left: 100px}

#outer {height: 1500px;width: 150px;background-color: #45ADA8;position: absolute;margin-left: 100px;}

Page 18: Web viewit업계에서는 2~3년 마다 유행어가 나타나는데, 앞선 키워드 ‘클라우드’가 완전히 정착한 후 다음으로 가장 많이 주목 받는

3. Python ① Code Academy

Python 프로그래밍 언어란 동적 타이핑(dynamic typing) 범용 프로그래밍 언어이다. 다양한 플랫폼에서 쓸 수 있고, 라이브러리가 풍부하여 다양한 기관 및 산업계에서의 이용이 많다. 또한 파이썬은 순수한 프로그램 언어로서의 기능 외에도 다른 언어로 쓰인 모듈들을 연결하는 풀언어(glue language)로써 자주 이용 된다. 실제 파이썬은 많은 상용 응용 프로그래밍에서 스크립트 언어로 채용되고 있고 도움말 문서도 정리가 잘 되어 있으며, 유니코드 문자열을 지원해서 다양한 언어의 문자 처리에도 능하다.

우리는 Python 을 Codecademy 사이트에서 간단하게 배운 것을 아래에 간략하게 정리하여 보았다

Page 19: Web viewit업계에서는 2~3년 마다 유행어가 나타나는데, 앞선 키워드 ‘클라우드’가 완전히 정착한 후 다음으로 가장 많이 주목 받는

1. Variable 변수

Variable = 10

c 언어와는 다른 점은 형식을 지정해줄 필요가 없다. 불룬 연산자는 요직 2 가지 변수(True or

False)만 갖는다. 처음 입력한 값을 마지막 입력한 값으로 재 할당 할 수 있다.

2. Whitespace Means Right Space

파이썬은 대괄호 개념이 없어서 코드 구분을 할 때 함수 안에 오직 인덴테이션으로 구분해준다.

스페이스바 4번 또는 텝 한번을 누른다.

3. 코멘트 넣는 방법

한 줄 코멘트 넣는 방법 #

여러 줄 코멘트 넣는 방법 “”“~~~”“”

4. 연산

addition(더하기) = 72 + 23

subtraction(빼기) = 108 - 204

multiplication(곱) = 108 * 0.5

division(나누기) = 108 / 9

지수 승(2^3)을 파이썬에선 2**3 으로 표현을 합니다.

모듈러 연산(나머지 계산)은 %를 사용해서 나타냅니다. 예를 들어 3%2 = 1 이 됩니다.

Page 20: Web viewit업계에서는 2~3년 마다 유행어가 나타나는데, 앞선 키워드 ‘클라우드’가 완전히 정착한 후 다음으로 가장 많이 주목 받는

5. 팁 계산 연습

위에서 배운 변수와 연산, 코멘트를 사용해서 팁 계산하는 법을 연습해 보았습니다.

6. Strings 문자열

변수를 주고“” 안에 문자를 넣으면 됩니다. String = “banana”

문장열 안에 다시 작은 따옴표가 있으면 \백스페이스를 작은따옴표 안에 넣어주면 됩니다. 또 다른

방법은 \‘ 처리가 불편하다면 긴 문장처리처럼 “”“~”“” 넣어주면 간단하게 끝나게 됩니다..String = “ I‘m ” -> “ I\’m ” or “““ I’m ”””

Page 21: Web viewit업계에서는 2~3년 마다 유행어가 나타나는데, 앞선 키워드 ‘클라우드’가 완전히 정착한 후 다음으로 가장 많이 주목 받는

7. Index 목록

그림과 같이 python 의 문자열은 6글자이다. 주의해야 할 점은 시작은 항상 0 으로 시작한다는

것이다. fifth_letter = "MONTY"[4]

8. String method 문자열 방법

가) len() 문자열의 길이 (문자 수)를 얻는다. parrot = "norwegian blue"print len(parrot)

나) lower() 문자열을 모두 소문자로 바꾸어준다.parrot = "norwegian blue"print parrot.lower()

다) upper() 문자열을 모두 대문자로 바꾸어준다.parrot = "norwegian blue"print parrot.upper()

라) 4. str() 비문자열을 문자열로 출력해준다.(사용자가 보기 쉬운 형태로 출력해줌.)pi=3.14print str(pi)

9. 점 표기법

len 과 str 은 괄호 안에 문자열을 쓰지만 lower 와 upper 는 문자열 뒤에 점을 쓰고 쓴다.

Page 22: Web viewit업계에서는 2~3년 마다 유행어가 나타나는데, 앞선 키워드 ‘클라우드’가 완전히 정착한 후 다음으로 가장 많이 주목 받는

10.Printing Strings

문자열을 출력하는 방법을 알아보겠습니다.

단순히 print 를 써주고 뒤에 따옴표 안에 문자열을 입력해주면 끝입니다.print "Monty Python"

11.Printing Variables

변수를 출력하는 방법을 알아보겠습니다.

먼저 변수를 입력한 후에 print 다음 따옴표 없이 변수이름을 입력해주면 됩니다.the_machine_goes="Ping!"print the_machine_goes

지금까지는 기본 출력이고 이제 고급 출력을 알아보겠습니다.

12.String Concatenation

이번 출력은 문자열을 연결하는 법을 알아보겠습니다.

print 를 써주고 “문자열”+“문자열”을 해주면 됩니다.

print "Spam "+"and "+"eggs"

13.Explicit String Conversion때때로 문자열과 문자열이 아닌 것과 결합해야 할 때가 있을 수 있습니다. 그렇게 하기 위해서는 비

문자열을 문자열로 바꾸어 주어야 합니다. 예를 보겠습니다.

print "The value of pi is around " +str( 3.14)

14.String Formatting with %

문자열로 변수를 인쇄 할 때, 한 번에 문자열을 연결하는 것보다 더 나은 방법이 있습니다. 그

방법은 %s 라는 것을 써주는 것입니다. 예를 한번 보고 설명하겠습니다.

string_1 = "Camelot"string_2 = "place"

Page 23: Web viewit업계에서는 2~3년 마다 유행어가 나타나는데, 앞선 키워드 ‘클라우드’가 완전히 정착한 후 다음으로 가장 많이 주목 받는

print "Let's not go to %s. 'Tis a silly %s." % (string_1, string_2)

다음과 같이 문자열 안에 %s 가 2개 들어있습니다. 문자열 끝에 %를 붙이고 괄호에 들어갈 변수들을

써주면 그 순서에 맞게 입력이 됩니다. 결과적으로 다음과 같은 문자열이 출력됩니다."Let's not go to Camelot. 'Tis a silly place."

아까와 같은 입력입니다. 실행해서 질문에 답을 쓰면 그 순서에 맞게 답을 해줍니다.

name = raw_input("What is your name?")quest = raw_input("What is your quest?")color = raw_input("What is your favorite color?")print "Ah, so your name is %s, your quest is %s, " \"and your favorite color is %s." % (name, quest, color)

문자열을 만들 수 있는 3 가지 방법

'Alpha'"Bravo"str(3)

문자열 방법

len("Charlie")"Delta".upper()

Page 24: Web viewit업계에서는 2~3년 마다 유행어가 나타나는데, 앞선 키워드 ‘클라우드’가 완전히 정착한 후 다음으로 가장 많이 주목 받는

"Echo".lower()

문자열 인쇄

print "Foxtrot"

고급 인쇄기술

g = "Golf"h = "Hotel"print "%s, %s" % (g, h)

15.Date and Time

첫 번째 줄에서 날짜를 사용할 수 있게 라이브러리를 가져온 것입니다.

두 번째 줄은 현재 날짜와 시간을 출력합니다.from datetime import datetime

now=datetime.now()print now

원하는 날짜만 출력하고 싶을 때 사용하는 방법입니다.

from datetime import datetime

now=datetime.now()print nowprint now.yearprint now.monthprint now.day

16. Condtiionals & Control Flow (조건문 및 제어 흐름)

비교연산하는 법

>, <, ==, <=, >=, !=

Boolean operators 불룬 연산자.

Page 25: Web viewit업계에서는 2~3년 마다 유행어가 나타나는데, 앞선 키워드 ‘클라우드’가 완전히 정착한 후 다음으로 가장 많이 주목 받는

True and False is FalseFalse and True is FalseFalse and False is False

True or True is TrueTrue or False is TrueFalse or True is TrueFalse or False is False

Not True is FalseNot False is True

17. 제어문

제어문은 조건식 뒤에 ':'를 붙여야 시작된다.

<if>

if c > d:print 'c > d'

elif c == d:print 'c == d'

else:print 'c < d'

<While>

num = 1while num <= 100:print numnum = num + 1

<FOR>

Page 26: Web viewit업계에서는 2~3년 마다 유행어가 나타나는데, 앞선 키워드 ‘클라우드’가 완전히 정착한 후 다음으로 가장 많이 주목 받는

for x in family: # family 라는 리스트의 각각의 원소 x 에 대하여:

print x, len(x) # x 와 x 의 길이를 출력하라.

for i in range(4,8): (4 이상 8 미만)

print i

18. FUNCTIONS(함수)

def <함수명>(<매개변수 1>,<매개변수 2>,...) :

<Function:함수>

def function(x): a = 3 b = 5 y = a*x + b return y

정의 완료시 한 줄 띄우고 return 문을 만나면 함수를 나가게 된다. 또 함수 정의는 호출

뒤에 해도 됩니다. 마지막으로 함수의 정의와 선언이 한번에 이루어집니다..

19. Taking a Vacation

Page 27: Web viewit업계에서는 2~3년 마다 유행어가 나타나는데, 앞선 키워드 ‘클라우드’가 완전히 정착한 후 다음으로 가장 많이 주목 받는

지금까지 배운 것을 활용하여 여행계획에 대하여 코딩연습을 해보았습니다.

20. Python Lists and Dictionaries(파이썬 목록 및 사전)

<부분문자열 표시>

>>> x="abcdef">>> x'abcdef'>>> x[0]'a'>>> x[1]'b'

>>> x[1:3] #1번이상 3번‘미만’

'bc'

>>> x[:3] #처음부터 3번‘미만’까지

'abc'

>>> x[3:] #3번‘이후’부터 끝까지

'def'

<리스트 처리>

* 정의하기 : a = ['a', 'b', 'c', 'd'] / a=[] 빈 리스트

* 요소의 개수 : len(a)

* 요소 출력 : a[2] : 3 번째 요소('c') 출력 (인덱스는 0 부터 시작한다.)

* 요소 수정

a=[1,3,5,7] 일때

a[1] =9 ==> [1,9,5,7]

* 범위에 의한 리스트 생성 : range (n1 이상,n2 미만)

a=range(2,7) ==> [2, 3, 4, 5, 6]

Page 28: Web viewit업계에서는 2~3년 마다 유행어가 나타나는데, 앞선 키워드 ‘클라우드’가 완전히 정착한 후 다음으로 가장 많이 주목 받는

a=range(5) ==> [0,1,2,3,4]

* 요소 추가 : append 메소드, 맨뒤에 추가

a=[1,3,5,7]a.append(2) ==> [1, 3, 5, 7, 2]

* 특정 요소 삭제 : a.remove('a') => [‘b','c','d']

* 위치에 따른 요소 삭제 : del 명령

a=[1,3,5,7] 일때

del a[2] ==> [1, 3, 7]

* 소트 : sort() 메소드

a=[2,1,5,3] 일때 a.sort() ==> [1,2,3,5] # prime 을 원소 크기 순으로 정렬

<다차원 리스트>

>>> orders = ['potato', ['pizza', 'Coke', 'salad'], 'hamburger']>>> orders[1]['pizza', 'Coke', 'salad']>>> orders[1][2]'salad'>>> matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

<문자열을 리스트로 변경>

>>> list=[]>>> string = 'Be happy!'>>> for x in string:list.append(x)>>> print list

Page 29: Web viewit업계에서는 2~3년 마다 유행어가 나타나는데, 앞선 키워드 ‘클라우드’가 완전히 정착한 후 다음으로 가장 많이 주목 받는

['B', 'e', ' ', 'h', 'a', 'p', 'p', 'y', '!']

<사전(Dictionary)>사전 자료형은 키 : 값의 쌍, 중괄호를 이용

a={} # 빈 dictionary 정의a['dog']='bark' # dog 키에 bark 값 입력a['cat']='cat'a{'dog': 'bark', 'cat': 'cat'} # 출력 형태a['dog'] # 키에 의한 값 찾기'bark'a['cat']'cat'

<축약형 dictionary>a = {'dog' : 'bark', 'cat' : 'meow'}a['dog'] # 포켓용 사전아, ‘python’이 뭐니??'snake'

<요소쌍 삭제>del a['dog']{'cat': 'meow'}

* key , value 를 각각 리스트로 저장family = {'boy':'David', 'girl':'Eliza', 'baby':'Erasmus'}family # 값을 넣는 순서대로 저장되지는 않음.{'baby': 'Erasmus', 'boy': 'David', 'girl': 'Eliza'}

family.keys() # 사전 family 의 key 들을 새로운 리스트에 담는다.['baby', 'boy', 'girl']family.values() # 사전 family 의 값들을 새로운 리스트에 담는다.['Erasmus', 'David', 'Eliza']

* key 검색 has_key : 사전에 어떤 키가 있는지? 있으면 1, 없으면 0family.has_key('boy') ==> 1family.has_key('sister') ==> 0

21. 배틀쉽!!

Page 30: Web viewit업계에서는 2~3년 마다 유행어가 나타나는데, 앞선 키워드 ‘클라우드’가 완전히 정착한 후 다음으로 가장 많이 주목 받는

지금까지 배운 리스트와 함수를 활용한 배틀쉽 게임 만들기를 진행해 보았습니다.

22. 평균과 분산

파이썬 진행 과정 중 평균과 분산에 대하여 코딩하는 방법을 배워보았습니다.

Page 31: Web viewit업계에서는 2~3년 마다 유행어가 나타나는데, 앞선 키워드 ‘클라우드’가 완전히 정착한 후 다음으로 가장 많이 주목 받는

23. Class

<클래스 선언>

클래스 선언은 class 키워드를 이용합니다.생성자는 클래스 이름이 아니라 __init__ 입니다.(언더바 두개)파이썬에서 앞뒤로 ‘__’ 가 붙어 있는 변수나 함수는 특정 용도로 미리 정의해 둔 것입니다.소멸자는 ‘__del__’입니다. 객체의 참조카운터가 0 이 되면 자동 호출됩니다.클래스 내부에서 선언되는 함수는 self 를 첫 번째 인자로 가져야 합니다. Self 는

해당함수가 빌드 되어진 인스턴스 객체를 뜻합니다. 그러나 함수를 호출할 때는 self 키워드를 매개변수에 입력하지 않습니다.

__class__ 는 인스턴스가 속하는 클래스를 나타낸다.

Python 에서는 접근 한정자가 없이 모두 public 이다. 개발자에게 되도록 제약을 가하지

않는 것이 Python 의 철학이기 때문이다.

함수 또는 변수가 private member 임을 표시하고 싶다면 언더바(_) 를 붙이면 된다.

언더바가 2개 있으면 _클래스이름__변수명[함수명] 으로 변수[함수] 명이 변경되어,

외부에서 접근하기가 불편하게 된다. 언더바가 1개 있으면 private member 임을 표시하는

역할을 하며, "from M import *" 키워드 사용 시 import 를 방지한다.

class method : 암묵적으로 클래스 객체를 인자로 전달받으므로, 클래스의 변수[함수]를

사용할 수 있다.

static method : 클래스에 대한 정보를 갖지 않는다. 단순히 모듈의 함수를 호출하는 것과

같다.

< Operator Overloading >

* Python 에서는 연산자도 overloading 이 된다. overriding 이 아니라 overloading

이라고 한다

<상속>

클래스 상속은 () 를 이용한다.

다중 상속은 () 안에 상속할 클래스들을 쉼표로 구분하여 나열하면 된다.

Page 32: Web viewit업계에서는 2~3년 마다 유행어가 나타나는데, 앞선 키워드 ‘클라우드’가 완전히 정착한 후 다음으로 가장 많이 주목 받는

ex) class Subclass(Superclass1, Superclass2): ...

클래스이름.__dict__ 를 해 보면, 클래스의 name space 정보가 dictionary 구조로

이루어진 것을 볼 수 있다. 따라서 키 값인 함수의 이름만 같게 하면 함수가 overriding 된다.

매개변수나 리턴 값을 일치시킬 필요가 없다.

24. File Input/Output

< 표준 입출력 >

사용자 입력을 받을 때에는 input() 을 사용한다. input() 에 전달되는 parameter 는

Page 33: Web viewit업계에서는 2~3년 마다 유행어가 나타나는데, 앞선 키워드 ‘클라우드’가 완전히 정착한 후 다음으로 가장 많이 주목 받는

prompt 가 된다. input 의 입력 결과는 문자열이다.

print() 사용시 (다음 줄이 아니라) 한 줄에 연이어서 출력하고 싶다면 end parameter 를

이용하여 끝문자를 지정한다.

% 를 사용하여 출력할 수도 있다.

< 텍스트 파일 입출력 >

파일 열기(없으면 생성) : open("파일이름", "파일열기모드")

파일열기 모드

- t : 텍스트(디폴트)

b : 바이너리모드

- r : 읽기(디폴트)

w : 쓰기

a : 이어쓰기(파일의 마지막 부분에 내용을 덧붙임)

+ : 읽기&쓰기

< 텍스트 파일 입출력 >

파일 열기(없으면 생성) : open("파일이름", "파일열기모드")

파일열기 모드

- t : 텍스트(디폴트)

b : 바이너리모드

- r : 읽기(디폴트)

w : 쓰기

a : 이어쓰기(파일의 마지막 부분에 내용을 덧붙임)

+ : 읽기&쓰기

<이진 파일 입출력 >

이진 파일은 파일열기모드 에 b 를 붙인다.

다음은 코드 아카데미에서 파일 입출력을 실행하기 전과 실행한 후 모습을 나타낸 것이다.

Page 34: Web viewit업계에서는 2~3년 마다 유행어가 나타나는데, 앞선 키워드 ‘클라우드’가 완전히 정착한 후 다음으로 가장 많이 주목 받는

이로서 코드아카데미에서 기본 파이썬을 배워보았습니다.

② Python 을 이용한 문제풀이

Python 을 이용한 1~1000 까지 소수를 출력하고, 출력된 모든 소수의 합을 구하여라.

Page 35: Web viewit업계에서는 2~3년 마다 유행어가 나타나는데, 앞선 키워드 ‘클라우드’가 완전히 정착한 후 다음으로 가장 많이 주목 받는

% 변수 i 에 관한 2~1000 까지의 범위 지정.

% 소수 판별을 위한 count = 0 지정

% 변수 j 에 관한 1~i-1 까지 범위 지정.

% j 가 i 의 약수이면 count 에 1 을 더해준다.

% count 가 1 이면 i 를 소수로 판별하고 출력한다.

% 마지막으로 모든 소수를 더한 y 를 출력한다.

결과2 73 179 283 419 547 661 811 947

3 79 181 293 421 557 673 821 953

5 83 191 307 431 563 677 823 967

7 89 193 311 433 569 683 827 971

11 97 197 313 439 571 691 829 977

13 101 199 317 443 577 701 839 983

17 103 211 331 449 587 709 853 991

19 107 223 337 457 593 719 857 997

23 109 227 347 461 599 727 859

29 113 229 349 463 601 733 863

31 127 233 353 467 607 739 877

37 131 239 359 479 613 743 881

41 137 241 367 487 617 751 883

43 139 251 373 491 619 757 887

47 149 257 379 499 631 761 907

53 151 263 383 503 641 769 911

59 157 269 389 509 643 773 919

61 163 271 397 521 647 787 929

67 167 277 401 523 653 797 937

71 173 281 409 541 659 809 941

1~1000 까지의 소수의 합 : 76127

y=0for i in range(2,1001):count = 0for j in range(1,i):if i % j ==0:count = count +1if count ==1:print(i)y=y+iprint(y)

Page 36: Web viewit업계에서는 2~3년 마다 유행어가 나타나는데, 앞선 키워드 ‘클라우드’가 완전히 정착한 후 다음으로 가장 많이 주목 받는

4. RR 프로그래밍 언어란 통계 계산과 그래픽을 위한 프로그래밍 언어이자 소프트웨어 환경으로 데이터 분석에 최적화된 언어이다. 또한 Doing data science 책의 연습문제도 R 언어를 이용해 풀어야 되기 때문에 datacamp 의 The easiest way to learn R programming and data science 코스수강으로 R 언어를 아래의 6 단계로 배워 보았다.

Chapter 1 : Intro to basics

# An addition 5 + 5 더하기

# A subtraction 5 - 5 빼기

# A multiplication 3 * 5 곱하기

# A division (5 + 5)/2 나누기

# Exponentiation 2^5 제곱

# Modulo 28%%6 나머지 값

# Assign the value 42 to 'x'

x <- 42 x 에 42 대입

# Print out the value of the variable 'x'

x x값 출력

# Assign a value to the variables called 'my_apples' and 'my_oranges'

값을 넣은 변수로 수식 만들기

my_apples <- 5my_oranges<- 6my_fruit = my_apples+ my_orangesmy_fruit

Page 37: Web viewit업계에서는 2~3년 마다 유행어가 나타나는데, 앞선 키워드 ‘클라우드’가 완전히 정착한 후 다음으로 가장 많이 주목 받는

[1] 11

# Declare variables of different types 변수의 종류 (숫자, 문자, 논리)

> my_numeric <- 42> my_character <- "forty-two"> my_logical <- FALSE

# Check which type these variables have: 변수의 종류를 알아보는 방법

> class(my_numeric)[1] "numeric"> class(my_character)[1] "character"> class(my_logical)[1] "logical"

Chapter 2 : Vectors

# ‘numeric_vector’ ’charater_vector’ 'boolean_vector' 벡터 변수 만들기

numeric_vector <- c(1, 10, 49)character_vector <- c("a", "b", "c")boolean_vector <- c(T,F,T)

# Poker winnings from Monday to Friday 월~금 포커 상금

poker_vector <- c(140, -50, 20, -120, 240)

# Roulette winnings from Monday to Friday 월~금 룰렛 상금

roulette_vector <- c(-24, -50, 100, -350, 10)

# Naming a vector 벡터 값 이름 만들기

names(poker_vector) <- c("Monday", "Tuesday", "Wednesday", "Thursday", "Friday")names(roulette_vector) <- c("Monday", "Tuesday", "Wednesday", "Thursday", "Friday")

OR

Page 38: Web viewit업계에서는 2~3년 마다 유행어가 나타나는데, 앞선 키워드 ‘클라우드’가 완전히 정착한 후 다음으로 가장 많이 주목 받는

# Create the variable 'days_vector' 벡터값 이름 만들기 (다른 방법)

days_vector <-c("Monday", "Tuesday", "Wednesday", "Thursday", "Friday")names(poker_vector) <- days_vector names(roulette_vector) <- days_vector

#Total Daily 월~금 포커+룰렛 상금

total_daily <- poker_vector + roulette_vector> total_daily Monday Tuesday Wednesday Thursday Friday 116 -100 120 -470 250

# Total Week 월~금 총 상금

> total_poker <- sum(poker_vector)> total_roulette <- sum(roulette_vector)> total_week <- total_poker + total_roulette> total_week[1] -84

# Define a new variable based on a selection 벡터에서 특정한 값을 변수로 만들기

poker_wednesday <- poker_vector[3]

# Vector section 벡터의 특정부분 변수로 만들기

> poker_midweek <- poker_vector[c(2, 3, 4)]> poker_midweek Tuesday Wednesday Thursday -50 20 -120

OR

# Define a new variable based on a selection 벡터의 특정부분 변수로 만들기(다른 방법)

roulette_selection_vector <- roulette_vector[2:5] > roulette_selection_vector Tuesday Wednesday Thursday Friday -50 100 -350 10

# Mean 벡터의 부분 값으로 평균 구하기

average_midweek_gain<-mean(poker_vector[c("Monday", "Tuesday",

Page 39: Web viewit업계에서는 2~3년 마다 유행어가 나타나는데, 앞선 키워드 ‘클라우드’가 완전히 정착한 후 다음으로 가장 많이 주목 받는

"Wednesday")])> average_midweek_gain[1] 36.66667

# What days of the week did you make money on poker? 포커로 상금을 얻은 날 알아보기

selection_vector <- poker_vector > 0> selection_vector Monday Tuesday Wednesday Thursday Friday

TRUE FALSE TRUE FALSE TRUE 월,수,금 상금을 얻었다.

# Select from poker_vector these days 상금을 얻은 날의 벡터 값만 보기

> poker_winning_days <- poker_vector[selection_vector]> poker_winning_days Monday Wednesday Friday 140 20 240

Chapter 3 : Matrices

# Construction of a matrix with 3 rows that contain the numbers 1 up to 9

1~9 숫자를 가진 3x3 행렬 만들기

> matrix(1:9, byrow = T, nrow = 3) [,1] [,2] [,3][1,] 1 2 3[2,] 4 5 6[3,] 7 8 9

# Construct matrix

행(new_hope, empire_strikes, return_jedi), 열(US, Non-US) 로 3x2 행렬 값 넣어 만들기

> new_hope <- c(460.998, 314.4)> empire_strikes <- c(290.475, 247.9)> return_jedi <- c(309.306, 165.8)> star_wars_matrix <- matrix(c(new_hope, empire_strikes, return_jedi), nrow = 3, byrow = TRUE)> star_wars_matrix [,1] [,2]

Page 40: Web viewit업계에서는 2~3년 마다 유행어가 나타나는데, 앞선 키워드 ‘클라우드’가 완전히 정착한 후 다음으로 가장 많이 주목 받는

[1,] 460.998 314.4[2,] 290.475 247.9[3,] 309.306 165.8

# Add your code here such that rows and columns of star_wars_matrix have a name!

행렬에 이름 넣기

> colnames(star_wars_matrix) <- c("US", "non-US")> rownames(star_wars_matrix) <- c("A New Hope", "The Empire Strikes Back", "Return of the Jedi")> star_wars_matrix US non-USA New Hope 460.998 314.4The Empire Strikes Back 290.475 247.9Return of the Jedi 309.306 165.8

OR

행렬에 값&이름 한번에 넣기

box_office_all <- c(461, 314.4, 290.5, 247.9, 309.3, 165.8)movie_names <- c("A New Hope","The Empire Strikes Back","Return of the Jedi")col_titles <- c("US","non-US")star_wars_matrix <- matrix(box_office_all, nrow = 3, byrow = TRUE, dimnames = list(movie_names, col_titles))

#RowSums 행 값의 합 구하기

worldwide_vector <- rowSums(star_wars_matrix)> worldwide_vector A New Hope The Empire Strikes Back Return of the Jedi 775.4 538.4 475.1

#column bind 열 추가하기

> all_wars_matrix <- cbind(star_wars_matrix, worldwide_vector)> all_wars_matrix US non-US worldwide_vectorA New Hope 461.0 314.4 775.4The Empire Strikes Back 290.5 247.9 538.4Return of the Jedi 309.3 165.8 475.1

Page 41: Web viewit업계에서는 2~3년 마다 유행어가 나타나는데, 앞선 키워드 ‘클라우드’가 완전히 정착한 후 다음으로 가장 많이 주목 받는

# row bind 행 추가하기

> all_wars_matrix <- rbind(star_wars_matrix, star_wars_matrix2)> all_wars_matrix US Non-USA New Hope 461.0 314.4The Empire Strikes Back 290.5 247.9Return of the Jedi 309.3 165.8The Phantom Menace 474.5 552.5Attack of the Clones 310.7 338.7Revenge of the Sith 380.3 468.5

# Total revenue for US and non-US 열 값의 합 구하기

> total_revenue_vector <- colSums(all_wars_matrix)> total_revenue_vector US non-US

2226.3 2087.8

# Average non-US revenue per movie 2번째 열만 평균 구하기

> Non_us_all <- mean(star_wars_matrix[, 2])> Non_us_all[1] 242.7

# Average non-US revenue of first two movies 2번째 열의 1번째, 2번째 행 값 평균 구하기

> non_us_some <- mean(star_wars_matrix[1:2, 2])> non_us_some[1] 281.15

# Estimated number of visitors 각 영화의 티켓 값을 벡터로 만들고 나누어 관객수 구해보기

ticket_prices_matrix <- matrix(c(5, 5, 6, 6, 7, 7), nrow = 3, byrow = TRUE, dimnames = list(movie_names, col_titles))visitors <- star_wars_matrix/ticket_prices_matrix

# Average number of US visitors US 관람객 평균 구하기

Page 42: Web viewit업계에서는 2~3년 마다 유행어가 나타나는데, 앞선 키워드 ‘클라우드’가 완전히 정착한 후 다음으로 가장 많이 주목 받는

average_us_visitors <- mean(visitors[, 1]) average_us_visitors[1] 61.60079

# Average number of Non-US visitors Non-US 관람객 평균 구하기

average_Non_us_visitors <- mean(visitors[, 2])average_Non_us_visitors[1] 42.62746

Chapter 4 : Factors# Define factor_ survey_vector using 'factor()' 벡터에 “성별”인수(factor) 넣기

survey_vector <- c("M", "F", "F", "M", "M")

# Encode survey_vector as a factor survey벡터의 인수 이름 바꾸기

factor_survey_vector <- factor(survey_vector)levels(factor_survey_vector) <- c("Female", "Male")factor_survey_vector[1] Male Female Female Male Male Levels: Female Male

# Summarizing a factor 각 인수의 개수

> summary(survey_vector) Length Class Mode 5 character character > summary(factor_survey_vector)Female Male 2 3

# Ordered factors 정리된 인수를 가진 벡터

speed_vector <- c("Fast", "Slow", "Slow", "Fast", "Ultra-fast")factor_speed_vector <- factor(speed_vector, ordered = TRUE, levels = c("Slow", "Fast", "Ultra-fast"))factor_speed_vector[1] Fast Slow Slow Fast Ultra-fastLevels: Slow < Fast < Ultra-fastsummary(factor_speed_vector)

Page 43: Web viewit업계에서는 2~3년 마다 유행어가 나타나는데, 앞선 키워드 ‘클라우드’가 완전히 정착한 후 다음으로 가장 많이 주목 받는

Slow Fast Ultra-fast 2 2 1

# Is data analyst 2 faster than data analyst 5?

speed_vector 의 2번째 인수(slow)는 5번째 인수(Ultra-fast)보다 빠른 인수인가?

compare_them <- factor_speed_vector[2]>factor_speed_vector[5]compare_them[1] FALSE

Chapter 5 : Data frames

# Quick, have a look at your data set Data set 생성하기

>MtcarsMazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2Valiant 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1Duster 360 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2Camaro Z28 13.3 8 350.0 245 3.73 3.840 15.41 0 0 3 4Pontiac Firebird 19.2 8 400.0 175 3.08 3.845 17.05 0 0 3 2Fiat X1-9 27.3 4 79.0 66 4.08 1.935 18.90 1 1 4 1Porsche 914-2 26.0 4 120.3 91 4.43 2.140 16.70 0 1 5 2Lotus Europa 30.4 4 95.1 113 3.77 1.513 16.90 1 1 5 2Ford Pantera L 15.8 8 351.0 264 4.22 3.170 14.50 0 1 5 4Ferrari Dino 19.7 6 145.0 175 3.62 2.770 15.50 0 1 5 6Maserati Bora 15.0 8 301.0 335 3.54 3.570 14.60 0 1 5 8Volvo 142E 21.4 4 121.0 109 4.11 2.780 18.60 1 1 4 2

#Data set 의 앞부분만 보기

> head(mtcars) mpg cyl disp hp drat wt qsec vs am gear carb

Page 44: Web viewit업계에서는 2~3년 마다 유행어가 나타나는데, 앞선 키워드 ‘클라우드’가 완전히 정착한 후 다음으로 가장 많이 주목 받는

Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1

#Data set 의 뒷부분만 보기

> tail(mtcars) mpg cyl disp hp drat wt qsec vs am gear carbPorsche 914-2 26.0 4 120.3 91 4.43 2.140 16.7 0 1 5 2Lotus Europa 30.4 4 95.1 113 3.77 1.513 16.9 1 1 5 2Ford Pantera L 15.8 8 351.0 264 4.22 3.170 14.5 0 1 5 4Ferrari Dino 19.7 6 145.0 175 3.62 2.770 15.5 0 1 5 6Maserati Bora 15.0 8 301.0 335 3.54 3.570 14.6 0 1 5 8Volvo 142E 21.4 4 121.0 109 4.11 2.780 18.6 1 1 4 2

# Create the data frame: 데이터 틀(planets, type, diameter, rotation, rings) 만들기

> planets <- c("Mercury", "Venus", "Earth", "Mars", "Jupiter", "Saturn", "Uranus", "Neptune")> type <- c("Terrestrial planet", "Terrestrial planet", "Terrestrial planet", "Terrestrial planet", "Gas giant", "Gas giant", "Gas giant", "Gas giant")> diameter <- c(0.382, 0.949, 1, 0.532, 11.209, 9.449, 4.007, 3.883)> rotation <- c(58.64, -243.02, 1, 1.03, 0.41, 0.43, -0.72, 0.67)> rings <- c(FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE)

> planets_df <- data.frame(planets, type, diameter, rotation, rings)> planets_df planets type diameter rotation rings1 Mercury Terrestrial planet 0.382 58.64 FALSE2 Venus Terrestrial planet 0.949 -243.02 FALSE3 Earth Terrestrial planet 1.000 1.00 FALSE4 Mars Terrestrial planet 0.532 1.03 FALSE5 Jupiter Gas giant 11.209 0.41 TRUE

Page 45: Web viewit업계에서는 2~3년 마다 유행어가 나타나는데, 앞선 키워드 ‘클라우드’가 완전히 정착한 후 다음으로 가장 많이 주목 받는

6 Saturn Gas giant 9.449 0.43 TRUE7 Uranus Gas giant 4.007 -0.72 TRUE8 Neptune Gas giant 3.883 0.67 TRUE

#data set 의 구성(structure)설명

>str(planets_df)'data.frame': 8 obs. of 5 variables: $ planets : Factor w/ 8 levels "Earth","Jupiter",..: 4 8 1 3 2 6 7 5 $ type : Factor w/ 2 levels "Gas giant","Terrestrial planet": 2 2 2 2 1 1 1 1 $ diameter: num 0.382 0.949 1 0.532 11.209 ... $ rotation: num 58.64 -243.02 1 1.03 0.41 ... $ rings : logi FALSE FALSE FALSE FALSE TRUE TRUE ...

# All data from the first three planets 1~3번째 행성(planet)의 모든 데이터 보기

> closest_planets_df <- planets_df[1:3, ]> closest_planets_df planets type diameter rotation rings1 Mercury Terrestrial planet 0.382 58.64 FALSE2 Venus Terrestrial planet 0.949 -243.02 FALSE3 Earth Terrestrial planet 1.000 1.00 FALSE

# All data from the last three planets 마지막 3개 행성(planet)의 모든 데이터 보기

> furthest_planets_df <- planets_df[6:8, ]> furthest_planets_df planets type diameter rotation rings6 Saturn Gas giant 9.449 0.43 TRUE7 Uranus Gas giant 4.007 -0.72 TRUE8 Neptune Gas giant 3.883 0.67 TRUE

# Do selection on both rows and columns Data 중 행,열 조건 에 맞는 부분 보기

> furthest_planets_diameter <- planets_df[3:8, "diameter"]> furthest_planets_diameter[1] 1.000 0.532 11.209 9.449 4.007 3.883

Page 46: Web viewit업계에서는 2~3년 마다 유행어가 나타나는데, 앞선 키워드 ‘클라우드’가 완전히 정착한 후 다음으로 가장 많이 주목 받는

# Select the information on planets with rings: 고리(rings)를 가지고 있는 행성(planet)의 자료만 보기

> planets_with_rings_df <- planets_df[rings_vector, ]> planets_with_rings_df planets type diameter rotation rings5 Jupiter Gas giant 11.209 0.41 TRUE6 Saturn Gas giant 9.449 0.43 TRUE7 Uranus Gas giant 4.007 -0.72 TRUE8 Neptune Gas giant 3.883 0.67 TRUE

# Planets that are smaller than planet Earth: 지구보다 작은 행성(planet)의 자료만 보기

> small_planets_df <- subset(planets_df, subset = planets_df$diameter < 1)> small_planets_df planets type diameter rotation rings1 Mercury Terrestrial planet 0.382 58.64 FALSE2 Venus Terrestrial planet 0.949 -243.02 FALSE4 Mars Terrestrial planet 0.532 1.03 FALSE

# What is the correct ordering based on the planets_df$diameter variable?

planets_df Data 에서 직경(diameter)크기에 따른 순서는 무엇인가?

> positions <- order(planets_df$diameter, decreasing = TRUE)> positions[1] 5 6 7 8 3 2 4 1

# Create new "ordered" data frame: 직경순서대로 data 나타내기

> largest_first_df <- planets_df[positions, ]> largest_first_df planets type diameter rotation rings5 Jupiter Gas giant 11.209 0.41 TRUE6 Saturn Gas giant 9.449 0.43 TRUE7 Uranus Gas giant 4.007 -0.72 TRUE

Page 47: Web viewit업계에서는 2~3년 마다 유행어가 나타나는데, 앞선 키워드 ‘클라우드’가 완전히 정착한 후 다음으로 가장 많이 주목 받는

8 Neptune Gas giant 3.883 0.67 TRUE3 Earth Terrestrial planet 1.000 1.00 FALSE2 Venus Terrestrial planet 0.949 -243.02 FALSE4 Mars Terrestrial planet 0.532 1.03 FALSE1 Mercury Terrestrial planet 0.382 58.64 FALSE

Chapter 6 : Lists# Construct list with these different elements: 벡터, 행렬, 데이터를 포함한 리스트 만들기

>my_vector <- 1:10> my_matrix <- matrix(1:9, ncol = 3) > my_df <- mtcars[1:10, ]> my_list <- list(my_vector, my_matrix, my_df)> my_list[[1]] [1] 1 2 3 4 5 6 7 8 9 10

[[2]] [,1] [,2] [,3][1,] 1 4 7[2,] 2 5 8[3,] 3 6 9

[[3]] mpg cyl disp hp drat wt qsec vs am gear carbMazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2Valiant 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1Duster 360 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2

Page 48: Web viewit업계에서는 2~3년 마다 유행어가 나타나는데, 앞선 키워드 ‘클라우드’가 완전히 정착한 후 다음으로 가장 많이 주목 받는

Merc 280 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4

# Creating a named list 리스트에 이름 넣기

> my_list <- list(vec = my_vector, mat = my_matrix, df = my_df)> my_list$vec [1] 1 2 3 4 5 6 7 8 9 10

$mat [,1] [,2] [,3][1,] 1 4 7[2,] 2 5 8[3,] 3 6 9

$df mpg cyl disp hp drat wt qsec vs am gear carbMazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2Valiant 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1Duster 360 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2Merc 280 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4

# Create the list 'shining_list' 새로운 리스트 만들기

> shining_list <- list(moviename = "The Shining", actors = actors, reviews = reviews)> shining_list$moviename

Page 49: Web viewit업계에서는 2~3년 마다 유행어가 나타나는데, 앞선 키워드 ‘클라우드’가 완전히 정착한 후 다음으로 가장 많이 주목 받는

[1] "The Shining"

$actors[1] "Jack Nicholson" "Shelley Duvall" "Danny Lloyd" "Scatman Crothers"[5] "Barry Nelson"

$reviews scores sources comments1 4.5 IMDb1 Best Horror Film I Have Ever Seen2 4.0 IMDb2 A truly brilliant and scary film from Stanley Kubrick3 5.0 IMDb3 A masterpiece of psychological horror

#Selecting elements from a list 리스트 부분만 보기

# Define 'last_actor' 마지막 배우 보기

> last_actor <- shining_list$actors[length(shining_list$actors)]> last_actor[1] "Barry Nelson"

# Define 'second_review' 두번째 리뷰 보기

> second_review <- shining_list$reviews[2, ]> second_review Scores sources comments

2 4 IMDb2 A truly brilliant and scary film from Stanley Kubrick

# Adding more movie information to the list 리스트에 추가 정보 넣기

> shining_list_full <- c(shining_list, year = 1980)

# shining_list_full 리스트 전체 보기

> str(shining_list_full)List of 4 $ moviename: chr "The Shining"$ actors : chr [1:5] "Jack Nicholson" "Shelley Duvall" "Danny Lloyd" "Scatman Crothers" ...$ reviews :'data.frame': 3 obs. of 3 variables:$ scores : num [1:3] 4.5 4 5

Page 50: Web viewit업계에서는 2~3년 마다 유행어가 나타나는데, 앞선 키워드 ‘클라우드’가 완전히 정착한 후 다음으로 가장 많이 주목 받는

$ sources : Factor w/ 3 levels "IMDb1","IMDb2",..: 1 2 3$ comments: Factor w/ 3 levels "A masterpiece of psychological horror",..: 3 2 1$ year : num 1980

5. Doing Data Science 1 장, 2 장, 3 장 요약

1 장 데이터 과학이란 무엇인가?

"데이터화란 삶의 모든 측면을 포착해 데이터로 바꾸는 과정이다."          

('포린어페어스'中 케네스 닐 쿠키어, 빅터 메이버 쉔버거)

대학에서의 데이터 과학자는, 사회과학에서 생물학까지 어떤 분야에서건 훈련된 과학자고, 대량의 데이터를 분석하며, 현실 세계의 문제를 해결함과 동시에 데이터의 구조, 크기, 무정형, 복잡성과 같은 성격 때문에 발생하는 전산화의 문제들을 다뤄야만 한다.

산업에서의 데이터 과학자는, 데이터에서 의미를 뽑아내고 해석하는 방법을 아는 사람이다. 그들은 패턴을 발견하고, 모형을 만들며, 알고리즘을 고안한다.

2 장 통계적 추론, 탐색적 데이터 분석과 데이터과학 과정

통계적 추론이란, 확률과정을 통해 생성된 데이터로부터 의미와 정보를 추출할 수 있도록 해주는 절차, 방법 혹은 법칙에 관심을 갖는 학문분야이다.

빅데이터란 Volume(용량), Variety(다양성), Velocity(속도), Value(가치) 인 4V 를 가진 것으로 규정할 수 있다.

쿠 키어와 메이어-쉔버거는 빅데이터는 표본오차에 대해 걱정할 필요가 없다고 주장한다. 그리고 이러한 주장은 'N=전체'라는 명제를 가지지만 이는 데이터가 객관적이라는 인식에 모순된다.  따라서 오늘날 빅데이터 시대는 'n=1'개념으로 사용자 수준의 모형화를 이루는 새로운 의미를 가진다.

탐색적 데이터분석(EDA: Exploratory Data Analysis)이란 (상자 도표를 사용하여) 모든 변수의 분포를 도표화하고, 시계열 데이터를 도표화하며, 변수를 변환하고, 산점도 행렬을 이용하여 변수들의 대응관계를 파악하며, 모든 변수의 요약통계를 생성하는 등 데이터를 체계적으로 둘러보는 하나의 방법이다. 기본적으로 EDA 는 변수들의 평균, 최소값, 최대값, 사분위수 등의 계산 그리고 이상값의 발견을 뜻한다.

데이터에 대학 직관을 얻기 위해, 분포들 사이를 비교하기 위해, 데이터의 온전성 검사를 하기 위해, 결측 데이터나 이상값을 찾아내기 위해, 그리고 데이터를 요약하기 위해 EDA 가 필요하다.

데이터 과학 과정

Page 51: Web viewit업계에서는 2~3년 마다 유행어가 나타나는데, 앞선 키워드 ‘클라우드’가 완전히 정착한 후 다음으로 가장 많이 주목 받는

3 장 알고리즘

알고리즘이란, 어떤 과업을 달성하기 위한 단계나 법칙을 모은 절차로 다음 3 가지 종류가 있다.

 정렬, 맵리듀스, 프리젤 등과 같은 데이터 변환, 사전준비, 처리 알고리즘.

확률적 경사감소법, 뉴턴의 방법, 최소 제곱법 등 과 같이 모수 측정을 위한 최적화 알고리즘.

인공지능(AI)의 기본이 되는 기계학습 알고리즘.

알고리즘에 필요한 기본적 도구 :   선형회귀 , K- 근접이웃 , K- 평균법

선형회귀란, 하나의 결과변수(반응변수, 종속변수, 또는 분류명 등)와 하나의 예측변수(독립변수, 설명변수, 또는 특징 등)또는 하나의 변수와 다른 여러 변수 간에 선형관계가 있다는 가정을 하여 관계를 선형구조로 모형화 하는 것이다.

      추세를 모형화 할 경우

산점도, 선도표, 다이어 그램 등으로 변수간의 대략적 관계를 시각적으로 판단.

변수 사이의 관계를 수치적으로 나타내기 위해, 선형회귀로 몇가지 직선을 찾는다.

예측오차를 최소로 하기 위해 최소제곱 추정법을 이용하여 모형이 적합한지 확인.

더 나아가 실제오차 측정을 하기 위해서는 오차항을 추가하여 오차의 평균,분산을 구하고 유도된 추정량은 불편 추정량이라는 귀무가설을 세워 p-value( 귀무가설을 기각하는 최소의 유의수준)와 올바른 분포를 이용해 검증한다.

k-근접이웃(k-NN)은 어떤 방법으로든 이미 분류되어 있거나 분류명을 붙인 많은 객체가 있을 때, 아직 분류 되어 있지 않거나 분류명이 없는 객체에 자동으로 분류명을 붙이고자 할 때 사용하는 알고리즘이다.

k-NN 분류 절차

 유사도 또는 거리척도를 결정한다. ( 유클리드 거리, 코사인 유사도, 자커드 거리, 마할라노비스 거리, 해밍 거리, 맨해트 거리 등 을 이용한다.)

Page 52: Web viewit업계에서는 2~3년 마다 유행어가 나타나는데, 앞선 키워드 ‘클라우드’가 완전히 정착한 후 다음으로 가장 많이 주목 받는

분류명이 있는 원래의 데이터들을 훈련데이터세트와 검증 세트로 나눈다.

평가 척도를 선택한다.

k값을 변화 시켜가며 k-NN 을 여러 번 수행하고 매번 평가척도의 값을 계산한다.

평가척도가 가장 좋을 때의 k값을 최적값으로 한다.

분류명을 예측하고자 하는 요소로 구성된 검증세트를 만든다.

K-평균법 이란 데이터의 여러 요소를 k개로 묶어주는 군집화 알고리즘이며 사용자들을 세분하여 그들에게 맞는 경험을 제공하기 위하여 사용된다.

군집화 알고리즘 수행과정

d 차원 공간에서 k개의 중심점(군집의 중심)을 임의로 선택한다. 데이터에 가까운 점으로 하되 서로 떨어져 있는 것으로 한다.

각 데이터 포인트를 가장 가까운 중심지에 할당한다.

중심점에 할당된 데이터 포인트(ex 사용자)들의 평균 위치로 중심점을 이동한다.

할당작업에 변화가 없거나 거의 없을 때까지 앞선 두 단계를 반복한다.

 k-평균점의 문제점

k값은 1≤k≤n 이고 n 은 데이터 포인트의 전체 개수라는 상한값이 있지만 k값의 선택은 과학적보다는 분석자의 감에 많이 의지한다.

수렴 문제: 단일해가 존재하지 않는 경우, 수렴하지 않는다.

해석 문제: 어떤 경우에는 정답이 전혀 도움되지 않는다.

이러한 문제점들이 있음에도 불구하고 k-평균법은 마케팅, 이미지 분할 등에 널리 이용되고 있다.

6. Doing Data Science 문제 풀이

Page 53: Web viewit업계에서는 2~3년 마다 유행어가 나타나는데, 앞선 키워드 ‘클라우드’가 완전히 정착한 후 다음으로 가장 많이 주목 받는

R 실행

연습문제 풀이를 위해 콜롬비아 대학 사이트의 예제를 부르는 코드이다. 총 1000줄의 데이터가 있고,

이것을 분류하는 연습을 할 것이다.

각각의 파일은 2012 년 5월 중 뉴욕타임즈 홈페이지에 기록된 하루 분량의 광고 노출횟수와

클릭횟수를 담고 있다. 각 행은 사용자를 의미하며, 5개의 열은 각각 나이, 성별(0=여성, 1=남성),

노출횟수(Impression), 클릭횟수, 로그인 횟수를 의미한다. head(data1)은 불러온 데이터의

윗부분을 조금 보여주면서 구성이 어떻게 되어있는지 알 수 있다.

데이터를 각각 0~18, 19~24, 25~34, 35~44, 45~54, 55~63, 64~ 로 그룹을 지어주기 위해

age_group 이란 항목을 생성해 cut 이란 함수를 써서 분류하였다.

이 표를 통해 (-Inf,0]은 비로그인 사용자인을 알 수 있다. 그 이후의 그룹은 모두 로그인한 사용자이며

성별과 나이가 부여됨을 알 수 있다.

Page 54: Web viewit업계에서는 2~3년 마다 유행어가 나타나는데, 앞선 키워드 ‘클라우드’가 완전히 정착한 후 다음으로 가장 많이 주목 받는

install.packages("doBy") 란 명령어는 우리가 분석에 필요한 패키지를 인터넷에서 다운받아 설치

해준다. R studio 에는 모든 함수가 설치되어 있지 않기 때문에 각각 필요한 함수를 찾아 설치하는

작업을 해줘야 다음으로 진행 할 수 있다. ibrary 는 방금 설치한 "doBy"의 패키지를 사용할 수 있게

해주는 명령어이다.

마찬가지로 install.packages(""ggplot2")를 이용해 그래프를 그리는데 필요한 패키지를 설치하고,

library 함수로 ggplot2 의 패키지를 사용할 수 있게 해준다. 여기까지 마쳤으면 데이터를 그래프로

나타낼 준비가 된 것이다.

Page 55: Web viewit업계에서는 2~3년 마다 유행어가 나타나는데, 앞선 키워드 ‘클라우드’가 완전히 정착한 후 다음으로 가장 많이 주목 받는

첫 번째 그래프는 age_group 간에 광고에 노출된 횟수(Impressions)에 따른 인원수를 보여준다. x

축이 노출 횟수, y 축이 인원수를 나타내며 각 해당인원을 age_group 으로 묶어 색으로 구분함을 볼

수 있다. 대체적으로 5번에서 가장 많은 인원이 나타냄을 알 수 있고, 또한 모든 연령대에서 가장 많은

분포를 나타냄을 알 수 있다.

두 번째 그래프도 마찬가지로 age_group별로 노출 횟수를 보여준다. 여기서 평균은 박스안의

가로선이며, 이는 대부분 5근처에 머물러 있음이 보인다. 앞선 그래프에서 대부분의 연령대에서 노출

횟수 5 에서 가장 인원이 많음과 상관관계가 있음을 알 수 있다.

기존 데이터에 hasimps 라는 항목을 더 만들어 노출 횟수를 0 과 0 이 아닌 데이터로 구분을 해

Page 56: Web viewit업계에서는 2~3년 마다 유행어가 나타나는데, 앞선 키워드 ‘클라우드’가 완전히 정착한 후 다음으로 가장 많이 주목 받는

주었다. summaryBy 를 통해 1번 분류에서 Impressions 가 모두 0임을 확인했다. 노출 횟수가

없으므로 Clicks 도 없다. 2번은 노출 횟수가 있어도 Cilcks 이 0 이 될 수 있음을 보여준다.

광고 노출 횟수가 0 보다 클 때, 클릭률(Clicks/Impressions)에 대한 연령그룹별

확률밀도그래프이다. 그래프 상에서 클릭률이 0 일 때 가장 많은 것으로 보아 광고가 노출이 되어도

보통 클릭하지 않음을 유추 할 수 있다.

이번에는 클릭 횟수가 0 보다 클 때, 클릭률(Clicks/Impressions)에 대한 연령그룹별

확률밀도그래프이다. 그래프를 클릭률의 밀도가 0.25 보다 작을 때에 가장 몰려있다. 이를 통해 알 수

있는 것은 클릭을 한 사람들이 4~5번에 1번 꼴로 광고 노출에 반응함을 알 수 있다.

Page 57: Web viewit업계에서는 2~3년 마다 유행어가 나타나는데, 앞선 키워드 ‘클라우드’가 완전히 정착한 후 다음으로 가장 많이 주목 받는

Clicks 이 0 보다 클 때, 연령 그룹별 클릭 횟수를 나타낸 그래프이다. 모든 연령대에서 평균 1회

광고를 클릭하고 2회 이상은 극히 드문 것을 알 수 있다.

Clicks 이 0 보다 클 때, 클릭 횟수별 나이의 확률밀도그래프이다. 앞선 boxplot 에서도 보았던 것처럼

1 에 가장 많은 분포를 나타낸다.

Page 58: Web viewit업계에서는 2~3년 마다 유행어가 나타나는데, 앞선 키워드 ‘클라우드’가 완전히 정착한 후 다음으로 가장 많이 주목 받는

데이터에 scode 항목을 추가하고, 광고 노출 횟수가 0 인 경우 “NoImps", 노출 횟수가 0 이상이고

Clicks 가 0 인 경우 ”Imps", 마지막으로 클릭 횟수가 0 이상일 경우 “Clicks"로 범주화 하였다. 이제

head 함수를 통해 우리가 추가했던 항목들을 확인 할 수 있다. age_group, hasimps, scode 를

추가해 각각을 범주화 한 데이터가 보인다.

이 마지막 표는 우리가 원하는 결론에 이를 수 있는 결과물이다. (별첨 #1) 여기서 각각 데이터의

의미를 보자. scode 는 바로 위에서 말했던 노출 횟수와 클릭 횟수에 관한 분류이고, Gender 는 성별,

age_group 은 나이별 분류, 마지막인 Impressions.clen 은 그에 따른 광고 노출 총 횟수이다.

age_group (-Inf, 0]은 비로그인 사용자기 때문에 가장 많은 광고 노출 횟수를 보이지만 우리가

원했던 데이터는 아니다. 따라서 그다음 행의 데이터부터 분석해보자. 2번 행의 결과는 Clicks 이 1

번이상인 그룹에서 성별이 여자이고, 연령 그룹이 1~18세까지의 총 노출 횟수가 846번인 것이다.

마찬가지로 다음 행들을 분석 할 수 있고, 이를 통해 우리가 궁극적으로 알 수 있는 것은 광고를

한번이라도 클릭 한 사람들 중 성별 연령대별 광고 노출 횟수를 통해 어느 연령대에 맞춘 광고가

효율적인지 유추 할 수 있을 것이고, 그에 따라 광고의 종류 및 빈도를 조절해 수익을 증가 시킬 수

있는 방법을 찾을 수 있을 것이다. 지금 이 데이터는 하루치 분량이므로 정확성이 떨어진다. 그리고

또한 빅데이터라고 부를 수도 없을 것이다. 하지만 매일 매일의 데이터를 쌓아가며 위의 방법으로

분석을 한다면 데이터의 양은 많아지지만 정확성이 올라가고 그에 따른 광고 경향을 맞출 수 있는 한

방법이 될 것이라 생각된다.

  scode Gender age_group Impressions.clen1 Clicks 0 (-Inf,0] 177762 Clicks 0 (0,18] 846

Page 59: Web viewit업계에서는 2~3년 마다 유행어가 나타나는데, 앞선 키워드 ‘클라우드’가 완전히 정착한 후 다음으로 가장 많이 주목 받는

3 Clicks 0 (18,24] 7794 Clicks 0 (24,34] 13615 Clicks 0 (34,44] 16756 Clicks 0 (44,54] 14947 Clicks 0 (54,64] 20068 Clicks 0 (64, Inf] 25989 Clicks 1 (0,18] 152510 Clicks 1 (18,24] 89011 Clicks 1 (24,34] 150912 Clicks 1 (34,44] 191713 Clicks 1 (44,54] 164514 Clicks 1 (54,64] 233115 Clicks 1 (64, Inf] 148616 Imps 0 (-Inf,0] 11840117 Imps 0 (0,18] 600118 Imps 0 (18,24] 1553819 Imps 0 (24,34] 2569020 Imps 0 (34,44] 3129021 Imps 0 (44,54] 2856322 Imps 0 (54,64] 1862623 Imps 0 (64, Inf] 1558524 Imps 1 (0,18] 1075425 Imps 1 (18,24] 1780726 Imps 1 (24,34] 2924127 Imps 1 (34,44] 3551228 Imps 1 (44,54] 3214329 Imps 1 (54,64] 2149930 Imps 1 (64, Inf] 888731 NoImps 0 (-Inf,0] 92932 NoImps 0 (0,18] 4333 NoImps 0 (18,24] 12434 NoImps 0 (24,34] 16535 NoImps 0 (34,44] 21936 NoImps 0 (44,54] 22437 NoImps 0 (54,64] 11838 NoImps 0 (64, Inf] 12539 NoImps 1 (0,18] 8340 NoImps 1 (18,24] 132

Page 60: Web viewit업계에서는 2~3년 마다 유행어가 나타나는데, 앞선 키워드 ‘클라우드’가 완전히 정착한 후 다음으로 가장 많이 주목 받는

41 NoImps 1 (24,34] 20842 NoImps 1 (34,44] 24743 NoImps 1 (44,54] 21944 NoImps 1 (54,64] 15845 NoImps 1 (64, Inf] 72

Ⅲ. 결론 및 제언

이번 연구를 통해 빅데이터가 무엇인지 알아보았다. 이제 우리가 배운 것과 앞으로의 방향을

제시하면서 이 보고서를 마무리 짓고자 한다.

(1) 지금까지 무엇을 배웠는가.

순서대로 나열해보자면 데이터 과학자가 되기 위한 8 가지 방법을 참고해 빅데이터 전문가로써

우리가 나가야 하는 길을 잡고, Google Power Searching 을 시작으로 HTML, Python, R 등 여러

프로그래밍 언어를 배우며 실제 빅데이터 관련 사업에서 쓰이는 기초적인 이론과 방법을 알아보는

연구를 진행 하였다. 우리가 배운 것은 매우 기본적인 내용과 분석방법이므로 앞으로 우리가

빅데이터의 산업에 관련하여 직업에 종사하기 위해서는 더욱 깊이 있는 내용을 공부 할 필요가 있다.

따라서 그에 맞게 우리가 알아가야 할 내용을 정리해 보았다.

(2) 빅데이터에 대해 더 알기 위해서 배워야 할 앞으로의 과제

실제 현장에서 빅데이터를 다룰 때는 서로 다른 분야의 전문가들로 팀이 구성된다고 한다.

컴퓨터과학, 수학, 통계학, 데이터시각화, 커뮤니케이션 등 각 분야의 전문가들이 서로를 보완해가며

어떤 문제에 관해 분석과 추론을 통해 결론을 도출하는 것이다. 따라서 우리는 수학분야의 전문가로써

공부 방향을 잡되 다른 분야의 지식도 어느 정도 가지고 있을 필요가 있으므로 다음과 같은 과제를

제시하겠다.

첫째로 하둡이다. 하둡이란 간단히 말해 오픈소스로 공개된 대규모 데이터의 분산처리 기술이다.

효율적인 데이터 처리를 위해 저렴한 일반 컴퓨터 여러 대를 나열해 구성함으로써 고성능 컴퓨터

못지않게 성능을 발휘하게 하는 것이다. 이는 우리가 실제로 적용해 보기 어려울 것 같지만 웹상에서

하둡에 관한 다양한 자료와 서버를 제공해 줌으로 이에 관해 정보를 찾고 공부할 수 있다.

둘째로 인포그래픽이다. 우리는 R 을 이용해 데이터를 그래프로 시각화하는 방법을 배웠다. 하지만

빅데이터는 단순한 그래프보다 더욱 정보 전달력을 높이기 위해 간결하고 일목요연한 형태로

시각화하는 것이 중요하다. 그러기 위해서 알아야 할 것이 인포그래픽이다. 우리가 조사한 자료 및

분석된 결과를 그림의 형태로 나타내줌으로써 전달하고자 하는 결과를 명확하고 쉽게 보여주는

것이다. 이를 위한 인포그래픽의 툴은 여러 웹에서 제공되고 있다. 따라서 우리는 정보를 어떻게

Page 61: Web viewit업계에서는 2~3년 마다 유행어가 나타나는데, 앞선 키워드 ‘클라우드’가 완전히 정착한 후 다음으로 가장 많이 주목 받는

표현하는 것이 효과적인지 생각하고, 툴을 이용해 그려낼 수 있는 능력을 키워나가는 것이 중요할

것이다.

셋째로 통계학이다. 빅데이터는 데이터를 정리하며 통계로 인한 새로운 데이터를 뽑아내는 것이

기초이다. 그러기 위해선 기본이 되는 통계학도 어느 정도 알 필요가 있다고 생각된다. 수학과에서

통계에 관한 기본적인 내용은 다루고 있기 때문에 필요한 부분을 각자 공부하면 될 것이다.

넷째, 직관력을 기르는 것이다. 데이터로 새로운 데이터를 뽑아냈다고 하자. 이제 이것으로 우리가

필요에 맞게 반영시켜 이익을 창출해야 한다. 이때 분석이 잘못된 방향으로 빠지게 된다면 이익이

아닌 손실로 발생할 수도 있을 것이다. 따라서 우리가 할 일은 최대한 많은 정보를 보며 느끼고,

생각하면서 문제에 관한 본질을 꿰뚫을 수 있는 능력을 키워야 한다.

(3) 이렇게 배워나가서 우리가 궁극적으로 할 수 있는 것은 무엇인가.

빅데이터가 없었을 때 기존의 방식에선 문제점을 빠르게 파악하지 못해 기업이 손실을 입거나, 대처를

빠르게 하지 못하는 경우가 있다. 하지만 요즘엔 최근 각종 정보매체를 통해 소비자와 직접적으로

연결되어 있어 소통이 빨라졌고, 데이터를 수집하기도 쉬운 환경이 되었다. 물론 데이터를 쉽게 접할

수 있다고 문제점을 빠르게 파악할 수 있는 것이 아니다. 이 때문에 데이터를 분석하고 추론할 수 있는

빅데이터 전문가가 필요해 졌고, 또한 수요도 증가하고 있다. 우리는 이에 발맞춰 빅데이터 전문가가

되기 위한 첫걸음 시작하였고, 이번 연구에서 멈추지 않고 앞서 제시한 과제를 공부하다 보면 점차

빅데이터 팀에 필요한 인재로 발전 할 수 있을 것을 기대한다.

(4) 3 기 수업을 위한 2 기의 건의사항

현재의 수업과정은 빅데이터에 관한 기본적인 내용을 배우는 데는 적절한 것 같다. 보태어 우리가

수업을 받으면서 좀 더 다루면 좋을 만한 내용과 건의할 내용을 말함으로써 보고서를 마무리 하겠다.

처음 빅데이터 연구를 시작한 인원이 8 명 정도 되었는데 마지막 수업 때까지 참여한 인원은 4

명이였다. 빅데이터에 관해 처음 시작으로 배우는 것들이 조금은 난해하고 어렵게 다가와 지루함을

느껴서 더 이상 참여하지 않은 것 같다. 프로그래밍 언어를 가르치는 것뿐만 아니라 처음 수강하는

인원을 대상으로는 일상 속에서 작은 정보들을 이용해 분석해보고, 이를 인포그래픽 등을 이용해

시각화하는 과정이 있으면 수강생 입장에서도 흥미를 느껴 좀 더 효율적인 연구가 될 것 같은 생각이

들었다. 또한 이러한 과정을 통해 더욱 빅데이터의 이해를 높일 수도 있을 것이다.

그리고 사이버 원격강의로 이루어 지다 보니 장소에 구애 없이 강의를 들을 수 있는 점은 좋았지만,

소속감이 떨어져 수업에 조금은 집중이 되지 않는 경향이 있었다. 시간과 장소를 정하여 모두 모여

수업을 진행하면 집중도가 높아지고, 수업을 마친 후 서로 토론하는 시간을 가질 수도 있으므로

이해도 또한 높아질 것이다. 이에 학생 대표를 뽑아 관리하는 것이 효율적인 수업 진행이 이루어 질 것

Page 62: Web viewit업계에서는 2~3년 마다 유행어가 나타나는데, 앞선 키워드 ‘클라우드’가 완전히 정착한 후 다음으로 가장 많이 주목 받는

같다.

마지막으로 이번 2 기의 연구에 많은 도움을 주신 정도현 선배님께 감사의 말씀을 드리면서 글을

마치겠다.

Ⅳ. 출처

Data Science 가 되기 위한 8 가지 단계

http://www.r-bloggers.com/how-to-become-a-data-scientist-in-8-easy-steps-the-infographic/HTML & CSS

http://www.codecademy.com/tracks/web

Python

http://www.codecademy.com/en/tracks/python

R

https://www.datacamp.com/?utm_source=infographic&utm_medium=blog%20&utm_content=infographic%20how%20to%20become%20a%20data

Page 63: Web viewit업계에서는 2~3년 마다 유행어가 나타나는데, 앞선 키워드 ‘클라우드’가 완전히 정착한 후 다음으로 가장 많이 주목 받는

%20scientists&utm_campaign=infographic%20how%20to%20become%20a%20data%20scientists

Ⅴ. 참고 문헌

1. 정우진 지음, [빅데이터를 말하다], 클라우드북스, 2014 개정증보판.

2. 스즈키 료스케 지음, 천재성 옮김, [빅데이터 비즈니스], 더숲, 2012.

3. 레이철 슈트, 캐시 오닐 지음, 윤영민 외 4 명 옮김, [데이터과학 입문], 한빛미디어, 2014.

4. 시로타 마코토 지음, 김성재 옮김, [빅데이터의 충격], 한빛미디어, 2013.