본문 바로가기

기술부터 가치까지

2. Orange3로 해보는 데이터 분석 — 제주 머신러닝 스터디 그룹 & 머신러닝 야학

제주에서 머신러닝 스터디 그룹을 만들어 머신러닝 야학에 참여합니다!

해당 게시물은 머신러닝 스터디 그룹의 과제인 강의 요약 블로깅입니다.

대부분의 멘트는 머신러닝 야학에서 가져온 것임을 밝힙니다.

생활코딩은 동의 없이 수정, 배포를 허락하고 있습니다.

해당 강의는 생활코딩 유튜브에서도 무료로 시청하실 수 있습니다.

오랜지3

Orange3–1. 오리엔테이션

오랜지3(Orange3)는 코드 없이 드래그 앤 드롭으로 데이터를 분석할 수 있는 도구입니다. 시각화 뿐만 아니라 머신러닝에 사용되는 다양한 Model도 제공하는 강력한 도구입니다.

입력 — 처리 — 출력

앞서 말씀드린 것처럼 우리는 모든 수학적 원리를 파악하기 보다는, 입력, 처리, 출력을 경험해보고 이 도구가 얼마나 강력한 도구인지, 머신러닝이 얼마나 강력한 도구인지 재빠르게 살펴보도록 하겠습니다

- 표(수정, 처리)

- 시각화

- 머신러닝

 

오랜지3 설치

오랜지3를 다운로드 받아봅시다.

orange 홈페이지

다운로드 버튼을 눌러보니 3.26버전이군요.

orange 홈페이지

 

그런데 아래 명령어를 보니 pip(Python 패키지 관리)으로도 설치할 수 있네요. Python이라는 Programming 언어로도 다룰 수 있는 SW로 보입니다. 저는 다운로드를 받아보도록 하겠습니다. 오랜지는 467MB이니 용량이 넉넉하신 곳에서 설치를 하셔야 할 것으로 보입니다.

