2014-09-08 5 views
4

나는 데이터를 채굴하고 규칙 집합을 제공하는 apriori 함수의 출력을가집니다. 추가 처리를 위해 데이터 프레임으로 변환하고 싶습니다. 규칙은 다음과 같습니다 객체 :클래스 규칙의 객체를 데이터 프레임으로 변환 R

> inspect(output) 
    lhs       rhs       support confidence  lift 
1 {curtosis=(846,1.27e+03]} => {skewness=(-0.254,419]} 0.2611233 0.8044944 2.418776 
2 {variance=(892,1.34e+03]} => {notes.class=FALSE}  0.3231218 0.9888393 1.781470 
3 {variance=(-0.336,446]} => {notes.class=TRUE}  0.2859227 0.8634361 1.940608 
4 {skewness=(837,1.26e+03]} => {notes.class=FALSE}  0.2924872 0.8774617 1.580815 
5 {entropy=(-0.155,386],                
    class=FALSE}  => {skewness=(837,1.26e+03]} 0.1597374 0.9521739 2.856522 
6 {variance=(-0.336,446],                
curtosis=(846,1.27e+03]} => {skewness=(-0.254,419]} 0.1378556 0.8325991 2.503275 

우리는 규칙이 데이터 프레임을 사용하여 객체 생성 할 수 있습니다. 데이터 프레임은 다음과 같습니다

> data 
     variance  skewness  curtosis  entropy notes.class 
1 (892,1.34e+03] (837,1.26e+03] (-0.268,424]  (386,771]  FALSE 
2 (892,1.34e+03] (-0.254,419]  (424,846] (771,1.16e+03]  FALSE 
3 (892,1.34e+03] (837,1.26e+03] (-0.268,424] (-0.155,386]  FALSE 
4  (446,892] (-0.254,419] (846,1.27e+03]  (386,771]  FALSE 

우리는이를 사용하여 출력 변수 얻을 수있는 것보다 :

> output <- apriori(data) 

arules 패키지가 사용되었다. dput(output)이 제공 :

