2017-12-13 13 views
0

나는 textmining을 처음 사용합니다.교육 집합의 모든 기능을 다루지 않는 경우 새 데이터 집합의 레이블을 예측하는 방법은 무엇입니까?

나는 SMS의 데이터 세트를 가지고 있으며 스팸인지 아닌지 알고 싶습니다. 나는 텍스트 콘텐츠를 단어 행렬로 변환하기 위해 quanteda를 사용했다. 나는 또한 불용어를 제거하고 단어를 단어로 바꾸어

rpart.cv.1 <- train(Label ~ ., data = train_tokens_df, method = "rpart", trControl = cv_cntrl, tuneLength = 5)으로 모델을 훈련시켰다.

이제 testdata의 라벨을 예측하고 싶습니다. 전 열차 데이터로 수행 한 모든 전처리 단계를 수행했습니다. 문제는 기차 데이터에 테스트 데이터가 포함되지 않는 단어가 있음을 나타냅니다.

다음 단계는 테스트 데이터에 누락 된 교육 데이터의 모든 열을 추가하는 것입니다. 그러나 어떻게 그렇게 쉽고 효율적으로 할 수 있습니까? 내 경우에는 기차와 테스트가 모두 데이터 프레임입니다.

+0

계층화 된 샘플링을 사용하여 각 단어에 기차 및 테스트 행이 있는지 확인할 수 있습니다. 또한, 단 한번만 나타나는 단어로 무엇을 할 것인지 먼저 고려하십시오. 그것들은 확실히 기차 나 시험 데이터에 속할 것입니다. – AntoniosK

+0

층화 샘플링을 수행했지만 레이블을 모르는 데이터를 예측하고 싶습니다. – Burschken

+0

기차 데이터에 라벨이 없으면 해당 행에서 모델을 학습 할 수 없습니다. 기차 데이터에 라벨이 없으면 해당 행의 정확성을 검사 할 수 없습니다. 제가 올바르게 이해했다면 레이블이 목표 변수입니다. 맞습니까? 대상 변수가없는 행을 제외하지 않는 이유는 무엇입니까? 그들은 사용할 수 없습니다. – AntoniosK

답변

0

data.table 몇 가지 트릭 아마도,하지만 두 data.frame를 그냥 원하는 경우 "집합"첫 번째의 열 이름으로 두 번째, 열을 누락 작성하려면 다음을 수행 할 수 있습니다

orig = data.frame(a = 1:3, b = 2:4) # example data 
new = data.frame(a = 7:9, c = 11:13) # missing the 'b' column 

# first insert new columns that are still missing in 'new': 
new[setdiff(colnames(orig), colnames(new))] = 0 # NA, or whatever 
# now subset the new dataset to the columns of the old one 
new = new[colnames(orig)] 

이것은 당신이 만 matrix하지, data.frame와 함께 작동

> new 
    a b 
1 7 0 
2 8 0 
3 9 0 

참고를 제공, 그래서 당신은 매트릭스가 있다면 당신은

을 할 필요가
new = as.data.frame(new) 

입니다.