2017-11-27 1 views
2

のためにRでナイーブベイズを作成するには:実装するとき、私はエラーが発生していますは、どのように私は既知の情報に基づいて、Rでナイーブベイズモデルを実装しようとしている数値とカテゴリ変数

Age group, e.g. "18-24" and "25-34", etc. 
Gender, "male" and "female" 
Region, "London" and "Wales", etc. 
Income, "£10,000 - £15,000", etc. 
Job, "Full Time" and "Part Time", etc. 

。私のコードは以下のとおりである:上記のシナリオで

library(readxl) 
iphone <- read_excel("~/Documents/iPhone_1k.xlsx") 
View(iphone) 

summary(iphone) 
iphone 

library(caTools) 
library(e1071) 

set.seed(101) 
sample = sample.split(iphone$Gender, SplitRatio = .7) 
train = subset(iphone, sample == TRUE) 
test = subset(iphone, sample == FALSE) 

nB_model <- naiveBayes(Gender ~ Region + Retailer, data = train) 
pred <- predict(nB_model, test, type="raw") 

、私はiPhone_1kと呼ばれるExcelファイル(iPhoneを購入するウェブサイトにアクセスしたユーザーに関連する千個のエントリを)持っています。各行はウェブサイトを訪れる人であり、上記の人口統計は知られている。私は(可能ならば、私は、4の最小値を使用しますが、より多くをご紹介したいと思います)モデルの仕事をしようとしてきたし、2つの変数のみを使用し、以下のリンクを以下に頼ってきた

https://rpubs.com/dvorakt/144238

これらの人口統計を使用して、どの小売業者に行くかを予測できます(iPhone_1kファイルの各インスタンスでも知られています)。 3つのオプションしかありません。あなたはこれを完了する方法をアドバイスできますか?

P.S.以下はRで単純に保つために使用したデータの簡略化されたバージョンのスクリーンショットです。作業するコードを取得したら、変数とエントリの数を増やします。

enter image description here

答えて

1

あなたは間違って問題を設定しています。それは次のようになります。

naiveBayes(Retailer ~ Gender + Region + AgeGroup, data = train)  

または短い

naiveBayes(Retailer ~ ., data = train) 

でまた、あなたは彼らが文字である場合の要因に列を変換する必要があります。あなたが将来的に数値変数を追加した場合、あなたはそれらの上に、この手順を適用するべきではないと

iphone[] <- lapply(iphone, factor) 

注により、右Excelから読み込んだ後、すべての列のためにそれを行うことができます。

+0

ご協力いただきありがとうございます。 この設定では、与えられた属性を持つ消費者が予測と比較するのではなく、小売業者を訪問する確率を計算しているので、混乱行列はこの設定には適用されません。 –

+0

predict()関数のパラメータで "raw"を指定するため、確率が高くなります。あなたが予測する(nB_model、test、type = "class")とすれば、どの小売業者が訪問されるのかについての実際の予測が得られます(最も高い確率で小売業者を選ぶことによって計算されます)。次に、これらの予測を使って混乱行列を利用することができます。例えば、あなたは予測データの混乱行列をテストデータに見るためにconfusionMatrix(pred、test $ Retailer)を実行できます(この関数のためのキャレットライブラリが必要です)。 –

+0

もう一度お返事ありがとうございます。 –

関連する問題