Created
January 3, 2017 20:27
-
-
Save gaucidaniel/82f72a5f849a76a0e586e1bd2405ccee to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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