سؤال

أحاول تصدير البيانات البيومترية من التحليل باستخدام حزمة ROCR. هنا هو الكود الذي قمت به حتى الآن:

pred = performance(Matching.Score,Distribution)
perf = prediction(pred,"fnr", "fpr")

An object of class “performance”

Slot "x.name":

[1] "False positive rate"

Slot "y.name":

[1] "False negative rate"

Slot "alpha.name":

[1] "Cutoff"

Slot "x.values":

[[1]]

[1] 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
[15] 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
  ......

Slot "y.values":

[[1]]

[1] 1.00000 0.99999 0.99998 0.99997 0.99996 0.99995
[15] 0.99986 0.99985 0.99984 0.99983 0.99982 0.99981
    ......

Slot "alpha.values":

[[1]]

[1]  Inf      1.0427800 1.0221150 1.0056240 1.0032630 0.9999599
[12] 0.9644779 0.9633058 0.9628996 0.9626501 0.9607665 0.9605930
    .......

هذا يؤدي إلى عدة فتحات. أرغب في تصدير القيم الناتجة إلى ملف نصي لتعديل Excel باستخدام:

write(pred, "filename")

ومع ذلك، عندما أحاول كتابة الملف، أحصل على خطأ يفترض:

Error in cat(list(...), file, sep, fill, labels, append) : 
  argument 1 (type 'S4') cannot be handled by 'cat'

هل هناك أي طريقة للتغلب على هذه؟

كنت أقدر أي نصيحة. شكرا لك!

مات بيترسون

هل كانت مفيدة؟

المحلول

تحقق من بنية الفصل للناتجة 4 س الكائنات مع str, ، استخراج المتغيرات ذات الصلة لبناء ملف إطعام واستخدام write.table/write.csv لتصدير النتائج. على سبيل المثال، للتنبؤ pred:

R> library("ROCR")
R> data(ROCR.simple)
R> pred <- prediction(ROCR.simple$predictions, ROCR.simple$labels)
R> perf <- performance(pred, "fnr", "fpr")
R> str(pred)
Formal class 'prediction' [package "ROCR"] with 11 slots
  ..@ predictions:List of 1
  .. ..$ : num [1:200] 0.613 0.364 0.432 0.14 0.385 ...
  ..@ labels     :List of 1
  .. ..$ : Ord.factor w/ 2 levels "0"<"1": 2 2 1 1 1 2 2 2 2 1 ...
  ..@ cutoffs    :List of 1
  .. ..$ : num [1:201] Inf 0.991 0.985 0.985 0.983 ...
  ..@ fp         :List of 1
  .. ..$ : num [1:201] 0 0 0 0 1 1 2 3 3 3 ...
  ..@ tp         :List of 1
  .. ..$ : num [1:201] 0 1 2 3 3 4 4 4 5 6 ...
  ..@ tn         :List of 1
  .. ..$ : num [1:201] 107 107 107 107 106 106 105 104 104 104 ...
  ..@ fn         :List of 1
  .. ..$ : num [1:201] 93 92 91 90 90 89 89 89 88 87 ...
  ..@ n.pos      :List of 1
  .. ..$ : int 93
  ..@ n.neg      :List of 1
  .. ..$ : int 107
  ..@ n.pos.pred :List of 1
  .. ..$ : num [1:201] 0 1 2 3 4 5 6 7 8 9 ...
  ..@ n.neg.pred :List of 1
  .. ..$ : num [1:201] 200 199 198 197 196 195 194 193 192 191 ...

R> write.csv(data.frame(fp=pred@fp, fn=pred@fn), file="result_pred.csv")

ولأداء perf:

R> str(perf)
Formal class 'performance' [package "ROCR"] with 6 slots
  ..@ x.name      : chr "False positive rate"
  ..@ y.name      : chr "False negative rate"
  ..@ alpha.name  : chr "Cutoff"
  ..@ x.values    :List of 1
  .. ..$ : num [1:201] 0 0 0 0 0.00935 ...
  ..@ y.values    :List of 1
  .. ..$ : num [1:201] 1 0.989 0.978 0.968 0.968 ...
  ..@ alpha.values:List of 1
  .. ..$ : num [1:201] Inf 0.991 0.985 0.985 0.983 ...

R> write.csv(data.frame(fpr=perf@x.values,
                        fnr=perf@y.values, 
                        alpha.values=perf@alpha.values), 
             file="result_perf.csv")
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top