new("rules" 
    , lhs = new("itemMatrix" 
    , data = new("ngCMatrix" 
    , i = c(8L, 2L, 0L, 5L, 9L, 12L, 0L, 8L, 0L, 3L, 0L, 8L, 8L, 13L, 8L, 
10L, 3L, 10L, 8L, 11L, 8L, 13L, 3L, 12L, 2L, 5L, 2L, 6L, 2L, 
5L, 2L, 6L, 2L, 10L, 2L, 7L, 2L, 11L, 0L, 3L, 0L, 10L, 0L, 7L, 
11L, 13L, 5L, 6L, 6L, 12L, 5L, 10L, 1L, 5L, 4L, 6L, 6L, 13L, 
0L, 3L, 8L, 0L, 8L, 13L, 3L, 8L, 13L, 0L, 3L, 13L, 2L, 5L, 6L, 
2L, 5L, 12L, 2L, 6L, 12L) 
    , p = c(0L, 1L, 2L, 3L, 4L, 6L, 8L, 10L, 12L, 14L, 16L, 18L, 20L, 22L, 
24L, 26L, 28L, 30L, 32L, 34L, 36L, 38L, 40L, 42L, 44L, 46L, 48L, 
50L, 52L, 54L, 56L, 58L, 61L, 64L, 67L, 70L, 73L, 76L, 79L) 
    , Dim = c(14L, 38L) 
    , Dimnames = list(NULL, NULL) 
    , factors = list() 
) 
    , itemInfo = structure(list(labels = structure(c("variance=(-0.336,446]", 
"variance=(446,892]", "variance=(892,1.34e+03]", "skewness=(-0.254,419]", 
"skewness=(419,837]", "skewness=(837,1.26e+03]", "curtosis=(-0.268,424]", 
"curtosis=(424,846]", "curtosis=(846,1.27e+03]", "entropy=(-0.155,386]", 
"entropy=(386,771]", "entropy=(771,1.16e+03]", "notes.class=FALSE", 
"notes.class=TRUE"), class = "AsIs"), variables = structure(c(5L, 
5L, 5L, 4L, 4L, 4L, 1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L), .Label = c("curtosis", 
"entropy", "notes.class", "skewness", "variance"), class = "factor"), 
    levels = structure(c(4L, 8L, 12L, 2L, 6L, 10L, 3L, 7L, 11L, 
    1L, 5L, 9L, 13L, 14L), .Label = c("(-0.155,386]", "(-0.254,419]", 
    "(-0.268,424]", "(-0.336,446]", "(386,771]", "(419,837]", 
    "(424,846]", "(446,892]", "(771,1.16e+03]", "(837,1.26e+03]", 
    "(846,1.27e+03]", "(892,1.34e+03]", "FALSE", "TRUE"), class = "factor")), .Names = c("labels", 
"variables", "levels"), row.names = c(NA, -14L), class = "data.frame") 
    , itemsetInfo = structure(list(), .Names = character(0), row.names = integer(0), class = "data.frame") 
) 
    , rhs = new("itemMatrix" 
    , data = new("ngCMatrix" 
    , i = c(3L, 12L, 13L, 12L, 5L, 3L, 8L, 13L, 0L, 3L, 8L, 3L, 3L, 8L, 
6L, 5L, 12L, 12L, 12L, 12L, 12L, 13L, 13L, 13L, 3L, 12L, 5L, 
12L, 12L, 13L, 4L, 13L, 3L, 0L, 8L, 12L, 6L, 5L) 
    , p = 0:38 
    , Dim = c(14L, 38L) 
    , Dimnames = list(NULL, NULL) 
    , factors = list() 
) 
    , itemInfo = structure(list(labels = structure(c("variance=(-0.336,446]", 
"variance=(446,892]", "variance=(892,1.34e+03]", "skewness=(-0.254,419]", 
"skewness=(419,837]", "skewness=(837,1.26e+03]", "curtosis=(-0.268,424]", 
"curtosis=(424,846]", "curtosis=(846,1.27e+03]", "entropy=(-0.155,386]", 
"entropy=(386,771]", "entropy=(771,1.16e+03]", "notes.class=FALSE", 
"notes.class=TRUE"), class = "AsIs"), variables = structure(c(5L, 
5L, 5L, 4L, 4L, 4L, 1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L), .Label = c("curtosis", 
"entropy", "notes.class", "skewness", "variance"), class = "factor"), 
    levels = structure(c(4L, 8L, 12L, 2L, 6L, 10L, 3L, 7L, 11L, 
    1L, 5L, 9L, 13L, 14L), .Label = c("(-0.155,386]", "(-0.254,419]", 
    "(-0.268,424]", "(-0.336,446]", "(386,771]", "(419,837]", 
    "(424,846]", "(446,892]", "(771,1.16e+03]", "(837,1.26e+03]", 
    "(846,1.27e+03]", "(892,1.34e+03]", "FALSE", "TRUE"), class = "factor")), .Names = c("labels", 
"variables", "levels"), row.names = c(NA, -14L), class = "data.frame") 
    , itemsetInfo = structure(list(), .Names = character(0), row.names = integer(0), class = "data.frame") 
) 
    , quality = structure(list(support = c(0.261123267687819, 0.323121808898614, 
0.285922684172137, 0.292487235594457, 0.159737417943107, 0.137855579868709, 
0.137855579868709, 0.142231947483589, 0.142231947483589, 0.110138584974471, 
0.110138584974471, 0.12399708242159, 0.153902261123268, 0.107221006564551, 
0.13056163384391, 0.13056163384391, 0.150984682713348, 0.139314369073669, 
0.100656455142232, 0.107221006564551, 0.154631655725748, 0.165572574762947, 
0.112326768781911, 0.105762217359592, 0.12180889861415, 0.181619256017505, 
0.181619256017505, 0.102844638949672, 0.105762217359592, 0.12837345003647, 
0.12837345003647, 0.137855579868709, 0.137855579868709, 0.137855579868709, 
0.137855579868709, 0.13056163384391, 0.13056163384391, 0.13056163384391 
), confidence = c(0.804494382022472, 0.988839285714286, 0.863436123348018, 
0.87746170678337, 0.952173913043478, 0.832599118942731, 0.832599118942731, 
0.859030837004405, 0.898617511520737, 0.853107344632768, 0.915151515151515, 
0.80188679245283, 0.972350230414747, 0.885542168674699, 0.864734299516908, 
0.913265306122449, 1, 0.974489795918367, 1, 1, 0.990654205607477, 
1, 0.980891719745223, 0.873493975903614, 0.814634146341463, 0.943181818181818, 
0.950381679389313, 1, 0.92948717948718, 0.931216931216931, 0.897959183673469, 
1, 0.969230769230769, 0.895734597156398, 0.832599118942731, 1, 
0.864734299516908, 0.93717277486911), lift = c(2.41877587226493, 
1.78146998779801, 1.94060807395104, 1.580814717477, 2.85652173913043, 
2.50327498261071, 2.56515369004603, 1.930707, 2.71366653809456, 
2.56493458221826, 2.81948927477017, 2.41093594836147, 2.92344773223381, 
2.72826587247868, 2.58853870008227, 2.73979591836735, 1.80157687253614, 
1.75561827884899, 1.80157687253614, 1.80157687253614, 1.78473970550309, 
2.24754098360656, 2.20459434060771, 1.96321350977681, 2.44926187419769, 
1.69921455023295, 2.85114503816794, 1.80157687253614, 1.67454260588295, 
2.09294821753838, 2.68799572230639, 2.24754098360656, 2.91406882591093, 
2.70496064471679, 2.56515369004603, 1.80157687253614, 2.58853870008227, 
2.81151832460733)), row.names = c(NA, 38L), .Names = c("support", 
"confidence", "lift"), class = "data.frame") 
    , info = structure(list(data = data, ntransactions = 1371L, support = 0.1, 
    confidence = 0.8), .Names = c("data", "ntransactions", "support", 
"confidence")) 
) 
+2

