Skip to content

Instantly share code, notes, and snippets.

@gaucidaniel
Created January 3, 2017 20:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save gaucidaniel/82f72a5f849a76a0e586e1bd2405ccee to your computer and use it in GitHub Desktop.
Save gaucidaniel/82f72a5f849a76a0e586e1bd2405ccee to your computer and use it in GitHub Desktop.
package com.danielgauci;
import java.io.*;
import java.util.ArrayList;
import java.util.StringTokenizer;
/**
* Created by daniel on 1/3/17.
*/
public class DatasetReader {
private String mPath;
public DatasetReader(String datasetPath) {
this.mPath = datasetPath;
}
public ArrayList<Record> readDataset(){
// Initialize list to contain dataset
ArrayList<Record> dataset = new ArrayList<>();
FileInputStream fileInputStream = null;
InputStreamReader inputStreamReader = null;
BufferedReader reader = null;
try {
// Setup file reader
File file = new File(mPath);
fileInputStream = new FileInputStream(file);
inputStreamReader = new InputStreamReader(fileInputStream);
reader = new BufferedReader(inputStreamReader);
// Skip first line (since it only contains column names)
reader.readLine();
// Start reading file
String line;
while ((line = reader.readLine()) != null) {
// Initialize string tokenizer to extract attributes
StringTokenizer tokenizer = new StringTokenizer(line, ", ");
// Initialize array containing attributes for record
ArrayList<DiscreteAttribute> attributes = new ArrayList<>();
// Extract attributes from line
String outlook = tokenizer.nextToken();
String temperature = tokenizer.nextToken();
String humidity = tokenizer.nextToken();
String wind = tokenizer.nextToken();
String playTennis = tokenizer.nextToken();
// Add Outlook attribute
if(outlook.equalsIgnoreCase("overcast")) {
attributes.add(new DiscreteAttribute("Outlook", DiscreteAttribute.Overcast));
}
else if(outlook.equalsIgnoreCase("sunny")) {
attributes.add(new DiscreteAttribute("Outlook", DiscreteAttribute.Sunny));
}
else if(outlook.equalsIgnoreCase("rain")) {
attributes.add(new DiscreteAttribute("Outlook", DiscreteAttribute.Rain));
}
// Add Temperature attribute
if(temperature.equalsIgnoreCase("hot")) {
attributes.add(new DiscreteAttribute("Temperature", DiscreteAttribute.Hot));
}
else if(temperature.equalsIgnoreCase("mild")) {
attributes.add(new DiscreteAttribute("Temperature", DiscreteAttribute.Mild));
}
else if(temperature.equalsIgnoreCase("cool")) {
attributes.add(new DiscreteAttribute("Temperature", DiscreteAttribute.Cool));
}
// Add Humidity attribute
if(humidity.equalsIgnoreCase("high")) {
attributes.add(new DiscreteAttribute("Humidity", DiscreteAttribute.High));
}
else if(humidity.equalsIgnoreCase("normal")) {
attributes.add(new DiscreteAttribute("Humidity", DiscreteAttribute.Normal));
}
// Add Wind attribute
if(wind.equalsIgnoreCase("weak")) {
attributes.add(new DiscreteAttribute("Wind", DiscreteAttribute.Weak));
}
else if(wind.equalsIgnoreCase("strong")) {
attributes.add(new DiscreteAttribute("Wind", DiscreteAttribute.Strong));
}
// Add Play Tennis attribute
if(playTennis.equalsIgnoreCase("no")) {
attributes.add(new DiscreteAttribute("PlayTennis", DiscreteAttribute.PlayNo));
}
else if(playTennis.equalsIgnoreCase("yes")) {
attributes.add(new DiscreteAttribute("PlayTennis", DiscreteAttribute.PlayYes));
}
// Create record with attributes
Record record = new Record();
record.setAttributes(attributes);
dataset.add(record);
}
} catch (IOException e){
System.out.print(e.getMessage());
} finally {
try {
// Close file readers
if (reader != null) {
reader.close();
}
if (inputStreamReader != null) {
inputStreamReader.close();
}
if (fileInputStream != null) {
fileInputStream.close();
}
} catch (IOException e){
System.out.print(e.getMessage());
}
}
return dataset;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment