일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- if문 작성법
- sql
- 빅데이터
- count
- sqld
- %in%
- 총과 카드만들기
- 여러 데이터 검색
- Intersect
- difftime
- 팀스파르타
- 그래프 생성 문법
- 단순회귀 분석
- loop 문
- 회귀분석
- Sum
- merge
- 막대그래프
- 데이터분석
- 정보획득량
- 순위출력
- 상관관계
- 히스토그램 그리기
- 데이터분석가
- 빅데이터분석
- max
- 그래프시각화
- Dense_Rank
- 불순도제거
- 회귀분석 알고리즘
- Today
- Total
ch0nny_log
[빅데이터분석] R _ 46. R 자료구조 팩터 /데이터를 로드 방법 본문
* R의 자료구조의 종류
팩터(factor) 란?
1. 범주 변수나 순위 변수를 나타내는 특별한 종류의 벡터입니다.
머신러닝을 할 때, 기계에게 학습 데이터를 제공할 때는 반드시 팩터 형태로 제공해야 합니다.
이는 기계가 학습할 때 범주 형태의 데이터를 기대하기 때문입니다.2. 일반 벡터(vector)에 범주의 수준(level) 정보가 추가된 형태입니다.
기계를 학습시킬 때는 데이터와 그에 대응하는 정답을 함께 제공하여 학습시켜야 합니다.
예를 들어, 암환자 데이터를 사용하여 암 판정을 기계에게 학습시키고자 할 때,
우리는 암을 1로, 정상환자를 0으로 지정한 종속 변수(타깃 변수)를 팩터 형태로 제공해야 합니다.
문법 1. R을 활용한 머신러닝 책 p83~84
a <- c("middle", "low", "high") a typeof(a) # 문자형 벡터 입니다. str(a) a2 <- factor(a) # a 벡터를 팩터로 변환합니다. a2
※ 문자형 벡터를 팩터로 변환하게 되면 기본 순서는 알파벳 순서로 부여됨a3 <- factor(a, order =TRUE , level = c('low','middle','high')) a3
설명: 기계에게 데이터를 줄 때는 정답 데이터를 반드시 팩터로 제공해 줘야 정답 데이터에 대한 순서를 기계가 이해할 수 있습니다. 안 그러며 기계학습이 안됨.
문제 1. 아래의 벡터를 팩터로 생성하는데 순서를 부여해서 생성하시오.
b <- c('large',',mideium','small') b b2 <- factor(b, order =TRUE , level = c('small',',mideium','large')) b2
팩터 데이터 유형을 사용하는 이유?
1. 기계에게 정답을 줄 때는 반드시 순서를 부여한 벡터를 제공해야 하기 때문
2. 현재 데이터에는 없는데 전체 데이터의 종류를 알려주기 위해
예: 학습데이터에는 a, ab, o 형 밖에 없는데 실제로는 a, b, o, ab 형이 있다는 것을 학습시켜야 됨
blood <- factor( c("O", "AB", "A"), levels=c("A", "B", "AB","O")) blood table(blood)
문제 2. 위 혈액형에 RH +와 RH- 도 추가해서 팩터 변수를 완성하시오.
blood <- factor( c("O", "AB", "A"), levels=c("A", "B", "AB","O", " RH+"," RH-")) blood table(blood)
* R에서 데이터를 로드하는 4가지 방법
목차
1. csv 파일을 R로 불러오는 방법
2. xlsx 파일을 R 로 불러오는 방법
3. txt 파일을 R 로 불러오는 방법
4. 오라클 database와 연동해서 테이블을 R로 불러오는 방법 (현업에서 필수 사용 기술)
1. csv 파일을 R로 불러오는 방법
예: 건강보험 심사 평가원에 database에는 환자들의 폐사진 데이터가 숫자로 변환되어서 테이블에 들어있음. 질 폐사진을 기계학습 활용 홈페이지에 올리면 어느 질병인지 알려줌
유방암 데이터 설명 : 위스콘신 유방암 진단 데이터셋이며 이 데이터는 569개의 암조직 검사예시가 들어있으며, 각 예시는 32개의 특징을 갖는다. 그 특징은 디지털 이미지에 존재하는 세포핵의 특성을 나타냅니다.
독립변수 종속변수
1. 반지름 diagnosis : 양성(B), 악성(M)
2. 질감
3. 둘레
4. 넓이
5. 매끄러움
6. 조밀성
7. 오목함
8. 오목점
9. 대칭성
10. 프랙털 차원
setwd('c:\\data') wisc <- read.csv('c:\\data\\wisc_bc_data.csv',header =T, stringsAsFactors = TRUE) head(wisc) str(wisc)
설명: csv 파일 불러올 때 stringsAsFactors = TRUE를 쓰게 되면 데이터 프레임에서 문자열이 자동으로 팩터로 변환하게 됨.
table(wisc$diagnosis)
a<- table(wisc$diagnosis) prop.table(a) #비율 확인
설명: 제일 좋은건 50%, 50% 씩 있는게 제일 좋은데 지금 보면 60%, 40% 로 구성되어있습니다. 이는 악성종양보다 양성 종양이 더 데이터 많으므로 양성 종양을 기계가 더 잘 공부하게 되는 상황이 됩니다.
2. xlsx 파일을 R로 불러오는 방법
install.packages("xlsx")
library(xlsx)
dept <- read.xlsx("c:\\data\\dept.xls", 1 )
↑
sheet 번호
3. txt 파일을 R 로 불러오는 방법
# 스티브 잡스 연설문을 R 로 로드 하시오 !
jobs <- readLines("c:\\data\\jobs.txt")
jobs
4. 오라클 database와 연동해서 테이블을 R로 불러오는 방법
1. 먼저 오라클 db에 c##scott으로 접속이 되는지 확인 (명령프롬프트창에)
2. JDBC 드라이버를 사용하는 패키지 설치
install.packages('DBI')
install.packages('RJDBC')
library(DBI)
library(RJDBC)
3. 오라클과 R을 연동하려면 JDBC 드라이버를 다운로드하아야 됨
1) 현재 내가 쓰고 있는 오라클의 버전을 확인하고 그 버전에 맞는 JDBC드라이버를 다운로드합니다,
2) 21c 면 ojdbc8.jar을 다운로드하아야 됩니다.
https://www.oracle.com/database/technologies/appdev/jdbc-downloads.html
4. 오라클에 접속하기 위한 3가지 정보를 확인함.
1) ip 주소 (건물 주소)
2) 포트번호 (그 건물의 층수)
3) 서비스 이름 (회사이름)
lsnrctl status
5. 확인 후 명령 프롬프트 창에서 접속
sqlplus c##scott/tiger@127.0.0.1:1521/xe
6. R에서 오라클과 연동하기
Sys.setenv(JAVA_HOME='C:\\Program Files\\Java\\jre-1.8')
library(rJava)
library(DBI)
library(RJDBC)
library(DBI)
library(RJDBC)
driver <- JDBC('oracle.jdbc.driver.OracleDriver','c:\\data\\ojdbc8.jar')
oracle_db <- dbConnect(driver,'jdbc:oracle:thin:@127.0.0.1:1521/xe', 'c##scott','tiger')
emp_query <- 'select * from emp'
emp_data <- dbGetQuery(oracle_db, emp_query)
emp_data
문제 144. 아래의 SQL쿼리의 결과를 R에서 출력하시오!
답:select e.ename, d.loc from emp e, dept d where e.deptno = d.deptno;
library(rJava) library(DBI) library(RJDBC) driver <- JDBC('oracle.jdbc.driver.OracleDriver', 'c:\\data\\ojdbc8.jar') oracle_db <- dbConnect( driver, 'jdbc:oracle:thin:@127.0.0.1:1521/xe', 'c##scott','tiger') emp_query <- 'select * from emp' emp_data <- dbGetQuery( oracle_db, emp_query) emp_data
문제 145. R의 데이터 프레임을 오라클의 테이블로 생성하시오.
library(rJava) library(DBI) library(RJDBC) driver <- JDBC('oracle.jdbc.driver.OracleDriver', 'c:\\data\\ojdbc8.jar') oracle_db <- dbConnect( driver, 'jdbc:oracle:thin:@127.0.0.1:1521/xe', 'c##scott','tiger') wisc <- read.csv('c:\\data\\wisc_bc_data.csv') dbWriteTable(oracle_db,name='wisc_table', value=wisc,row.names=FALUSE, overwrite =TRUE)
'빅데이터 분석(with 아이티윌) > R' 카테고리의 다른 글
[빅데이터분석] R _ 48. 왜도와 첨도 (0) | 2024.07.09 |
---|---|
[빅데이터분석] R _ 47. 데이터의 전반적인 관찰(평균,중앙,최빈,표준편차,분산, 정규화) (0) | 2024.07.09 |
[빅데이터분석] R _ 45. 데이터 시각화 10 (사회 연결망 그래프) (1) | 2024.07.08 |
[빅데이터분석] R _ 44. 데이터 시각화 9 (소리데이터) (0) | 2024.07.04 |
[빅데이터분석] R _ 43. 데이터 시각화 8 (지도 그래프) (0) | 2024.07.04 |