어떻게이 개체를 만들었습니까? 이 정확한 객체를 만드는 방법을 우리에게 보여주는 것이 너무 까다로운 경우 샘플 데이터를 사용하여 유사한 객체를 만드는 방법을 보여줍니다. 실패하면'dput (rules)'의 출력을 보여주고 다시 만들 수 있습니다. 그리고이 패키지가 모두 어떤 패키지에서 비롯되는지 말할 수 있습니다. – Spacedman

+0

@ 스페이스 맨이 업데이트를 추가했습니다. –

+0

위대한, 미안 나는 당신이 업데이트하면서 내 대답을 끝내고 있었지만 나의 기술은 효과가 있었고 나의 다운 투표를 취소했다. – Spacedman

답변

6

우리는 (나는이 입력되면서 오, 당신은 당신의 데이터를 추가 죄송합니다!) 질문에서 데이터를 복제 할 수 없습니다, 그래서 나는 arules 패키지에서 예제를 사용합니다 :

> ruledf = data.frame(
     lhs = labels(lhs(rules))$elements, 
     rhs = labels(rhs(rules))$elements, 
     [email protected]) 
> head(ruledf) 
         lhs     rhs support confidence  lift 
1       {} {capital-gain=None} 0.9173867 0.9173867 1.0000000 
2       {} {capital-loss=None} 0.9532779 0.9532779 1.0000000 
3 {hours-per-week=Full-time} {capital-gain=None} 0.5435895 0.9290688 1.0127342 
4 {hours-per-week=Full-time} {capital-loss=None} 0.5606650 0.9582531 1.0052191 
5     {sex=Male} {capital-gain=None} 0.6050735 0.9051455 0.9866565 
6     {sex=Male} {capital-loss=None} 0.6331027 0.9470750 0.9934931 

및을 줄여 위해 같은 물건을 할 :

library('arules'); 

data("Adult") 
## Mine association rules. 
rules <- apriori(Adult, 
       parameter = list(supp = 0.5, conf = 0.9, 
            target = "rules")) 

은 그 때 나는 inspect(rules)에서 물건 출력을 복제 할 수 있습니다:

head(ruledf[order(-ruledf$lift),]) 

규칙 클래스에 대한 도움말 : http://www.rdocumentation.org/packages/arules/functions/rules-class.html이 규칙 객체에서 당신이 얻을 수있는 당신을 말할 것이다 - 난 그냥 데이터 프레임을 구축하기 위해이 정보를 사용했다. 만약 당신이 원하는 것이 아니라면, 당신 자신의 요리법을 사용하여 요리하십시오! 데이터 성인에서

+1

나는 그것을 알고있다, 그것은 잠시왔다. 그러나'$ elements' 부분은 비난 받는다? '$ 요소 '를 없애면 게시 한 결과 만 얻을 수 있습니다. –

+2

예, 데이터 구조가 다시 트리거 된 것처럼 보입니다. V 1.3-1에는'$ elements'가 필요 없습니다. – Spacedman

1

실행 연역적

rules <- apriori(Adult, parameter = list(supp = 0.5, conf = 0.9, target = 
"rules")) 

좌, 우, 지원, 자신감을 검사하고

arules::inspect(rules) 

가 dataframe에게 새로운 dataframe에서

df = data.frame(
    lhs = labels(lhs(rules)), 
    rhs = labels(rhs(rules)), 
    [email protected]) 

보기 상위 6 라인을 만들기 올려

head(df) 
관련 문제