-
3주 1일차 TIL 정리웅진 STARTERS 부트캠프 2023. 2. 20. 17:52
3주 1일차에는 R을 처음으로 입문하며 R의 개념과 자료형 등 기초적 지식들을 학습했다.
※ R이란 ※
- R의 용도
1. 전산통계학을 위한 프로그래밍 언어: 산술적 계산에 강하다.
2. 화상처리(시각화)를 위해 만들어진 언어.
- R의 장점
1. 전산통계학 기반 프로그램인 만큼, 통계 계산용 패키지가 우수하다.
2. 강력한 시각화 패키지를 제공한다.
3. 확장성이 뛰어나다. (R을 활용해 웹페이지를 만들 수도 있다.)
4. 유저 커뮤니티 활성화되어 정보 탐색이 용이하다.
5. 학습난이도가 낮다.
6. 다양한 OS환경에서 제공된다.
7. 무료로 사용이 가능하다.- R의 단점
1. 처리속도가 느리다.
2. 대규모 IT서비스 개발 등에는 접목이 어렵다.
3. 보안 기능이 없어 기업 사용이 힘들다.- R 활용 가능 분야
1. 데이터 마이닝: 데이터 모집단의 패턴을 찾아 새로운 데이터를 군집화, 분류, 예측
- 군집화: 비슷한 계열의 데이터를 모음
- 분류: 군집화한 데이터를 분류함
- 예측: 새로운 데이터가 어느 위치에 자리잡을지 예측
2. 텍스트 마이닝: 웹 등에서 방대한 텍스트 정보 크롤링
- 소셜 네트워크 분석: 사람 간의 관계 시각화
eg) 연예인 피쳐링 관계 시각화텍스트 마이닝 예시 3. 주식 분석 ( 숫자 형식 데이터에 대한 분석에 강함)
4. 이미지 분석
- 이미지 라벨링
- 이미지 구획 나누기이미지 라벨링 예시 5. 사운드 분석
- 아날로그 소리 데이터를 디지털 벡터 데이터로 변환
- SST: Speech To Text
- TTS: Text To Speech
- 음성 품질 향상
6. 웹 애플리케이션 개발
- R결과만을 사용하여 웹에서 데이터 분석 내용 시각화 가능- 유관 및 유사 프로그램
1. excel
2. 파이썬
3. matlab - 공학용 프로그램 패키지(행렬연산, 수식계산에 강력, 3차원 시각화성능 높음)
4. SQL
5. Tableau
6. Power BI - MS Office 기반 툴
7. Google Analytics - 웹 로그 데이터 분석 툴
※ 빅데이터의 개념 - 3V, 5V, 7V ※
1. 3V:
- Volume(양): 물리적 데이터의 양이 굉장히 많다.
- Variety(다양성): 데이터의 다양성이 높다
- Velocity(속력): 빠른 생성, 빠른 처리
2. 5V
- Veracity(신뢰도): 데이터를 얼마나 신뢰할 수 있는지?
- Value: 가치를 창출할 수 있는 데이터인가?3. 7V
- Validity(적합성): 추출한 데이터가 분석대상으로 적합한가?
* Volatility(변동성): 휘발성이 낮은가? (오래 지속될 수 있는 데이터인가?)
※ 사전 설정 ※
- 환경 설정
global options / project options
(전체 옵션) (프로젝트별 옵션)
- 유용한 사전 설정
* soft wrap 기능: 자동줄바꿈 code - editing - soft wrap r source files
* 선택된 줄 하이라이트 기능: code - display - highlight selected line
* 폰트 및 배경 설정: appearance
* 인코딩 방식 설정: code editing - text encoding - utf-8로 설정
- 자주 쓰는 단축키
* ctrl + shift + n : 새로운 소스파일 열기
* ctrl + shift + c : 주석화* shift + alt + k : 단축키 열람
※ 데이터와 객체의 타입 ※
- 데이터 타입: object, class
* class: 객체의 타입
class() 함수 안에 변수를 넣으면 객체의 타입을 알 수 있다.
1. numeric 타입: 실수형 타입
eg) 1, 1.2, -1.3, 0
2. integer 타입: 정수형 타입
- 객체의 타입을 integer로 지정하려면 값 뒤에 L을 붙일 것.
eg) 1L, 20L, -30L
3. logical 타입: 논리형
eg) TRUE, FALSE, T, F
4. character 타입: 문자형( " " )
eg) "chlidren", "Hello", "bird"
5. complex 타입: 복소수형
eg) 1+1i, 1-3i
6. 그 외 특별한 데이터 객체
- Inf(Infinity): 무한대값(클래스는 numeric)
- NA(Not Available): 값이 없다
- NaN(Not a Number): 나올 수 없는 숫자
※ 데이터의 종류 ※
- 데이터 종류(차원)
1. 1차원 구조: 단일 주제 데이터들을 모아둠. (series데이터)
eg) 2021년 국가별 GDP2. 2차원 구조: 복수 주제 데이터들을 모아둠. (dataframe 데이터) > 가장 활발히 인식된다.
eg) 연도별 국가별 GDP
3. n차원 구조 데이터: 1차원 데이터들을 모아 놓은 구조
eg) 연도별 국가별 GDP, 국가부채, 경제규모 성장률- 데이터 종류(값)
1. 범주형: 데이터 값이 이산적
- 보통 논리값 혹은 문자로 표현
- 산술연산 불가능
2. 수치형: 데이터 값이 연속적
- 수치로 표현
- 산술 연산 가능
※ R의 자료구조 ※
* 벡터(vector) : 자료형이 같은 1차원 구조
- 생성 방법:
* c(데이터1, 데이터2, 데이터3, ...)
eg)class(c(1,1,1)) → numeric
class(c('a','b')) → character
class(c(T,F)) → logical* vector( "데이터 타입", length = 벡터 크기 )
- 자동으로 형변환이 일어나 서로 다른 자료형이 들어가더라도 우선순위에 의해 통일된다.
class(c(1,'a',T)) → charcater로 변환 c( '1', 'a', 'TRUE' )
→ 형변환 우선순위: charcater > numeric > logical
* 행렬(matrix) : 2차원 구조
- 행(row), 열(col)로 구성
- 생성 방법:
1. 벡터값 생성해놓기
2. matrix(nrow = 행크기, ncol = 열크기)
3. 열을 우선으로 데이터가 채워진다. (byrow = T로 지정하면 행부터 채워진다.)class(matrix(c(1,2,3,4,5,6),nrow=2,ncol=3))
→ matrix, array (matrix는 dim(dimention)의 속성 크기가 2인 자료구조, array는 dim의 속성 크기가 2이상인 자료구조들.
(array 안에 matrix가 포함됨)* 리스트(list): 서로 다른 데이터타입이 존재하는 값들의 모음. (다중형 데이터)
- list 안에 vector 포함됨.
* 데이터프레임(dataframe): list의 집합
- matrix에서 한 행: 벡터 / df에서 한 행 : 리스트
- 생성: data.frame(vector, vector, vector, ...)
→ 각 vector는 col값으로 삽입됨. → 열별로는 list로 형성된다.
→ 벡터를 변수로 지정하고 넣으면 변수명이 column명이 된다.age = c(30L,33L,35L,30L,68L,33L) job = c('무직','서비스','관리직','관리직','은퇴','관리직') marital = c('결혼','결혼','미혼','결혼','사별','결혼') balance = c(1787,4789,1350,1476,4189,3935) campaign = c('휴대폰','휴대폰','휴대폰','Unknown','유선전화','휴대폰') y = c(F,F,F,F,T,T) result = data.frame(age,job,marital,balance,campaign,y)
※ 변수와 함수 ※
- 변수: 변할 수 있는 값.
* 변수란?객체(object)를 저장해놓는 보관함.
* 변수 초기화: 최초로 값을 저장하는 행위.
a <- 10
alt + ' - ' 를 통해 ' <- ' 를 바로 쓸 수 있다.
* 변수 선언만 하기a <- NULL
(NULL : 값이 없다. NA: 값이 존재해야 하는 공간에 값이 없다)
* 변수는 연산의 결과를 할당 가능
a ← c(1,2,3) + 5
* 변수는 NULL, NaN, NA등도 할당 가능
* 변수명 작명규칙
- 첫글자: 문자 또는 마침표만 사용 가능.
- 알파벳 대소 구분.* 기타 변수 관련 함수
ls() : 변수 리스트 보기
rm(변수명) : 변수 없애기- 함수: 입력 변수 x를 통해 y라는 결과변수를 출력하게 하는 장치( f )
* 매개변수: 함수의 입력 변수
* 유용한 내장 함수
- as 함수: 데이터 형식을 강제로 변환시킴.
데이터 우선순위 낮은 타입 → 높은 타입으로의 변화는 모두 가능(logical → numeric / logical → character / numeric → character)
데이터 우선순위 높은 타입 → 낮은 타입으로의 변화는 일부 가능(numeric → logical: 0은 FALSE, 그외숫자는 TRUE )
- seq 함수: from 부터 by씩 증가하는 length개의 숫자로 이루어진 벡터 생성
seq(length=5,from=3,by=2) c(3,5,7,9,11) # 파이썬의 range함수처럼도 쓸 수 있다. # 위아래 코드 동일 seq(3,11,2) # 3~11까지 2간격
* R의 인덱싱을 할 때엔 인덱스가 1부터 시작하며, 슬라이싱 시에 끝자리 또한 포함한다.
** R에서 슬라이싱 시 -값을 넣으면 해당 값을 제외한 다른 값들을 출력한다는 뜻이다.
* rnorm 함수: 평균이 mean, 분산이 sd인 정규분포를 따르는 n개의 숫자로 이루어진 벡터 생성.
rnorm( n=4, mean=0, sd=1)
* runif 함수: [min, max] 범위 사이 n개의 난수로 이루어진 벡터 생성 (random함수와 동일)runif( n=4, min=1, max=100)
※ 그룹 토의 및 멘토링 내용 정리 ※
1. 멘토링에서 질문한 내용
Q1. 벡터값은 하나의 자료형으로만 이뤄져야 한다고 이해했는데, c( )으로 벡터를 생성할 때 안에 서로 다른 자료형이 들어가도 오류가 나지 않는 이유가 있을까요?
A. 자료형이 자동으로 변환되기 때문에 변환 후 자동으로 벡터의 조건을 충족하기 때문에 오류가 나지 않는다.
Q2. 변수 할당을 배우기 전 실습을 하면서 파이썬처럼 ' = ' 으로 변수 할당을 했었는데, = 을 써도 ' <- ' 과 같은 기능이 수행되는 건가요? 그렇다면 그냥 RStudio에서 용인해주는 것인가요, 아니면 R의 문법에 둘 다 포함돼있는 것인가요?
A. 둘 다 사용이 가능하긴 하지만, 제한적인 상황이 종종 있으므로 <- 을 쓰는 것이 바람직하다.
2. 팀스터디에서 토의한 내용은 특별히 없었다.
3. 리뷰
R과 파이썬 간의 유사점이 상당히 많아 학습에 어려움이 없었다. 하지만, 가끔씩 등장하는 차이점들(특히나 인덱싱과 슬라이싱)에 유의하면서 학습해야 할 것 같다고 느꼈다.
'웅진 STARTERS 부트캠프' 카테고리의 다른 글
3주 3일차 TIL 정리 (0) 2023.02.22 3주 2일차 TIL 정리 (0) 2023.02.21 유데미 스타터스 취업 부트캠프 4기 - 데이터분석/시각화(태블로) 2주차 학습 일지 (0) 2023.02.19 2주 5일차 TIL 정리 (4) 2023.02.17 2주 4일차 TIL 정리 (0) 2023.02.16