簡體   English   中英

我在R中使用朴素貝葉斯(Naive Bayes)。

[英]I am using Naive Bayes in R. I have the titanic set, but predict() function produces error

library(e1071)
m1 <- naiveBayes(Survived ~ ., data =tr) # tr is the training set
Prediction1<-predict(m1,tst)  #tst is the test set
Error in `[.default`(object$tables[[v]], , nd +    islogical[attribs[v]]) : 
subscript out of bounds
In addition: Warning messages:
1: In data.matrix(newdata) : NAs introduced by coercion
2: In data.matrix(newdata) : NAs introduced by coercion
3: In data.matrix(newdata) : NAs introduced by coercion
4: In data.matrix(newdata) : NAs introduced by coercion
5: In data.matrix(newdata) : NAs introduced by coercion
6: In data.matrix(newdata) : NAs introduced by coercion
7: In data.matrix(newdata) : NAs introduced by coercion
8: In data.matrix(newdata) : NAs introduced by coercion
9: In data.matrix(newdata) : NAs introduced by coercion

tr是具有17列和891行的訓練集。 其中一列是“幸存者”,其中充滿零和一,具體取決於泰坦尼克號中的乘客是否幸存。 tst是測試集具有相同的17列和418行,其中存活的列為NA。 之所以不適用,是因為您想要對其進行預測,然后將其發現結果與kaggle.com進行比較。 tst和tr都是data.frames。 這是什么錯誤? 我閱讀了naiveBayes的手冊,並嘗試將數據轉換為factor,但是沒有任何反應。 提前致謝

這是tr: https : //www.dropbox.com/s/riklgjabppqa0om/tr.png? dl =0

這是tst: https ://www.dropbox.com/s/9juvs6g630181tg/tst.png ? dl =0

dput(head(tr,20))結構(list(PassengerId = 1:20,Survived = c(0L,1L,1L,1L,0L,0L,0L,0L,1L,1L,1L,1L,1L,0L,0L) ,0L,1L,0L,1L,0L,1L),Pclass = c(3L,1L,3L,1L,3L,3L,1L,3L,3L,2L,3L,1L,3L,3L,3L,2L, 3L,2L,3L,3L),名稱= c(“ Braund,歐文·哈里斯先生”,“ Cumings,John Bradley夫人(佛羅倫薩·布里格斯·泰耶)”,“ Heikkinen,Laina小姐”,“ Futrelle,Jacques夫人”希思(莉莉·梅·皮爾(Lily May Peel))”,“艾倫(Allen),威廉·亨利(William Henry)先生”,“莫蘭(Moran),詹姆斯(James)先生”,“麥卡錫(McCarthy),提摩太(J. (伊麗莎白·維爾赫米娜·伯格),“納賽爾·尼古拉斯夫人(阿黛爾·阿赫姆)”,“桑德斯特羅姆·瑪格麗特·魯特小姐”,“邦內爾·伊麗莎白小姐”,“桑德考克·威廉·亨利先生”,“安德森先生。 Anders Johan”,“ Vestrom,Hulda Amanda Adolfina小姐”,“ Hewlett,太太(Mary D Kingcome)”,“ Rice,Master。Eugene”,“ Williams,Charles Eugene先生”,“ Vander Planke,Julius太太” (Emelia Maria Vandemoortele)”,“ Masselmani,法蒂瑪夫人”),性別= c(“男”,“女”,“女”,“女”,“ 男性”,“男性”,“男性”,“男性”,“女性”,“女性”,“女性”,“女性”,“男性”,“男性”,“女性”,“女性”,“男性” ,“男性”,“女性”,“女性”),年齡= c(22,38,26,35,35,NA,54,2,27,14,4,4,58,20,39,14,55, 2,NA,31,NA),SibSp = c(1L,1L,0L,1L,0L,0L,0L,3L,0L,1L,1L,0L,0L,1L,0L,0L,4L,0L,1L ,0L),Parch = c(0L,0L,0L,0L,0L,0L,0L,1L,2L,0L,1L,0L,0L,5L,0L,0L,1L,0L,0L,0L),票= c(“ A / 5 21171”,“ PC 17599”,“ STON / O2。 3101282”,“ 113803”,“ 373450”,“ 330877”,“ 17463”,“ 349909”,“ 347742”,“ 237736”,“ PP 9549”,“ 113783”,“ A / 5。 2151“,” 347082“,” 350406“,” 248706“,” 382652“,” 244373“,” 345763“,” 2649“),票價= c(7.25,71.2833,7.925,53.1,8.05,8.4583,51.8625, 21.075、11.1333、30.0708、16.7、26.55、8.05、31.275、7.8542、16、29.125、13、18、7.225),機艙= c(NA,“ C85”,NA,“ C123”,NA,NA,“ E46” ,NA,NA,NA,“ G6”,“ C103”,NA,NA,NA,NA,NA,NA,NA,NA),上船= c(“ S”,“ C”,“ S”,“ S “,” S“,” Q“,” S“,” S“,” S“,” C“,” S“,” S“,” S“,” S“,” S“,” S“, “ Q”,“ S”,“ S”,“ C”))).Names = c(“ PassengerId”,“ Survived”,“ Pclass”,“ Name”,“ Sex”,“ Age”,“ SibSp” ,“帕奇”,“票務”,“票價”,“客艙”,“下車”),類= c(“ data.table”,“ data.frame”),row.names = c(NA,-20L) ,.internal.selfref =)

