R에는 다양한 포맷의 파일들을 매우 쉽게 가져오는 기능을 제공하고 있다. 파일의 입출력 실습은 붓꽃(IRIS) 데이터를 기반으로 진행해보도록 한다. 아이리스 데이터1,5.1,3.5,1.4,0.2,Iris-setosa 2,4.9,3,1.4,0.2,Iris-setosa 3,4.7,3.2,1.3,0.2,Iris-setosa 4,4.6,3.1,1.5,0.2,Iris-setosa 5,5,3.6,1.4,0.2,Iris-setosa 6,5.4,3.9,1.7,0.4,Iris-setosa 7,4.6,3.4,1.4,0.3,Iris-setosa 8,5,3.4,1.5,0.2,Iris-setosa 9,4.4,2.9,1.4,0.2,Iris-setosa 10,4.9,3.1,1.5,0.1,Iris-setosa 11,5.4,3.7,1..
영상에서 썸네일을 자동으로 추출하여, 썸네일을 만들거나 이미지 파일을 분석하는 방법을 활용할 수 있을 것이다. 필자는 썸네일의 용도보다는 주기적으로 영상에 이미지를 추출하여 사진을 분석하는 용도로 사용하기 위해서 구글링을 하게 되었다. 다양한 방법이 있고, 라이브러리마다 성능의 차이는 있을 수 있다. 예를 들어 좀 더 복잡한 방식은 더 높은 성능을 자랑할 수 있다. 단순한 라이브러리는 상대적으로 낮은 성능(ex: 추출 속도)을 보여줄 수 있지만 이미지를 수집하는데 큰 지장이 없기에 이번에는 쉬운 방법의 썸네일을 추출하는 라이브러리를 소개하고자 한다. Maven 설정 Java 기반이며 필자는 Maven 기반으로 프로젝트를 생성하였다. 라이브러리는 "jcodec"이라는 라이브러리를 활용하였는데 아래 2개의 ..
IRIS 데이터 인공지능을 하는 사람이면 가장 자주 보는 범용적인 데이터 셋의 2개가 있는데 하나는 손글씨 이미지 집합들인 MNIST이고, 분류 문제를 하는 간단하고 쉬운 데이터 집합으로 IRIS가 존재한다. IRIS하면 아무래도 드라마를 생각하거나 인간의 홍채를 생각할 수 있는데 인공지능에서 사용하는 이 데이터셋은 특정 꽃을 뜻한다. 이 꽃이 아이리스(한글명 붓꽃)이다 IRIS 데이터는 데이터프레임으로 구성되어 있으며 매우 심플하고, 사이즈가 작기 때문에 알고리즘을 이해하기가 상당히 쉽다. 다만 데이터가 작기 때문에 딥러닝과 같이 데이터 많을수록 유리한 알고리즘에서는 검증하기가 애매한 면이 있긴 하다. IRIS 데이터셋 구조 R에서는 IRIS 데이터가 내장이 되어 있어서 별도로 호출을 할 필요가 없다...
매트릭스와의 차이점 데이터 프레임에 배우기에 앞서 같은 2차원 데이터 주고인 매트릭스와의 차이점을 다시 한번 상기해보도록 하겠다. 매트릭스동일한 데이터 구조만 허용 데이터 프레임다양한 데이터 구조의 허용 데이터 프레임은 쉽게 엑셀을 머리속에서 떠올리면 된다. 엑셀에서 우리가 열에 저마다 다른 타입의 데이터를 넣을 수 있다. 번호이름 키 몸무게 1 홍길동 180 70 2 고길동 170 70 3 둘리 150 60 4 또치 150 50 위와 같은 숫자, 문자형 등이 섞여 있는 2차원 데이터 구조가 데이터 프레임이며, 매트릭스는 숫자 혹은 문자형 등의 한가지 타입으로만 통일되어 있는 차이가 있다. 데이터 프레임 생성 위의 테이블 예제를 토대로 데이터 프레임을 생성해보도록 하자 > numbers numbers[1..
2차원 데이터 앞서, 벡터(Vector)에 관련된 포스팅을 길게 썼는데 벡터는 1차원 데이터 구조이다. 벡터를 사용하는 경우도 많이 존재하지만, 사실상 벡터보다는 2차원 데이터를 더 많이 사용하게 된다. 우리가 흔히 사용하는 엑셀(Excel)만 하더라도 행만 사용하는 경우는 단순히 계산하기 위해서 데이터를 넣는 정도를 제외하면 없다고 봐도 무방할 정도이다. 이번편은 2차원 데이터의 가장 기본적인 매트릭스(Matrix) 명령어를 사용해보고, 다음 포스팅에는 본격적으로 가장 많이 사용하게 될 데이터 프레임(Data.Frame)에 대해서 포스팅 하고자 한다. Matrix와 Data.Frame의 차이 우선 본격적으로 매트릭스에 대한 설명에 앞서 매트릭스와 데이터프레임에 대한 차이를 설명한다면, Matrix를 데..
프로그램을 짜게 되면, 참(True) 혹은 거짓(False)과 같은 값을 자주 활용하게 됩니다. 이러한 값 혹은 형태를 불리언(Boolean) 혹은 불(Bool)이라고 합니다. 참과 거짓 값을 IF 조건절에 활용하게 되면, 프로그램을 분기처리할 수 있습니다. IF조건은 For 반복문과 함께 가장 많이 활용이 되며, 이 2가지만 알아도 간단한 프로그래밍은 문제없이 만들 수 있습니다. 사실 프로그램이라 하면, IF조건과 For문의 심화과정(?)이라고 생각해도 제 개인적인 생각으로는 크게 다르지 않는 것 같네요. Bool 형 예제 12345678910111213141516171819202122>>> apple = True; # 사과가 있다>>> orange = False; # 오렌지는 없다>>> orangeF..
인트로 이전 시간에는 벡터(Vector)의 심화 사용 방법에 대해서 알아봤습니다. 오늘은 R이 왜 데이터 분석에 특화된 언어인지 보여줄 수 있는 벡터의 연산에 대해서 보여드리도록 하겠습니다. R와 파이썬은 바로 이 벡터라는 부분이 자바나 C, C++과 다르게 매우 쉽게 핸들링이 가능하기 때문에 머신러닝이나 데이터 분석 등에 매우 유용하게 쓰입니다. 물론 데이터를 최종적으로 이쁘게 출력해주는 비주얼 적인면도 있지만, 제일 좋은건 강력한 기능들을 쉽게 다루는 것이겠지요. 벡터 연산 R은 일반적인 언어와 다르게 벡터와 같은 데이터를 매우 쉽고 강력하게 다룰 수 있는 방법을 제공합니다. 아래는 쉽게 벡터들을 연산하는 방법들입니다. > a b d d ## [1] 10 11 12 13 14 15 16 17 18 1..
본 포스팅은 개발자가 아닌 비개발자분들도 포함하여 진행되는 강의입니다. 그러다보니 개발자분들은 너무 쉬운것을 왜 저렇게 많이 설명하지?라는 생각을 가질 수 있는 점 미리 양해 바랍니다. 현재 파이썬을 다루는 사람들을 보면 개발자분들도 물론 많지만 데이터 분석이나 통계 등을 하기 위해서 다루는 분들 그리고 최근에는 텐서플로우같은 머신러닝, 딥러닝등을 다루기 위해서 배우는 분들도 있기 때문에 최대한 자세히 쉽게 다루고자 노력하겠습니다. For 문을 이용한 반복문 처리 왠만한 프로그램 언어(C, C++, Java, Python 등등)에는 대부분 For라는 반복문을 제공합니다. 우리가 흔히 프로그램은 2가지만 알아도 왠만큼 다 만들 수 있다라고 합니다. 그 중에 하나는 제어문(If ~ else)이고, 그리고 오..
인트로 이전 시간에는 벡터를 사용하는 방법에 대해서 알아봤습니다. 사실 R은 다른 언어와 다르게 강력한 프로그래밍 기능이 있는 것이 아니고 대다수 R을 하는 이유는 데이터분석이기 때문에 초반에 배워야 되는 부분이 많지 않습니다. 게다가 워낙 다양한 패키지(라이브러리들...)이 제공되고 있어서, 데이터만 쏙 넣으면 그래프가 출력이 되고 알아서 머신러닝이 돌아가고 등등 다양한 강력한 기능들을 제공해주기 때문에 초반에 기초를 확실히 잡아두는 것이 좋습니다. Java처럼 객체지향을 공부해야 되는 것이 아니니, 초반에 약간 지루할 수 있어도 변수, 벡터, 리스트 등의 데이터 구조를 확실히 익히셔야 할 것입니다. 오늘은 벡터를 조금 더 다양하게 다루는 방법에 대한 포스팅입니다. 저번 강의보다는 조금 더 흥미로울 수..
List 형으로 String으로 변환하는 방법이야 for 문으로 list Loop를 돌면서 String에 Add하고 처리하는 고전적인 방법이 있는 반면 stream 을 활용하여 처리하는 방법, 외부 라이브러리를 사용하여 처리하는 방법등 여러가지 방법이 존재할 것이다. 본 강의는 List를 Loop돌아서 String에 Add하는 방법 뿐만 아니라 외부 라이브러리와 Stream 기능을 써서 처리하는 2가지 방법도 추가하여 포스팅 하고자 한다 실험 방법 우선 랜덤형으로 List 형 데이터를 N개 생성한다. 랜덤 소스는 아래와 같다. /** * int를 받아서, 랜덤 알파벳을 출력함 * * @param wordLength * @return */public String randomAlphaWord(int word..
인트로 이전 시간에 R의 기본 구조와 변수에 대한 설명을 하였습니다. 오늘은 R을 좀 더 복잡한 데이터 타입인 벡터에 대해서 이해를 해보로록 하겠습니다. 이전 강의R강의 #1 - 데이터 기본구조편R강의 #2 - 변수 이해하기편 벡터(Vector) 학창시절 수학 시간에 졸지만 않았다면 벡터(Vector)라는 것을 다들 들어보셨을 겁니다. 누구는 저 말을 보자마자 R을 끄고 싶을지 모르겠지만 최소한 컴퓨터에서는 수학시간보다는 재미있으니 조금만 참고 이 개념을 이해하셨으면 좋겠습니다. 일단 벡터는 같은 데이터의 타입의 배열 데이터를 의미합니다. 즉, 숫자들이라면 숫자의 모음... 문자형이라면 문자들의 배열형을 뜻합니다. 벡터 생성x
간혹 프로젝트를 하다보면, 정렬을 어렵게 수행하는 사람들을 보는 경우가 있다. 예를 들어 sort algorithm을 별도로 만들어서 리스트 데이터를 정렬하는 경우를 본적이 있는데, 복잡한 구조라면 필요한 경우도 있겠지만 간단한 데이터 타입의 리스트 구조마저 자신들이 만들어 놓은 알고리즘으로 정렬을 하는 말그대로 삽X을 하는 경우를 종종 본적이 있다. JAVA에서는 매우 간단하게 정렬을 할 수 있는 방법을 제공하니, 본인의 알고리즘을 믿지 말고 제공해주는 라이브러리를 활용하는 것이 현명하겠다. List 정렬하기 java.util 라이브러리 안에는 Collections라는 하위 라이브러리가 존재한다. 이놈은 여러가지 다양한 기능을 제공하는데(정렬, 셔플 등등) 정렬에 대해서만 정리해보도록 하겠다. 오름차순..