• 카테고리

    질문 & 답변
  • 세부 분야

    데이터 분석

  • 해결 여부

    미해결

작업형 제2유형 질문입니다.

22.11.27 15:37 작성 조회수 118

0

질문1.

4개의 분류문제에서는 predict값을 바로 write.csv 하셨습니다.

그럼 2개의 분류문제가 주어지고 f1스코어로 평가한다고 하면 predict값을 ifelse를 활용해 1,0으로 나누고 as.factor형으로 바꾼 뒤 write.csv를 해야하나요??

아니면 predict한 p3[ , 2]을 그대로 write.csv 해야하나요

질문2.

제4회차 2유형 문제를 작성한 코드입니다.

library(caret)

library(ModelMetrics)

df <- read.csv('C:/Users/USER/Desktop/강의자료/train.csv')

tst <- read.csv('C:/Users/USER/Desktop/강의자료/test.csv')

str(df)

summary(df)

df <- df[,-1]

df$Gender <- as.factor(df$Gender)

df$Ever_Married <- as.factor(df$Ever_Married)

df$Graduated <- as.factor(df$Graduated)

df$Profession <- as.factor(df$Profession)

df$Spending_Score <- as.factor(df$Spending_Score)

df$Var_1 <- as.factor(df$Var_1)

df$Segmentation <- as.factor(df$Segmentation)

df$Work_Experience<- ifelse(is.na(df$Work_Experience), mean(df$Work_Experience, na.rm=T), df$Work_Experience)

df$Family_Size <- ifelse(is.na(df$Family_Size), mean(df$Family_Size, na.rm=T), df$Family_Size)

inx <- createDataPartition(df$Segmentation, p=0.7, list=F)

train <- df[inx,]

test <- df[-inx,]

model1 <- train(Segmentation~., data=train, method='rpart')

model2 <- train(Segmentation~., data=train, method='lda')

p1 <- predict(model1, test)

p2 <- predict(model2, test)

library(caret)

cm1 <- confusionMatrix(test$Segmentation,p2)

이렇게 작성을 했는데

cm1의 값이 아래와 같이 뜹니다. 혹시 어떤 문제가 있을까요?

[,1] [,2]

[1,] 0 0

[2,] 0 779

답변 1

답변을 작성해보세요.

0

 

안녕하세요.

 

[질문1]

만약 2-Class 문제인데 평가지표를 F1으로 한다고하면 ifelse를 사용하실 필요없이

predict 함수에 type = 'prob' 매개변수만 제외하시면 됩니다.

그러면 알아서 0.5기준으로 Class를 나눈 결과가 반환되기 때문입니다.

그리고 그 결과를 제출하시면 됩니다.

 

[질문2]

마지막줄에

cm1 <- confusionMatrix(test$Segmentation,p2) 대신에

cm1 <- caret::confusionMatrix(test$Segmentation,p2)로 바꾸시면 됩니다.

confusionMatrix가 caret패키지에도 있고 ModelMetrics패키지에도 있어서

caret패키지에있는 것을 활용한다고 선언해주는겁니다.

이렇게 하시면 원하시는 결과를 얻을 수 있습니다.