资源简介

KNN人工智能机器学习算法JAVA实现

资源截图

代码片段和文件信息


import java.io.*;
import java.util.*;
import java.util.Collections;
import java.util.Comparator;
import java.lang.*;

 class defWord{
int wordIndex;
int wordFreq;
   defWord(int A int B )
{
wordIndex = A;
wordFreq  = B;
}

};
class defClass{
double textDis;
int emo;
defClass(double A int B )
{
textDis = A;
emo = B;
}
defClass()
{
textDis = 0;
emo = 0;
}
};

 class MyCompare implements Comparator //实现Comparator,定义自己的比较方法
{
@Override
public int compare(object o1 object o2) {
defClass e1=(defClass)o1;
defClass e2=(defClass)o2;
if (e1.textDis>e2.textDis)  return 1; //这样比较是降序如果把-1改成1就是升序
else if (e1.textDis else return 0;
}
}

public class KNNClassification{

static Vector data = new Vector(3);  // 二位向量,用于储存记录每个文本向量,
static Vector allTestResult = new Vector(3);
static Vector wordList = new Vector(3); // 用于储存所有出现的不重复单词,顺序为文本出现的顺序
static Vector wordInTextRecord = new Vector(3);  // 用于记录每个出现该单词的文件的总数
static Vector TrainTextPosb = new Vector(3); // 用于记录回归时训练文本的标签概率
public void KNN(){}

    public static void classification (BufferedReader readKNN)throws IOException
{
String line;
line= readKNN.readLine();
while( (line= readKNN.readLine())!=null)
{

String[] testWords = line.split(“ “);
int wordListSize = wordList.size();
int[] testText = new int[wordListSize];  // 储存每段所需文本的第三段相关信息
for (int i=0;i int num=0;
for (String testWord:testWords)  // 遍历每个文本的单词
{
num++;
if (num<4)  continue;
int wordIndex = wordList.indexOf(testWord);  // 在总单词向量表中寻找单词
if ( wordIndex!=-1 )   // 如果单词已存在于单词向量中
{
if (testText[wordIndex]==0)  testText[wordIndex]=1;
}
}
int e=testWords[1].charAt(0)-‘0‘;
Vector textResult = new Vector(data.size());
//int aaa=0;
for (Vector trainText:data)
{

double dis = 0;
int idx=0;
defWord trainWord = (defWord)trainText.get(idx);
for (int i=0;i {
if (i==trainWord.wordIndex) 
{
idx+=1; 
if (idx if (testText[i]==0) dis+=1;
}
else if (i!=trainWord.wordIndex && testText[i]==1) dis+=1;
}
trainWord = (defWord)trainText.lastElement();
//System.out.println(train.wordIndex);
defClass res = new defClass(dis trainWord.wordIndex);
textResult.addElement(res);
}
Comparator cmp = new MyCompare();
Collections.sort(textResultcmp);
defClass res = new defClass(-1e);
textResult.addElement(res);
allTestResult.addElement(textResult);
}
//return allTextResult;
}

public static double getClassfied(int kOutputStreamWriter output1NN) throws IOException
{

int correctNum = 0;
int num=0;
for (Vector test:allTestResult)
{
num++;
int[] emot

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件       33251  2016-09-17 01:44  Dataset_test.csv
     文件       19160  2016-09-17 01:44  Dataset_train.csv
     文件       42503  2016-09-17 01:44  Dataset_validation.csv
     文件       63727  2016-09-17 01:44  Dataset_words.csv
     文件        7642  2016-09-27 11:34  KNNClassification.java
     文件       12135  2016-10-05 21:45  KNNRegression.java
     文件       38918  2016-10-05 21:34  test.xlsx
     文件       48784  2016-09-17 01:44  test1.txt
     文件       11993  2016-09-17 01:44  train1.txt
     文件       56772  2016-09-19 00:24  validation.xlsx

评论

共有 条评论