我正在尝试实现机器学习算法(例如k-nn)。因为它是我的Main类,它基本上构建了8×8像素矩阵到一个数组中以便稍后操作。 (请参阅data description和sample dataset。)目前我的阵列正在打印,所以:
, Class Code: 7 DataSet:[0, 0, 3, 9, 15, 8, 0, 0, 0, 1, 15, 16, 16, 7, 0, 0, 0, 0, 5, 16, 16, 10, 4, 0, 0, 0, 3, 16, 16, 16, 9, 0, 0, 0, 0, 15, 14, 4, 0, 0, 0, 0, 0, 13, 5, 0, 0, 0, 0, 0, 1, 15, 3, 0, 0, 0, 0, 0, 4, 13, 0, 0, 0, 0, 7]
现在我的起点我想尝试实现一个非常基本的kNN算法作为构建的东西,但是我在操作正在输出的数据集时遇到了麻烦。我一直在阅读M. Mohri的机器学习基础,但它没有任何帮助。我用于构建数据的主要课程:
import java.util.*;
import java.io.*;
public class Main {
static class Data {
int[] dataSet;
int classCode;
public Data(int[] dataSet, int label) {
this.dataSet = dataSet;
this.classCode = label;
}
@Override
public String toString() {
return "Class Code: " + classCode + " DataSet:" + Arrays.toString(dataSet) + "\n";
}
}
ArrayList<Data> dataSetList;
int[][] dataArray = new int[2810][65];
private void readFile(String csvFile) {
int instances = 0;
dataSetList = new ArrayList<>();
try {
Scanner scan = new Scanner(new BufferedReader(new FileReader(csvFile)));
while (scan.hasNext()) {
String line = scan.next();
String[] extractedDataFromFile = line.split(",");
for (int i = 0; i < extractedDataFromFile.length; i++) {
dataArray[instances][i] = Integer.parseInt(extractedDataFromFile[i]);
}
dataSetList.add(new Data(dataArray[instances], dataArray[instances][extractedDataFromFile.length - 1]));
instances++;
}
System.out.println(dataSetList.toString());
} catch (FileNotFoundException ex) {
System.out.println(ex.getMessage());
}
}
public static void main(String[] args) {
Main main = new Main();
main.readFile("dataset1.csv");
}
}
这是我第一次尝试机器学习,所以任何反馈或方法都会非常受欢迎。
EDIT //
我正在考虑一个基本的kNN实现作为起点,是否有人可以将我重定向到实现类似数据集的材料或使用我当前提供的代码的示例。如果我的帖子有点模糊,我会道歉。