javaknn
① 你好,请问你现在有基于MapRece的knn算法的java代码么谢谢~
14/09/0308:08:01INFOjvm.JvmMetrics:=JobTracker,sessionId=
14/09/0308:08:01WARNmapred.JobClient:..
14/09/0308:08:01WARNmapred.JobClient:Nojobjarfileset.Userclassesmaynotbefound.SeeJobConf(Class)orJobConf#setJar(String).
14/09/0308:08:02INFOinput.FileInputFormat:Totalinputpathstoprocess:1
14/09/0308:08:02INFOmapred.JobClient:Runningjob:job_local_0001
14/09/0308:08:02INFOinput.FileInputFormat:Totalinputpathstoprocess:1
14/09/0308:08:02INFOmapred.MapTask:io.sort.mb=100
14/09/0308:08:03INFOmapred.MapTask:databuffer=79691776/99614720
14/09/0308:08:03INFOmapred.MapTask:recordbuffer=262144/327680
14/09/0308:08:03WARNmapred.LocalJobRunner:job_local_0001
java.lang.ClassCastException:classPoint2D
atjava.lang.Class.asSubclass(Class.java:3018)
atorg.apache.hadoop.mapred.JobConf.getOutputKeyComparator(JobConf.java:599)
atorg.apache.hadoop.mapred.MapTask$MapOutputBuffer.<init>(MapTask.java:791)
atorg.apache.hadoop.mapred.MapTask$NewOutputCollector.<init>(MapTask.java:524)
atorg.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:613)
atorg.apache.hadoop.mapred.MapTask.run(MapTask.java:305)
atorg.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:177)
14/09/0308:08:03INFOmapred.JobClient:map0%rece0%
14/09/0308:08:03INFOmapred.JobClient:Jobcomplete:job_local_0001
14/09/0308:08:03INFOmapred.JobClient:Counters:0
② 求KNN文本分类算法java实现源代码【散分了!!!!】
#include <iostream>
#include <cmath>
#include <fstream>
using namespace std;
#define NATTRS 5 //number of attributes
#define MAXSZ 1700 //max size of training set
#define MAXVALUE 10000.0 //the biggest attribute's value is below 10000(int)
#define K 5
struct vector {
double attributes[NATTRS];
double classlabel;
};
struct item {
double distance;
double classlabel;
};
struct vector trSet[MAXSZ];//global variable,the training set
struct item knn[K];//global variable,the k-neareast-neighbour set
int curTSize = 0; //current size of the training set
int AddtoTSet(struct vector v)
{
if(curTSize>=MAXSZ) {
cout<<endl<<"The training set has "<<MAXSZ<<" examples!"<<endl<<endl;
return 0;
}
trSet[curTSize] = v;
curTSize++;
return 1;
}
double Distance(struct vector v1,struct vector v2)
{
double d = 0.0;
double tem = 0.0;
for(int i = 0;i < NATTRS;i++)
tem += (v1.attributes[i]-v2.attributes[i])*(v1.attributes[i]-v2.attributes[i]);
d = sqrt(tem);
return d;
}
int max(struct item knn[]) //return the no. of the item which has biggest distance(
//should be replaced)
{
int maxNo = 0;
if(K > 1)
for(int i = 1;i < K;i++)
if(knn[i].distance>knn[maxNo].distance)
maxNo = i;
return maxNo;
}double Classify(struct vector v)//decide which class label will be assigned to
//a given input vetor with the knn method
{
double dd = 0;
int maxn = 0;
int freq[K];
double mfreqC = 0;//the class label appears most frequently
int i;
for(i = 0;i < K;i++)
knn[i].distance = MAXVALUE;
for(i = 0;i < curTSize;i++)
{
dd = Distance(trSet[i],v);
maxn = max(knn);//for every new state of the training set should update maxn
if(dd < knn[maxn].distance) {
knn[maxn].distance = dd;
knn[maxn].classlabel = trSet[i].classlabel;
}
}
for(i = 0;i < K;i++)//freq[i] represents knn[i].classlabel appears how many times
freq[i] = 1;
for(i = 0;i < K;i++)
for(int j = 0;j < K;j++)
if((i!=j)&&(knn[i].classlabel == knn[j].classlabel))
freq[i]+=1;
int mfreq = 1;
mfreqC = knn[0].classlabel;
for(i = 0;i < K;i++)
if(freq[i] > mfreq) {
mfreq = freq[i];//mfreq represents the most frepuences
mfreqC = knn[i].classlabel; //mfreqNo is the item no. with the most frequent
//classlabel
}
return mfreqC;
}
void main()
{ double classlabel;
double c;
double n;
struct vector trExmp;
int i;
ifstream filein("G:\\data\\for knn\\data.txt");
if(filein.fail()){cout<<"Can't open data.txt"<<endl; return;}
while(!filein.eof()) {
filein>>c;
trExmp.classlabel = c;
cout<<trExmp.classlabel<<" "; for(int i = 0;i < NATTRS;i++) {
filein>>n;
trExmp.attributes[i] = n;
cout<<trExmp.attributes[i]<<" ";
} cout<<endl;
if(!AddtoTSet(trExmp))
break;
}filein.close();struct vector testv={{142,188,11,1159,0.5513196},17};
classlabel = Classify(testv);
cout<<"The classlable of the testv is: ";
cout<<classlabel<<endl;
for(i = 0;i < K;i++)
cout<<knn[i].distance<<"\t"<<knn[i].classlabel<<endl;
//cout<<max(knn);
}
③ 学习java后,可以从事一些什么职业,以及这些职业具体做些什么。
相关阅读:
零基础学习编程应该选择什么样的方向来深入学习
1、IT技术方向划分
首先是IT技术方向,我觉得这样划分更合理一点:移动开发方向、后台方向、游戏开发方向、算法/研究方向。
因为互联网行业后端服务器一般都是Linux,所以web后台开发和Linux服务器开发可视为是一个方向(除非你指的Linux服务器开发是系统架构师,不过那是运维的工作,应该不算做开发吧)。
还有就是游戏开发以C++为主却不仅限于C++,虽然很多大型游戏都是C++开发的,比如现在的手游也有Android、IOS的开发的,还有些游戏开发会用新的技术(如比较有名的Unity,可能在大学都还接触不到)。数据库基本上都是架构师和程序员一起的设计的。
2、IT行业的发展趋势
移动端(手机操作系统)是一个变化最快的领域,也存在很大的变数。10年之前,在诺基亚风靡全球的时候,你会想到Android有现在这么大的前景这么多的用户量吗?2010年开始(其实08年就开始酝酿了),Android迅速崛起,发展异常的凶猛,到2012年几乎人手一台Android设备了,与此同时诺基亚却一路下滑,直至跌到低谷再也爬不起来的,后来投入微软的怀抱也发展的不太顺利,已经是大势已去。而苹果从2007年第一代iPhone诞生的时候开始,走的就是高大上的路线,主要针对的是高端人群,价格是所有手机中最高的,但技术也是最牛逼的,体验是最友好的,以至于每一次的发布会排队的人都济到爆!
互联网我认为IT领域未来的发展方向,从实体方面来看一定是智能设备和物联网,从领域来看一定是互联网+,未来的网络将会越来越智能。
互联网是网络与网络,网络与人的连接;而物联网就是物体与网络,人与网络的连接。阿里巴巴的投资人孙正义在互联网大会上说过:“今天每个人大概会有两个移动设备,2020年的时候,每个人连接的设备的数量会达到一千个”。未来将会是周围都是物体,而物体都与网络连接,也就是周围都是物体,周围都是网络。而且物体将会越来越智能,智能家居应该会发展起来,比如你一回家,空调就开了,电灯就亮了;一出门空调和电灯就关了,还提醒你今天的天气状况…… 现在已经有很多物联网慢慢发展起来了。
游戏我本人不怎么玩游戏,对游戏不太了解!但从整个社会发展来看,世界在不断发展,中国也日益强大,随着经济水平的不断提高,人们有更多的时间用来悠闲娱乐,也有更好的物质基础。在这种趋势下,玩游戏的人应该会越来越多,游戏行业应该会越来越景气。
3、技术方向的前景
根据以上的分析,互联网将会应用的越来越广泛,web前端、web后台方面、移动开发的人才在未来的三五年内应该都是紧需的人才。随着大数据时代的到来,算法/研究方向的高端人才将变得及为紧缺。
4、技术的学习
我曾经做过阿里和网络的校招笔试题,Java研发工程师的笔试题要求的计算机语言主要以Java为主,会有少量的C++题,程序设计的题目一般可以在Java、C++等语言中任选一种。题目的类型的话,你提到的数据结构与算法、数据库、操作系统、计算机网络等都会有。算法工程师职位的笔试题语言主要以C++为主,类型会有什么KNN啊、隐马尔可夫啊、最短距离等很难的算法。
Java的笔试题会有部分C++的题目,我想可能是有这么两个原因吧:
考查你的学习态度是否认真努力,因为C++是几乎是所有大学里计算机相关专业学生的必需课;
考查你对计算机语言底层的一些认识,对基础的掌握程度,比如:如果你熟悉C++,就会知道数组在内存中其实就是一块连续的内存段。
如果你想做Java后台开发的话,就以Java web技术的学习为主,C++基础还是有必要掌握的。
5、方向的选择
至于技术方向的选择,我觉得不管做什么选择,都应该以兴趣为主,跟着自己的心走!这样才不会留下遗憾。这样还无法做出选择的话,就跟着直觉走吧! 我觉得在对事件一无所知的情况下,直觉是0.5自我意识+0.5天意
④ knn算法算是一种python模型吗
“算法”不能算是“模型”,更不能说是“python模型”,因为python能实现的,c++、java等通用语言也能实现。
⑤ 你好,关于KNN算法的maprece化
==================cluster.txt===========================
A 2 2
B 2 4
C 4 2
D 4 4
E 6 6
F 6 8
G 8 6
H 8 8
==================cluster.center.conf===========================
K1 3 2
K2 6 2
====================================================================================
package com.mahout.cluster;
//二维坐标的点
public class DmRecord {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
private double xpodouble;
private double ypodouble;
public DmRecord(){
}
public DmRecord(String name,double x,double y){
this.name = name;
this.xpodouble = x;
this.ypodouble = y;
}
public double getXpoint() {
return xpodouble;
}
public void setXpoint(double xpodouble) {
this.xpodouble = xpodouble;
}
public double getYpoint() {
return ypodouble;
}
public void setYpoint(double ypodouble) {
this.ypodouble = ypodouble;
}
public double distance(DmRecord record){
return Math.sqrt(Math.pow(this.xpodouble-record.xpodouble, 2)+Math.pow(this.ypodouble-record.ypodouble, 2));
}
}
==============================================================================
package com.mahout.cluster;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;
import org.apache.hadoop.io.IOUtils;
public class DmRecordParser {
private Map<String,DmRecord> urlMap = new HashMap<String,DmRecord>();
/**
* 读取配置文件记录,生成对象
*/
public void initialize(File file) throws IOException {
BufferedReader in = null;
try {
in = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
String line;
while ((line = in.readLine()) != null) {
String [] strKey = line.split("\t");
urlMap.put(strKey[0],parse(line));
}
} finally {
IOUtils.closeStream(in);
}
}
/**
* 生成坐标对象
*/
public DmRecord parse(String line){
String [] strPlate = line.split("\t");
DmRecord Dmurl = new DmRecord(strPlate[0],Integer.parseInt(strPlate[1]),Integer.parseInt(strPlate[2]));
return Dmurl;
}
/**
* 获取分类中心坐标
*/
public DmRecord getUrlCode(String cluster){
DmRecord returnCode = null;
DmRecord dmUrl = (DmRecord)urlMap.get(cluster);
if(dmUrl == null){
//35 6
returnCode = null;
}else{
returnCode =dmUrl;
}
return returnCode;
}
}
==============================================================================
package com.mahout.cluster;
import java.io.File;
import java.io.IOException;
import java.util.Iterator;
import org.apache.hadoop.conf.Configured;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.io.compress.CompressionCodec;
import org.apache.hadoop.mapred.FileInputFormat;
import org.apache.hadoop.mapred.FileOutputFormat;
import org.apache.hadoop.mapred.JobClient;
import org.apache.hadoop.mapred.JobConf;
import org.apache.hadoop.mapred.MapReceBase;
import org.apache.hadoop.mapred.Mapper;
import org.apache.hadoop.mapred.OutputCollector;
import org.apache.hadoop.mapred.Recer;
import org.apache.hadoop.mapred.Reporter;
import org.apache.hadoop.mapred.TextInputFormat;
import org.apache.hadoop.mapred.TextOutputFormat;
import org.apache.hadoop.util.Tool;
import org.apache.hadoop.util.ToolRunner;
import com.mahout.test.StringStringPairAsce;
public class Kmeans extends Configured implements Tool {
public static class KmeansMapper extends MapReceBase implements
Mapper<LongWritable, Text, Text, Text> {
private DmRecordParser drp ;
private String clusterNode = "K";
private DmRecord record0 = null;
private DmRecord record1 = new DmRecord();
private double Min_distance = 9999;
private int tmpK = 0;
private Text tKey = new Text();
private Text tValue = new Text();
//获取聚类中心坐标
@Override
public void configure(JobConf conf) {
drp = new DmRecordParser();
try {
drp.initialize(new File("cluster.center.conf"));
} catch (IOException e) {
throw new RuntimeException(e);
}
}
//根据聚类坐标,把文件中的点进行类别划分
@Override
public void map(LongWritable key, Text value,
OutputCollector<Text, Text> output, Reporter arg3)
throws IOException {
String [] strArr = value.toString().split("\t");
for(int i=1; i <= 2; i++){
record0 = drp.getUrlCode("K"+i);
record1.setName(strArr[0]);
record1.setXpoint(Double.parseDouble(strArr[1]));
record1.setXpoint(Integer.parseInt(strArr[2]));
if(record0.distance(record1) < Min_distance){
tmpK = i;
Min_distance = record0.distance(record1);
}
}
tKey.set("C"+tmpK);
output.collect(tKey, value);
}
}
//计算新的聚类中心
public static class KmeansRecer extends MapReceBase implements
Recer<Text, Text, Text, Text> {
private Text tKey = new Text();
private Text tValue = new Text();
@Override
public void rece(Text key, Iterator<Text> value,
OutputCollector<Text, Text> output, Reporter arg3)
throws IOException {
double avgX=0;
double avgY=0;
double sumX=0;
double sumY=0;
int count=0;
String [] strValue = null;
while(value.hasNext()){
count++;
strValue = value.next().toString().split("\t");
sumX = sumX + Integer.parseInt(strValue[1]);
sumY = sumY + Integer.parseInt(strValue[1]);
}
avgX = sumX/count;
avgY = sumY/count;
tKey.set("K"+key.toString().substring(1,2));
tValue.set(avgX + "\t" + avgY);
System.out.println("K"+key.toString().substring(1,2)+"\t"+avgX + "\t" + avgY);
output.collect(tKey, tValue);
}
}
@Override
public int run(String[] args) throws Exception {
JobConf conf = new JobConf(getConf(), Kmeans.class);
conf.setJobName("Kmeans");
//conf.setNumMapTasks(200);
// 设置Map输出的key和value的类型
conf.setMapOutputKeyClass(Text.class);
conf.setMapOutputValueClass(Text.class);
// 设置Rece输出的key和value的类型
conf.setOutputKeyClass(Text.class);
conf.setOutputValueClass(Text.class);
// 设置Mapper和Recer
conf.setMapperClass(KmeansMapper.class);
conf.setRecerClass(KmeansRecer.class);
conf.setInputFormat(TextInputFormat.class);
conf.setOutputFormat(TextOutputFormat.class);
// 设置输入输出目录
FileInputFormat.setInputPaths(conf, new Path(args[0]));
FileOutputFormat.setOutputPath(conf, new Path(args[1]));
JobClient.runJob(conf);
return 0;
}
public static void main(String[] args) throws Exception {
int exitCode = ToolRunner.run(new Kmeans(), args);
System.exit(exitCode);
}
}
⑥ 如何用java做用户行为分析用什么算法
据我所知,java好像对大数据分析方面没有什么现成的方法或包可以调用。
现在做数据分析(机器学习)用的比较多的是Python和R还有Matlib;
//如果是简单的汇总分析,分类,回归的话,excel就足够了。java使用数据库也可以完成。
其中Python算比较简单的,有现成的科学计算工具和非常活跃的社区。
常用的算法:回归分析,支持向量机(SVM),决策树,K-近邻(KNN),K-均值(k-means)。。。还有比较火的深度学习(DL)。可以了解一下。
⑦ java软件工程师要掌握哪些基础知识
ajax
js
sql
这些在加上你已学的,你可以当JAVA程序员了,要做JAVA工程师的话;
JAVA的常用API
JAVA异常处理机制
JAVA回收机制
多线程
最好是了解一些基础算法如:(KNN,SVM,网络神经模型等对你求职会有很大帮助)
以上只是一部分,还有很多,总之一句话,学无止境。
建议你别等学好了才去做,要在做中去学。
⑧ java 分类器算法问题!!急。。。。
判断一个次的极性是要根据它的属性来判断的,所以你要先确定用那些属性来表示一个词,一条记录包括对词描述的属性和一般属性(词的长度,包括的音标,后缀,词根等)和分类属性(正面和负面的),这样才能形成一个数据集,提供给算法进行分类,所以第一步是形成数据集。
然后可以有特征选择之类的预处理步骤,再根据分类算法进行分类(分类的算法网络上都有代码,自己找下),用算法的模型对要分类的词进行分类,最后做个界面什么的,好看点。
算法的话很多啊,象决策树,kNN之类的就比较简单,你是做本科毕业设计吗?如果是的话,反正要求不高,算法不重要,找现成的代码就行。
可以找些资料看,知道分类是怎么回事就好。svm要证明的话需要数学功底,只是要用的话,呵呵,就下现成代码好了。
不知道你是不是要问这个,希望能帮到你。
⑨ 一个Java开发的项目,有什么数据挖掘工具可以整合到平台中,进而可以将挖掘结果展示到页面中
很多数据挖掘方法都有相应的jar包的,可以去查一些简单的分类knn聚类kmeans等等方法。