SUBMISSION REQUIREMENTS: Please submit a single R script file named with your “First_Last Name.R” ONLY. Your R script code must calculate the effectivness of your classification as described below.
Similar to the classification example. process and classify the newsgroup document data. Download this data and save it on your computer in your R packages folder under “tm/text/”. Your code MUST access it from there!
Note that the data is separated into one test and one train folder, each containing 20 sub folders on different subjects. Choose these 2 subjects to analyze (sci.space and rec.autos) and 100 documents from each.
Consider “rec.autos” as positive and “sci.space” as negative event. Note that kNN syntax expects (Positive First, Negative second)
Classify the Newsgroups data (by date version data set) from Blackboard:
• Save data in your “tm/text/” folder so you can specify path using system.file()
• Note that the data is separated into one test and one train folder, each containing 20 sub folders on different subjects.
Choose these 2 subjects to analyze (sci.space and rec.autos) and 100 documents from each.
• For each subject select:
– 100 documents for training from the train folder
– 100 documents for testing from the test folder
• Obtain the merged Corpus (of 400 documents), please keep the order as
– Doc1.Train from the “sci.space” newsgroup train data
– Doc1.Test from the “sci.space” newsgroup test data
– Doc2.Train from the ” rec.autos” newsgroup train data
– Doc2.Test from the ” rec.autos” newsgroup test data
• Implement preprocessing (clearly indicate what you have used)
• Create the Document-Term Matrix using the following arguments (word lengths of at least 2, word frequency of at least 5)
– use: control=list(wordLengths=c(2,Inf), bounds=list(global=c(5,Inf)))
• Split the Document-Term Matrix into proper test/train row ranges
– train range containing rows (1:100) and (201:300)
– test range containing rows (101:200) and (301:400)
– Note that knn expects the positive (“Rec”) event as first, so re-adjust your train/test range if necessary.
• Use the abbreviations “Positive” and “Negative” as tag factors in your classification.
– Check if the tag order is correct using table(Tags)
– You should get
• Positive Negative
• 100 100
– If your order is not right make proper changes.
• Classify text using the kNN() function
• Display classification results as a R dataframe and name the columns as:
– “Predict” – Tag factors of predicted subject (Positive or Negative)
– “Prob” – The classification probability
– “Correct’ – TRUE/FALSE
• What is the percentage of correct (TRUE) classifications?
• Estimate the effectiveness of your classification:
– Calculate and clearly mark the values TP, TN, FP, FN
– Create the confusion matrix and name the rows and columns with what is Positive/Negative event
– Calculate Precision
– Calculate Recall
– Calculate F-score
Note that one way you can select only 100 documents is
> Temp1 <- DirSource(Doc1.TestPath)
> Doc1.Train <- Corpus(URISource(Temp1$filelist[1:100]),readerControl=list(reader=readPlain))