dput(head(tst,20))結構(list(PassengerId = 892:911,Pclass = c(3L,3L,2L,3L,3L,3L,3L,2L,3L,3L,3L,1L,1L,2L) ,1L,2L,2L,3L,3L,3L),名稱= c(“凱利,詹姆斯先生”,“威爾克斯,詹姆斯夫人(艾倫·尼德斯)”,“邁爾斯,托馬斯·弗朗西斯先生”,“維爾茲,阿爾伯特先生”,“赫弗寧(Hervonen),亞歷山大夫人(Helga E Lindqvist)”,“斯文森(Svensson),約翰·瑟文(Johan Cervin)先生”,“康諾利(Kate)小姐,凱特小姐”,“卡爾德威爾(Caldwell),阿爾伯特·弗朗西斯(Albert Francis)先生”,“亞伯拉罕·約瑟夫(夫人) (Sophie Halaut Easu),“戴維斯,約翰·塞繆爾先生”,“伊利夫,伊利奧先生”,“瓊斯·查爾斯·克雷森先生”,“斯奈德,約翰·皮爾斯伯里夫人(內爾·史蒂文森)”,“霍華德·先生本傑明”,“查菲(Caffee),赫伯特·富勒(Herbert Fuller)夫人(凱莉·康斯坦斯·托古德(Carrie Constance Toogood)”,“德爾·卡洛(Del Carlo),塞巴斯蒂亞諾(Sebastiano)夫人(阿基尼亞·熱諾韋西)”,“基恩·丹尼爾(Keane),丹尼爾先生”,“阿薩夫(Assaf),傑里奧斯(Gerios)先生”, Ida Livija小姐”,“ Assaf Khalil,瑪麗安娜夫人(Miriam \\“)\\”“),性別= c(”男性“,”女性“,”男性“,”男性“,”女性“,”男性“ ,“女”,“男”,“女”,“男”,“男”,“男”,“女”,“男”,“女”,“女”,“男”,“男”,“女性”,“女性 ale“),年齡= c(34.5、47、62、27、22、14、30、26、18、21、32.1505376344086、46、23、63、47、24、35、21、27、45),SibSp = c(0L,1L,0L,0L,1L,0L,0L,1L,0L,2L,0L,0L,1L,1L,1L,1L,0L,0L,1L,0L),Parch = c(0L, 0L,0L,0L,1L,0L,0L,1L,0L,0L,0L,0L,0L,0L,0L,0L,0L,0L,0L,0L),票證= c(“ 330911”,“ 363272” ,“ 240276”,“ 315154”,“ 3101298”,“ 7538”,“ 330972”,“ 248738”,“ 2657”,“ A / 4 48871”,“ 349220”,“ 694”,“ 21228”,“ 24065” ”,“ WEP 5734”,“ SC / PARIS 2167”,“ 233734”,“ 2692”,“ STON / O2。 3101270“,” 2696“),票價= c(7.8292、7、9.6875、8.6625、12.2875、9.225、7.6292、29、7.2292、24.15、7.8958、26、82.2667、26、61.175、27.7208、12.35、7.225、7.925, 7.225),機艙= c(NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,“ B45”,NA,“ E31”,NA,NA,NA,NA,NA ),登船= c(“ Q”,“ S”,“ Q”,“ S”,“ S”,“ S”,“ Q”,“ S”,“ C”,“ S”,“ S”, “ S”,“ S”,“ S”,“ S”,“ C”,“ Q”,“ C”,“ S”,“ C”),生存= c(NA,NA,NA,NA,NA ,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA),標題= c(“ Mr”,“ Mrs”,“ Mr”,“ Mr “,”太太“,”先生“,”小姐“,”先生“,”太太“,”先生“,”先生“,”先生“,”太太“,”先生“,”太太“,”太太“, “ Mr”,“ Mr”,“ Miss”,“ Mrs”),TotalFamily = c(1、2、1、1、1、3、1、1、3、1、3、1、1、2、2、2 ,2,1,1,2,1,1),FamSize = c(“ Small”,“ Small”,“ Small”,“ Small”,“ Medium”,“ Small”,“ Small”,“ Medium”,“ Small” “,“中”,“小”,“小”,“小”,“小”,“小”,“小”,“小”,“小”,“小”,“小”),FarePrice = c (“低”,“低”,“低”,“低”,“中”,“低”,“低”,“高”,“低”,“高”,“低”,“高”,“ Expen sive”,“ High”,“ Expensive”,“ High”,“ Medium”,“ Low”,“ Low”,“ Low”),AgeNew = c(“ Adult”,“ Old”,“ Old”,“ Adult” “,”成人“,”兒童“,”成人“,”成人“,”成人“,”成人“,”成人“,”舊“,”成人“,”舊“,”舊“,”成人“, .Names = c(“ PassengerId”,“ Pclass”,“ Name”,“ Sex”,“ Age”,“ SibSp”,“ Parch”,“ Adult”,“ Adult”,“ Adult”,“ Old”)) ,“機票”,“票價”,“客艙”,“下車”,“幸存”,“標題”,“ TotalFamily”,“ FamSize”,“ FarePrice”,“ AgeNew”),類= c(“ data.table “,” data.frame“),row.names = c(NA,-20L),.internal.selfref =)

在使用朴素貝葉斯和尋找混淆矩陣時,我遇到了類似的問題。 就我而言,結果變量的類型為Char。 我將其轉換為因子。 然后,似乎工作正常。 字符字段與因素不同。 嘗試跟隨,

as.factor(Survived)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM