基于8x8矩阵的机器学习-Java
我正在尝试实现一个机器学习算法(例如k-nn),因为它代表了我的主类,它基本上将8×8像素矩阵构建到一个数组中,以供以后操作。(请参阅和。)就目前情况而言,我的阵列打印方式与此类似:基于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
, 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实现,以确定是否有人可以将我重定向到关于在类似数据集上实现的材料,或者使用我当前提供的代码的示例。我不是故意含糊其辞的我道歉