Rはナイーブベイズモデルに基づくフィルタリングモバイルスパムSMSを実装します

リードデータ数、ビュー・データ構造
df_raw < - read.csvに("SMSの_spam.csv "、stringsAsFactors = F)STR(df_raw)長さ(タイプdf_raw $) データ行列Xの固有値及びベクトルクラスマークにY二つの部分、Yは置換されている因子X - < - df_raw $テキストY < - 因子($タイプdf_raw)長さ(Y) の構造及び組成のビュークラスマークベクトルy STR(y)を表(Y) インストールとローディングテキストマイニングパケットinstall.packagesは( "(TM)")ライブラリ(NLP)図書館((TM))はコーパスX_corpus <作成- VCorpus(VectorSource(X-)) 
。####### 1清掃テキストデータを##### ### 1.1変換テキスト小文字にX_corpus_clean < - tm_map(X_corpus、content_transformer(TOLOWER))
テキストを削除するために、デジタルX_corpus_clean 1.2 < - tm_map(X_corpus_clean、removeNumbers) テキストで1.3 X_corpus_clean削除ストップワード< - tm_map(X_corpus_clean、removeWords、ストップワード()) 1.4テキスト句読点X_corpus_clean <削除する- tm_mapを( X_corpus_clean、removePunctuation) 追加パッケージ#1 install.packagesは( "SnowballC")ライブラリ(SnowballC) 各単語のテキストがX_corpus_clean幹1.5エキス< - tm_map(X_corpus_clean、stemDocument) 1.6を削除余分な空白X_corpus_clean < - tm_map (X_corpus_clean、stripWhitespace)はワード行列X_dtm < - - 1.7ドキュメントを作成し、単語のテキスト文書に分割されDocumentTermMatrix(X_corpus_clean) ############ 2は、入力データを準備##### ########
2.1訓練データセットとデータセットテスト分割X_dtm_train < - X_dtmを[1:4169 、] X_dtm_test < - X_dtm [4170:5559 、] y_train < - Y [1:4169 ] android.permission.FACTOR < - Y [4170:5559。] #の説明:df_rawオリジナルデータがランダムに選択されているので、それは直接ストレートテストデータの前部75%のデータにすることが可能である。#2.2チェック試料の傾斜分布かprop.table(テーブル(y_train))prop.table (テーブル(y_test)) 2.3フィルタDTM、頻繁<X_freq_wordsに現れる単語を選択- findFreqTerms(X_dtm_train ,. 5 #の試行錯誤が性能モデルを調整するように調整することができる)
- DTM <X_dtm_train_freqを濾過X_dtm_train [X_freq_words]はX_dtm_test_freq < - X_dtm_test [X_freq_wordsを] 2.4の数値テキストマトリックスコード2.4.1定義に可変伝達関数convert_counts < - 関数(X)を{X < - IfElse(X> 0、"はい」、" いいえ" )} 2.4.2マトリクス変換トレーニングと試験マトリックスX_train < - (X_dtm_train_freq、MARGIN = 2を適用し、convert_counts)をX_test < -適用(X_dtm_test_freq、MARGIN = 2 、convert_counts)

##### ####### 3データモデル列車############に基づいて#1 install.packagesは(「e1071中」)ライブラリ(e1071中)#のトレーニングモデル、ラプラスは0にパラメータのデフォルト値を推定しましたNB_classifier < - naiveBayes(X_train、y_train) # ############ 4性能評価モデル。############ 予測テストセット内のサンプルの4.1対y_pred < - 予測(NB_classifier、X_test) 予測値と真の値と比較するライブラリ(gmodels)クロスタブ(X = y_test、Y = y_pred、prop.chisq = F、prop.t = F、prop.c = F、DNN = C(" 各工場"、" 予測します" ))

テストセットに予測するNB_classifier混同行列モデルは次のとおりです。

 確度= 0.864 + 0.110 = 0.974

 モデルのパラメータ調整

################# 5モデルの性能##################向上させるために5.1ラプラス推定値を追加し、学習モデル NB_classifier2 < - naiveBayes(X = X_train、Y = y_train、ラプラス= 1。 )サンプルのテストセット5.2対予測y_pred2 < - (NB_classifier2、X_test)予測5.3予測値と真値クロスタブを(比較X = y_test 、Y = y_pred2、prop.chisq = F.、T = prop.t、prop.c = Fで、DNN = C(" 各工場"、" 予測"))
 


テストセットの混同マトリックス予測モデルは、NB_classifier2チュー​​ニングパラメータは渡します。

 確度= 0.865 + 0.112 = 0.977

 

編集者注:

ラプラスの推定値を調整した後、モデルパラメータの精度が向上している、それは容易ではない、高精度の前提の下で、0.977 0.974に増加しています。

おすすめ

転載: www.cnblogs.com/shanger/p/11937597.html