基于8x8矩阵的机器学习-Java

基于8x8矩阵的机器学习-Java,java,algorithm,machine-learning,Java,Algorithm,Machine Learning,我正在尝试实现一个机器学习算法(例如k-nn),因为它代表了我的主类,它基本上将8×8像素矩阵构建到一个数组中,以供以后操作。(请参阅和。)就目前情况而言,我的阵列打印方式与此类似: , 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

我正在尝试实现一个机器学习算法(例如k-nn),因为它代表了我的主类,它基本上将8×8像素矩阵构建到一个数组中,以供以后操作。(请参阅和。)就目前情况而言,我的阵列打印方式与此类似:

, 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");
    }

}
import java.util.*;
导入java.io.*;
公共班机{
静态类数据{
int[]数据集;
int类代码;
公共数据(int[]数据集,int标签){
this.dataSet=数据集;
this.classCode=标签;
}
@凌驾
公共字符串toString(){
返回“类代码:”+classCode+“数据集:”+Arrays.toString(数据集)+“\n”;
}
}
ArrayList数据集列表;
int[]dataArray=newint[2810][65];
私有void readFile(字符串csvFile){
int实例=0;
dataSetList=newarraylist();
试一试{
扫描程序扫描=新扫描程序(新的BufferedReader(新的文件读取器(csvFile));
while(scan.hasNext()){
String line=scan.next();
字符串[]extractedDataFromFile=line.split(“,”);
for(int i=0;i
这是我第一次尝试机器学习,所以对此的任何反馈或方法都将不胜感激

编辑//

我将一个基本的kNN实现作为一个起点,看是否有人可以将我重定向到关于在类似数据集上实现的资料,或者使用我当前提供的代码的示例。如果我最初的帖子有点含糊,我向你道歉

你能详细回答一个具体问题吗?如果代码已经是正确的(从机器学习的角度来看),那么这可能属于代码审查。我正在研究一个基本的kNN实现,以确定是否有人可以将我重定向到关于在类似数据集上实现的材料,或者使用我当前提供的代码的示例。我不是故意含糊其辞的我道歉