В обшем вот код класификатора но он постоянно выкидивает одни и теже данные.Даже кода я изменяю входные вектора
[1 :: 0.46635818441961163]
[-1 :: 0.5336418155803884]
Prediction -1.0
[1 :: 0.46635818441961163]
[-1 :: 0.5336418155803884]
Prediction -1.0
[1 :: 0.46635818441961163]
[-1 :: 0.5336418155803884]
Prediction -1.0
[1 :: 0.46635818441961163]
[-1 :: 0.5336418155803884]
Prediction -1.0
[1 :: 0.46635818441961163]
[-1 :: 0.5336418155803884]
Prediction -1.0
[1 :: 0.46635818441961163]
[-1 :: 0.5336418155803884]
Prediction -1.0
[1 :: 0.46635818441961163]
[-1 :: 0.5336418155803884]
Prediction -1.0
[1 :: 0.46635818441961163]
[-1 :: 0.5336418155803884]
Prediction -1.0
[1 :: 0.46635818441961163]
[-1 :: 0.5336418155803884]
Prediction -1.0
[1 :: 0.46635818441961163]
[-1 :: 0.5336418155803884]
Prediction -1.0
вот код
package svm;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.LinkedList;
import java.util.List;
import libsvm.svm;
import libsvm.svm_model;
import libsvm.svm_node;
import libsvm.svm_parameter;
import libsvm.svm_problem;
public class TrainSVMClasifier {
public TrainSVMClasifier(){}
public void getHogDescriptors(List<Double> gettedHogDescriptors,int gettedModelType) {
}
public svm_model StoreDataValues(String FileName, int valuesRecordSize, int featureCount) throws IOException{
LinkedList<String> DataBaseList = new LinkedList<String>();
FileReader svmDataBaseFileReader = new FileReader(FileName);
BufferedReader svmDataBaseLineReader = new BufferedReader(svmDataBaseFileReader);
for(String line = svmDataBaseLineReader.readLine(); line!=null; line = svmDataBaseLineReader.readLine()){
DataBaseList.add(line);
}
svmDataBaseLineReader.close();
System.out.println("SVM DataBase Sieze ["+DataBaseList.size()+"]");
double svmNodeValues[][] = new double[valuesRecordSize][];
int svmNodeIndex[][] = new int[valuesRecordSize][];
double svmClassLabels[] = new double[valuesRecordSize];
for(int i = 0; i < DataBaseList.size(); i++){
String [] DataBaseLine = DataBaseList.get(i).split("\\s");
svmClassLabels[i] = Integer.parseInt(DataBaseLine[0].trim());
LinkedList<Integer> svmLineValueIndex = new LinkedList<Integer>();
LinkedList<Double> svmLineValue = new LinkedList<Double>();
for(int z = 0; z < DataBaseLine.length; z++){
String [] tempDataValue = DataBaseLine[z].trim().split("#");
if(tempDataValue.length == 2){
svmLineValueIndex.add(Integer.parseInt(tempDataValue[0].trim()));
svmLineValue.add(Double.parseDouble(tempDataValue[1].trim()));
System.out.println("Index "+tempDataValue[0]+" Value "+tempDataValue[1]);
}
}
if(svmLineValue.size() > 0){
svmNodeValues[i] = new double[svmLineValue.size()];
svmNodeIndex[i] = new int[svmLineValueIndex.size()];
}
for(int x = 0; x > svmLineValue.size(); x++){
svmNodeIndex[i][x] = svmLineValueIndex.get(x);
svmNodeValues[i][x] = svmLineValue.get(x);
System.out.println("List Index value "+svmLineValueIndex.get(x)+"<==> ListValues "+svmLineValue.get(x)+" listSize "+svmLineValueIndex.size());
}
}
svm_problem svmProblem = new svm_problem();
int dataCountSize = valuesRecordSize;
svmProblem.y = new double[dataCountSize];
svmProblem.l = dataCountSize;
svmProblem.x = new svm_node[dataCountSize][];
for(int i = 0; i <dataCountSize; i++){
svmProblem.y[i] = svmClassLabels[i];
double values[] = svmNodeValues[i];
int indexes [] = svmNodeIndex[i];
svmProblem.x[i] = new svm_node[values.length];
for(int z = 0; z < values.length; z++){
svm_node node = new svm_node();
node.index = indexes[z];
node.value = values[z];
svmProblem.x[i][z] = node;
}
}
svm_parameter svmParameters = new svm_parameter();
svmParameters.probability = 1;
svmParameters.gamma = 0.5;
svmParameters.nu = 0.5;
svmParameters.C = 1;
svmParameters.svm_type = svm_parameter.C_SVC;
svmParameters.kernel_type = svm_parameter.LINEAR;
svmParameters.cache_size = 20000;
svmParameters.eps = 0.001;
svm_model model = svm.svm_train(svmProblem, svmParameters);
return model;
}
public void EvaluateInstancesAll(String FileName,svm_model modelOne, int valuesRecordSize) throws IOException{
LinkedList<String> DataSetList = new LinkedList<String>();
FileReader svmDataBaseFileReader = new FileReader(FileName);
BufferedReader svmDataBaseLineReader = new BufferedReader(svmDataBaseFileReader);
for(String line = svmDataBaseLineReader.readLine(); line!=null; line = svmDataBaseLineReader.readLine()){
DataSetList.add(line);
}
svmDataBaseFileReader.close();
double svmNodeValues[][] = new double[valuesRecordSize][];
int svmNodeIndex[][] = new int[valuesRecordSize][];
for(int i = 0; i < DataSetList.size(); i++){
String [] DataBaseLine = DataSetList.get(i).split("\\s");
LinkedList<Integer> svmLineValueIndex = new LinkedList<Integer>();
LinkedList<Double> svmLineValue = new LinkedList<Double>();
for(int z = 0; z < DataBaseLine.length; z++){
String [] tempDataValue = DataBaseLine[z].trim().split("#");
if(tempDataValue.length == 2){
svmLineValueIndex.add(Integer.parseInt(tempDataValue[0].trim()));
svmLineValue.add(Double.parseDouble(tempDataValue[1].trim()));
System.out.println("Index "+tempDataValue[0]+" Value "+tempDataValue[1]);
}
}
if(svmLineValue.size() > 0){
svmNodeValues[i] = new double[svmLineValue.size()];
svmNodeIndex[i] = new int[svmLineValueIndex.size()];
}
for(int x = 0; x > svmLineValue.size(); x++){
svmNodeIndex[i][x] = svmLineValueIndex.get(x);
svmNodeValues[i][x] = svmLineValue.get(x);
System.out.println("List Index value "+svmLineValueIndex.get(x)+"<==> ListValues "+svmLineValue.get(x)+" listSize "+svmLineValueIndex.size());
}
}
for(int i = 0; i< valuesRecordSize; i++){
int temp_indexes[] = svmNodeIndex[i];
double temp_values[] = svmNodeValues[i];
EvaluateInstancesOne(temp_indexes, temp_values, modelOne);
}
}
private void EvaluateInstancesOne(int[] index, double[] value, svm_model modelOne) {
svm_node [] nodes = new svm_node[value.length];
for(int i = 0; i< value.length; i++){
svm_node node = new svm_node();
node.index = index[i];
node.value = value[i];
nodes[i] = node;
}
int totalClasses = svm.svm_get_nr_class(modelOne);
int Labels[] = new int[totalClasses];
svm.svm_get_labels(modelOne, Labels);
double[] probabilityEstimates = new double[totalClasses];
double Prediction = svm.svm_predict_probability(modelOne, nodes, probabilityEstimates);
for(int i = 0; i < totalClasses; i++){
System.out.println("["+Labels[i]+" :: "+ probabilityEstimates[i]+"]");
}
System.out.println("Prediction "+Prediction);
}
public static void main(String[] args) throws IOException{
TrainSVMClasifier svmTrainingObject = new TrainSVMClasifier();
svm_model modelTwo = svmTrainingObject.StoreDataValues("svm1.txt",208, 60);
svmTrainingObject.EvaluateInstancesAll("svm2.txt",modelTwo, 10);
System.out.println(" Operation complete");
}
}
Как это решить?
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Я знаю метод для обработки нажатия кнопки Back, есть ли похожие методы для остальных аппаратных кнопок(меню, центральная кнопка, кнопки громкости,...
Мне нужно добавлять элементы к RecyclerView при нажатии на кнопку без потери данных, но что-то идет не такВ каждом элементе есть EditText и еще один...
Подключение к БД идет через DataBaseHelperjava В MainActivity