생활코딩 코딩야학에서 제공하는 DataSet을 한번 보도록 하겠습니다. 주소(https://bit.ly/orange3-data)는 아래와 같습니다.

 

 

Orange3 -sample example - data

Sheet1 날짜,요일,온도,판매량,오픈시간 2020-06-01 00:00:00,금,20,40,10:00 2020-06-02 00:00:00,토,21,42,10:01 2020-06-03 00:00:00,일,22,44,10:02 2020-06-04 00:00:00,월,23,46,10:01 2020-06-05 00:00:00,화,24,48,10:10

docs.google.com

영상에서 사본을 만들어 사용해달라고 하셔서 사본을 만들도록 하겠습니다. 데이터는 아래와 같습니다.

https://bit.ly/orange3-data

 

기본사용법

orange3를 설치하고 구동시켰습니다.

orange3 구동화면

 

여기서 file을 클릭하여 드래그엔드롭으로 Board에 가져다놓았습니다.

여러분의 google 문서 링크를 URL에 넣어주세요. 그런데, 공개가 안되어 있으면 접근할 수 없으니 아래처럼, 링크를 공유링크로 변경해주세요. 만약 바로 로드가 안되면 Reload를 눌러주세요.

이제 아래처럼 file 앞에 있는 대쉬 형태의 회색 바를 클릭 후 Board안으로 드래그엔드롭을 하면 그 위치에 위젯을 생성할 수 있습니다.

Data Table을 선택해주세요. 그러면 아래와 같이 더블클릭으로 Table을 확인할 수 있습니다.

이번에는 Select Rows를 클릭하도록 하겠습니다.

Select Rows를 하게 되면 값을 filtering 할 수 있는 창이 뜹니다. 이번에는 판매량이 44미만인 값들을 추출해 보도록 하겠습니다. 이렇게 선택한 다음 밖으로 나가 Table을 다시 만들어야 실제 filtering한 값들을 볼 수 있습니다.

이번에는 table을 만들어서 선을 더블클릭해보세요!

그리고 위와 같이 Unmatched Data와 Data를 연결해주세요. 그러면 filetering에서 제외된 결과값만을 Table에서 볼 수 있습니다.

표를 조작하기

select columns 생성하고 더블클릭해주세요.

왼쪽은 감춰진 컬럼이며 오른쪽은 감춰지지 않은 컬럼입니다. 여러분들이 보고 싶은 데이터를 오른쪽으로, 보고 싶지 않은 데이터를 왼쪽으로 옮기시면 됩니다.

이렇게 보고 싶은 데이터만 선택이 된 것을 볼 수 있습니다.

이번에는 수식을 사용하여 하나의 컬럼을 더 만들어보는 시간입니다.

Select Feature를 클릭하면 어떤 Colum을 선택할 것인지 나옵니다. 여러분이 원하는 수식을 뒤에 입력하세요. 저는 판매량에 5000을 곱하였습니다.

table을 보기 위해서는 table을 만들어야 하죠. Feature Constructor 뒤에 Data Table을 더 만들어서 확인해보세요. 매출 컬럼이 생성이 된 것을 볼 수 있습니다.

이번에는 처음에 만들었던 Table뒤에 Table을 만들어 보도록 하겠습니다.

통계와 시각화

자, 이제 통계에 대해서도 살펴봅시다. 이번 시간에는 대표값과 분포에 대해서 알아보도록 하겠습니다. 이 두개의 값을 어림짐작할 수 있게 합니다.

대표값 : 평균(Mean, Average), 중앙값(Median), 최빈값(Mode)

여기서 Mean과 Average는 미묘한 차이가 있습니다. Mean은 숫자들의 평균이고, Average는 앞에 해당 영역(Sector)을 나타내는 단어가 있습니다. 예를 들어 ‘커피 판매량의 평균’이라고 하면 Average라고 말합니다.

하지만 대표값만으로는 분포를 알 수 없습니다. 예를들어 한 반에 학생이 2명밖에 없는 경우, 1반에 100점과 0점, 2반에 50점과 50점이면 평균은 같지만, 그 의미가 같지 않다는 것을 알 수 있습니다. 이를 파악하기 위해 필요한 것이 사분위수, 분산, 표준편차입니다.

자, 이제 Orange3를 이용해서 앞에서 얘기해본 대표값을 시각화 해보도록 하겠습니다.

데이터를 좀 다르게 하였습니다. google 문서에서 사본 만드신 다음 각각 파일의 URL을 만들어 File의 URL 수정해주세요. 만약 로드가 제대로 안될 경우 Reload하시면 됩니다.

4분위수를 표현하기 위해 Box Plot을 만들어주세요. 평균은 44로 동일하고 플러스마이너스 되어 있는 부분은 평균에서 각각 값들이 얼마나 떨어져있는지를 알 수 있습니다. 노란색 선은 중앙값을 나타냅니다. 아래 생활코딩의 그림을 참고해주세요.

Orange 3 6.2 boxplot

 

이번에는 시각화를 해보도록 하겠습니다. scatter plot을 선택해서 하나 만들어주시고 더블클릭을 해보세요. 여기서 확인할 수 있는 것은, 이상치, 군집 정도가 될 것 같습니다!

중간에 Python Script로 Data를 뽑을 수 있는 것이 있길래 한 번 아래와 같이 만들어 보았습니다. 데이터를 선택만 해주면, 해당 데이터가 왼쪽에 출력되는 것을 볼 수 있습니다.

위와 같은 방법을 사용하면 좀 더 다양한 시각화를 할 수 있습니다.

Orange 3–6.4. 상관관계와 인과관계 ​

 

원인은 독립변수, 결과는 종속변수라는 말 기억하시죠? 머신러닝 중 지도학습을, 그중에서도 회귀를 사용하여 결과를 예측하는 프로그램을 만들어보도록 하겠습니다. file을 클릭하면 아래와 같이 각각 데이터에 대한 Role을 설정할 수 있습니다.

각각의 항목이 의미하는 바는 아래와 같습니다. 위와 같이 바꾸시고 Table을 한 번 확인해보세요. 확인한 Table은 아래와 같습니다.

- Skip : 무시해도 되는 데이터

- Meta : 분석을 할 것은 아니지만 참고할 데이터, 예를 들어 날짜.

- Target : 예측하고자 하는 값, 종속변수

- Feature : 원인에 해당하는 값, 독립변수

이제 아래와 같이 우리가 필요한 값들을 그 이름에 걸맞게 설정해줍시다. 그리고 왼쪽 위젯에서 Model을 클릭해주세요.

 

이중에서도 Linear Regression을 가지고 와서 File에 연결해주세요.

이제 새로운 독립변수를 주면 정해진 수식에 따라 값 예측이 가능하게 됩니다!

 

자, 이제 예측할 File(1)의 값들도 아래와 같이 바꿔 주도록 하겠습니다. 여기서 판매량을 Skip한 이유는 우리가 도출하려는 결과이기 때문에 그렇습니다.

이 데이터를 기반으로 예측한 결과값을 확인해보세요! Table을 하나 더 만들어주셔야 합니다.