资源简介
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
- 上一篇:Android 汉字字母检索
- 下一篇:计算机科学与技术软件工程面试专业知识汇总
评论
共有 条评论