热线电话:13121318867

登录
首页精彩阅读数据挖掘的分类算法
数据挖掘的分类算法
2016-01-27
收藏

数据挖掘的分类算法


数据分析师对数据进行数据挖掘时,会运用很多算法,其中一种是分类算法,下面就对数据分析师运用分类算法进行一下详解,如下:

@@ -0,0 +1,15 @@
+packageDataMining_HITS;
+
+/**
+* HITSÁ´½Ó·ÖÎöËã·¨
+* @author lyq
+*
+*/
+publicclassClient{
+publicstaticvoidmain(String[]args){
+StringfilePath="C:\\Users\\lyq\\Desktop\\icon\\input.txt";
+
+HITSTooltool=newHITSTool(filePath);
+ tool.printResultPage();
+ }
+}


View
150  LinkMining/DataMining_HITS/HITSTool.java
@@ -0,0 +1,150 @@
+packageDataMining_HITS;
+
+importjava.io.BufferedReader;
+importjava.io.File;
+importjava.io.FileReader;
+importjava.io.IOException;
+importjava.util.ArrayList;
+
+/**
+* HITS链接分析算法工具类
+* @author lyq
+*
+*/
+publicclassHITSTool{
+//输入数据文件地址
+privateStringfilePath;
+//网页个数
+privateintpageNum;
+//网页Authority权威值
+privatedouble[] authority;
+//网页hub中心值
+privatedouble[] hub;
+//链接矩阵关系
+privateint[][] linkMatrix;
+//网页种类
+privateArrayList<String>pageClass;
+
+publicHITSTool(StringfilePath){
+this.filePath=filePath;
+ readDataFile();
+ }
+
+/**
+* 从文件中读取数据
+*/
+privatevoidreadDataFile() {
+Filefile=newFile(filePath);
+ArrayList<String[]>dataArray=newArrayList<String[]>();
+
+try{
+BufferedReaderin=newBufferedReader(newFileReader(file));
+Stringstr;
+String[] tempArray;
+while((str=in.readLine())!=null) {
+ tempArray=str.split("");
+ dataArray.add(tempArray);
+ }
+ in.close();
+ }catch(IOExceptione) {
+ e.getStackTrace();
+ }
+
+ pageClass=newArrayList<>();
+// 统计网页类型种数
+for(String[] array:dataArray) {
+for(Strings:array) {
+if(!pageClass.contains(s)) {
+ pageClass.add(s);
+ }
+ }
+ }
+
+inti=0;
+intj=0;
+ pageNum=pageClass.size();
+ linkMatrix=newint[pageNum][pageNum];
+ authority=newdouble[pageNum];
+ hub=newdouble[pageNum];
+for(intk=0; k<pageNum; k++){
+//初始时默认权威值和中心值都为1
+ authority[k]=1;
+ hub[k]=1;
+ }
+
+for(String[] array:dataArray) {
+
+ i=Integer.parseInt(array[0]);
+ j=Integer.parseInt(array[1]);
+
+// 设置linkMatrix[i][j]为1代表i网页包含指向j网页的链接
+ linkMatrix[i-1][j-1]=1;
+ }
+ }
+
+/**
+* 输出结果页面,也就是authority权威值最高的页面
+*/
+publicvoidprintResultPage(){
+//最大Hub和Authority值,用于后面的归一化计算
+doublemaxHub=0;
+doublemaxAuthority=0;
+intmaxAuthorityIndex=0;
+//误差值,用于收敛判断
+doubleerror=Integer.MAX_VALUE;
+double[] newHub=newdouble[pageNum];
+double[] newAuthority=newdouble[pageNum];
+
+
+while(error>0.01*pageNum){
+for(intk=0; k<pageNum; k++){
+ newHub[k]=0;
+ newAuthority[k]=0;
+ }
+
+//hub和authority值的更新计算
+for(inti=0; i<pageNum; i++){
+for(intj=0; j<pageNum; j++){
+if(linkMatrix[i][j]==1){
+ newHub[i]+=authority[j];
+ newAuthority[j]+=hub[i];
+ }
+ }
+ }
+
+ maxHub=0;
+ maxAuthority=0;
+for(intk=0; k<pageNum; k++){
+if(newHub[k]>maxHub){
+ maxHub=newHub[k];
+ }
+
+if(newAuthority[k]>maxAuthority){
+ maxAuthority=newAuthority[k];
+ maxAuthorityIndex=k;
+ }
+ }
+
+ error=0;
+//归一化处理
+for(intk=0; k<pageNum; k++){
+ newHub[k]/=maxHub;
+ newAuthority[k]/=maxAuthority;
+
+ error+=Math.abs(newHub[k]-hub[k]);
+System.out.println(newAuthority[k]+":"+newHub[k]);
+
+ hub[k]=newHub[k];
+ authority[k]=newAuthority[k];
+ }
+System.out.println("---------");
+ }
+
+System.out.println("****最终收敛的网页的权威值和中心值****");
+for(intk=0; k<pageNum; k++){
+System.out.println("网页"+pageClass.get(k)+":"+authority[k]+":"+hub[k]);
+ }
+System.out.println("权威值最高的网页为:网页"+pageClass.get(maxAuthorityIndex));
+ }
+
+}


View
4  LinkMining/DataMining_HITS/input.txt
@@ -0,0 +1,4 @@
+1 2
+1 3
+2 3
+3 1

数据分析咨询请扫描二维码

最新资讯
更多
客服在线
立即咨询