import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.StringTokenizer;
public class DataReading {
public ArrayList> readDataset(String path) {
ArrayList> dataset = new ArrayList>();
File file = new File(path);
FileReader reader = null;
BufferedReader br = null;
try {
reader = new FileReader(file);
br = new BufferedReader(reader);
String str = null;
while ((str = br.readLine()) != null) {
String[] datas = str.split(",");
ArrayList rows = new ArrayList();
for (int j = 0; j < datas.length - 1; j++) {
rows.add(Double.valueOf(datas[j]));
}
dataset.add(rows);
}
reader.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return dataset;
}
public ArrayList readTestData() {
ArrayList candAttr = new ArrayList();
BufferedReader reader = new BufferedReader(new InputStreamReader(
System.in));
String str;
try {
if (!(str = reader.readLine()).equals("")) {
StringTokenizer tokenizer = new StringTokenizer(str);
while (tokenizer.hasMoreTokens()) {
candAttr.add(Double.parseDouble(tokenizer.nextToken()));
}
}
} catch (NumberFormatException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return candAttr;
}
}
四、主方法
/**
* 主方法
*
* @param path
* 训练数据所在路径
*/
public void main(String path) {
// 训练数据
ArrayList> datas = null;
// 测试数据
ArrayList testT = null;
DataReading dr = new DataReading();
System.out.println("训练数据录入中-----------------------------");
datas = dr.readDataset(path);
HashMap>> classifyer = practiceClassifyer(datas);
while (true) {
System.out.println("请输入测试元组");
testT = dr.readTestData();
double c = bayes(classifyer, testT);
System.out.println("The class is: " + c);
}
}
五、说明
只需调用main(String path)方法即可,path是训练集的路径