`
ttitfly
  • 浏览: 615936 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

数据挖掘关于分类方面

阅读更多
1.提供自动学习数据,对这些数据进行索引
2。从索引里提取一个2维矩阵列表,写入一个文本文件里。关键性代码如下:

java 代码
 
  1. import java.io.File;  
  2. import java.util.HashMap;  
  3.   
  4. import org.apache.log4j.Logger;  
  5. import org.apache.lucene.document.Document;  
  6. import org.apache.lucene.index.IndexReader;  
  7. import org.apache.lucene.index.Term;  
  8. import org.apache.lucene.index.TermEnum;  
  9. import org.apache.lucene.search.BooleanQuery;  
  10. import org.apache.lucene.search.Hits;  
  11. import org.apache.lucene.search.IndexSearcher;  
  12. import org.apache.lucene.search.Query;  
  13. import org.apache.lucene.search.TermQuery;  
  14. import org.apache.lucene.search.BooleanClause.Occur;  
  15. import org.apache.lucene.store.Directory;  
  16. import org.apache.lucene.store.FSDirectory;  
  17.   
  18. import com.feedsky.classify.util.FileUtil;  
  19.   
  20. public class MMClassify{  
  21.       
  22.     private static String indexDir = "D:\\projectsvn\\trunk\\classify\\indexFile";//索引目录  
  23.     private static String resultFile = "D:\\projectsvn\\trunk\\classify\\resultFile.txt";  
  24.     private  IndexSearcher searcher ;  
  25.     private  IndexReader reader;  
  26.     private Logger logger = Logger.getLogger(MMClassify.class);  
  27.     private HashMap clazzMap = new HashMap();  
  28.     private String[] clazzArray = {"C000007","C000008","C000010","C000013","C000014","C000016","C000020","C000022","C000023","C000024"};  
  29.   
  30.       
  31.     public static void main(String[] args) {  
  32. //      Matrix matrix = new Matrix(10,2);  
  33. //      matrix.set(0, 1, 0.5);  
  34. //      matrix.set(1, 1, 0.5);  
  35. //  //  System.out.println(matrix);  
  36.         MMClassify mm = new MMClassify();  
  37.         mm.init();  
  38.         mm.process();  
  39.         // System.out.println(mm.matrix);  
  40.     }  
  41.       
  42.     public void init(){  
  43.         try{  
  44.             Directory directory = FSDirectory.getDirectory(indexDir);  
  45.             reader = IndexReader.open(directory);  
  46.             searcher = new IndexSearcher(reader);  
  47.               
  48.              
  49.             clazzMap.put("C000007""汽车");  
  50.             clazzMap.put("C000008""财经");  
  51.             clazzMap.put("C000010""IT");    
  52.             clazzMap.put("C000013""健康");  
  53.             clazzMap.put("C000014""体育");  
  54.             clazzMap.put("C000016""旅游");  
  55.             clazzMap.put("C000020""教育");  
  56.             clazzMap.put("C000022""招聘");  
  57.             clazzMap.put("C000023""文化");  
  58.             clazzMap.put("C000024""军事");  
  59.      
  60.         }catch(Exception e){  
  61.             e.printStackTrace();  
  62.         }  
  63.     }  
  64.       
  65.     public void process(){  
  66.         try{  
  67.             //提取所有关键词的Term集合  
  68.             TermEnum terms = reader.terms();  
  69.             while (terms.next()) {  
  70.                 //提取其中一个Term  
  71.                 Term term = terms.term();  
  72.                 String keyWord = term.text();  
  73.                 //判断该关键词的所属域  
  74.                 if(term.field().equals("itemContent")){  
  75.                     BooleanQuery booleanQuery = new BooleanQuery();  
  76.                     Query keywordQuery = new TermQuery(new Term("itemContent",keyWord));  
  77.                     booleanQuery.add(keywordQuery,Occur.MUST);  
  78.                     //到索引文件里做全部搜索  
  79.                     Hits hits = searcher.search(keywordQuery);  
  80.                       
  81.                     ResultList list = new ResultList(keyWord);  
  82.                     for (int i = 0; i < hits.length(); i++) {  
  83.                         Document doc = (Document)hits.doc(i);  
  84.                         float score = hits.score(i);  
  85.                         //doc.get("dirname");获得分类编号  
  86.                         Result result = new Result(score,doc.get("dirname"));  
  87.                         list.addResult(result);  
  88.                     }  
  89.                     HashMap map = list.resultMap;  
  90.                       
  91.                     //提取二维矩阵表  
  92.                     StringBuffer resultStr = new StringBuffer();  
  93.                      
  94.                     for(int i=0;i
  95.                         String clazz = clazzArray[i];  
  96.                         if(map.get(clazz) == null){  
  97.                             resultStr.append(0 + "  ");  
  98.                         }else{  
  99. //                          Float score = (Float)map.get(clazz);  
  100. //                          resultStr.append(score.floatValue() + "  ");  
  101.                             resultStr.append(list.getValue(clazz) + "  ");  
  102.                         }  
  103.                     }  
  104. //                  System.out.println(resultStr.toString());  
  105.                     Boolean isAppend = true;  
  106.                     File file = new File(resultFile);  
  107.                     if(!file.isFile()){  
  108.                         isAppend = false;  
  109.                     }  
  110.                     String content = keyWord + "  " + resultStr.toString();  
  111.                     FileUtil.writeFileByLine(content , resultFile , "GBK" , isAppend);  
  112.                       
  113.                     //提取该关键词在所有分类里的分值  
  114. //                  Iterator it = map.keySet().iterator();  
  115. //                  while (it.hasNext()) {  
  116. //                      // Get key,分类编号  
  117. //                      String key = (String)it.next();  
  118. //                      Float score = (Float)map.get(key);  
  119. //                       
  120. //                      //该关键词所在的分类以及分值  
  121. //                      String outline = keyWord + " clazz:" + (String)clazzMap.get(key) + "  score:" + score.floatValue();  
  122. //                      System.out.println(outline);  
  123. //                      logger.info(outline);  
  124. //                        
  125. //                  }  
  126.                       
  127.                       
  128.     //              matrix = new Matrix(hits.length(),2);  
  129.                 }  
  130.                   
  131.                  //FileUtil.writeFileByLine(out.toString(), "D:\\projectsvn\\trunk\\classify\\out.txt", "gbk", true);  
  132.                   
  133.             }  
  134.         }catch(Exception e){  
  135.             e.printStackTrace();  
  136.         }  
  137.     }  
  138.   
  139. }  
  140.   
  141.   
  142. class Result {  
  143.     public Float score;  
  144.     public String clazz;  
  145.       
  146.     public Result(float score, String clazz) {  
  147.         super();  
  148.         this.score = score;  
  149.         this.clazz = clazz;  
  150.     }  
  151. }  
  152.   
  153.   
  154. class ResultList{  
  155.     public HashMap resultMap = new HashMap();  
  156.     public String keyword ;  
  157.       
  158.     public ResultList(String keyword) {  
  159.         super();  
  160.         this.keyword = keyword;  
  161.     }  
  162.   
  163.     public void addResult(Result result){  
  164.         Object score = resultMap.get(result.clazz);  
  165.         if(score !=null ){  
  166.             float scorez =(Float)score;  
  167.             score = scorez + result.score;  
  168.             resultMap.put(result.clazz, score);  
  169.         }else{  
  170.             resultMap.put(result.clazz, result.score);  
  171.         }  
  172.     }  
  173.       
  174.     public Float getValue(String clazz){  
  175.           
  176.         Object score = resultMap.get(clazz);  
  177.         if(score!=null){  
  178.             float countScore = (float)0.000000001;  
  179.             Iterator it = resultMap.keySet().iterator();  
  180.             while (it.hasNext()) {  
  181.                 // Get key  
  182.                 Object key = it.next();  
  183.                 Float sc = (Float)resultMap.get(key);  
  184.                 countScore += sc;  
  185.             }  
  186.               
  187.             float scoreAve=(Float)score/countScore;  
  188.             return scoreAve;  
  189.         }  
  190.           
  191.         return (float)0;  
  192.     }  
  193.       
  194.     public Float getHot(String clazz){  
  195.           
  196.         Object score = resultMap.get(clazz);  
  197.         if(score!=null){  
  198.             return (Float)score;  
  199.         }  
  200.           
  201.         return (float)0;  
  202.     }  
  203.       
  204. }  
分享到:
评论
1 楼 txzyhm521 2008-01-21  
可以提供性能测试数据,或者该段代码已经成功运用在项目里

相关推荐

    数据挖掘在各行业的应用论文

    数据挖掘分类问题的贪婪粗糙集约简算法.caj 数据仓库与数据挖掘技术在电力系统中的应用.caj 基于数据挖掘技术的抽油机泵参调整DSS决策支持系统.caj 数据挖掘与电力系统1.caj 数据仓库和数据挖掘技术在ERP中的应用....

    数据挖掘中分类算法的研究及其应用

    一篇关于数据挖掘方面的论文,给大家分享。内容不多,简单的讲解了数据挖掘的原理和应用

    数据挖掘在医学图像分类中的应用.pdf

    数据挖掘在医学图像分类中的应用.pdf

    数据挖掘技术与工程实践

    本书作者根据自己20年数据挖掘方面的经验,总结了数据挖掘的理论知识和实践经验,提供了大量一线资料。本书首先介绍数据挖掘的概念和误区,然后介绍数据探索的方法,包括数据查探、数据描绘、数据变换、数据优化等,...

    数据挖掘中的数据分类算法综述_刘红岩.pdf

    分类算法是数据挖掘中的最重要的技术之一。通过 对当前提出的最新的具有代表性的分类算法进行分析和比 较,总结每类算法的各方面特性,从而便于研究者对已有的 算法进行改进,提出具有更好性能的新的分类算法,同时方 便...

    数据挖掘综述

    从人工智能、统计分析和数据库技术3个方面对数据挖掘技术进行了总结;从模式识别的角度讨论了数据挖掘技术的主要任务,包括分类、聚类、回归、关联、序列和偏差6种模式的识别.详细介绍了数据挖掘技术的常用方法,包括...

    数据挖掘(偶然看到比较好的)

    偶然看到比较好的数据挖掘方面的PPT 数据挖掘概述 数据预处理 数据挖掘算法-分类与预测 数据挖掘算法-聚类 数据挖掘算法-关联分析 序列模式挖掘 数据挖掘软件 数据挖掘应用

    数据挖掘 数据分类、整合、分析

    详细阐述了数据挖掘的各个方面的当前最新的技术,有些内容是深入讲解的,也有一些是带过讲了以下。

    数据挖掘原理与算法

    本书是一本全面介绍数据挖掘和知识发现技术的专业书籍,它系统地阐述了数据挖掘和知识发现技术的产生、发展、应用以及相关概念、原理和算法,对数据挖掘中的主要技术分支,包括关联规则、分类、聚类、序列、空间以及...

    机器学习数据挖掘常用算法总结梳理完整版

    机器学习数据挖掘常用算法总结梳理完整版:是对于机器学习以及数据挖掘领域中使用到的算法、方法和模型等方面一个全面的总结和学习概括,欢迎同行互相交流学习,欢迎指点。

    基于SPSS Modeler的数据挖掘_数据分析_网盘链接下载108.40M

    基于SPSS Modeler的数据挖掘_数据分析,主要结合了三个方面进行讲解,第一是软件操作层面,让使用者实际操作,尽快掌握软件的使用方法和处理步骤,第二是结果分析层面,让使用者通过案例演示,基本明白软件的输出...

    数据挖掘Apriori相关论文

    数据挖掘Apriori算法参考论文几十篇,知网、万方下载打包共享 有以下几方面内容: Apriori算法并行处理、Apriori算法增量更新、Apriori算法最小支持度和最小置信度阈值设置调优。 基于Spark的并行频繁模式挖掘算法 ...

    Java数据挖掘常见18种算法实现和10种常见排序算法以及其他相关经典DM算法集合.zip

    18大数据挖掘的经典算法以及代码实现,涉及到了决策分类,聚类,链接挖掘,关联挖掘,模式挖掘等等方面,后面都是相应算法的文章,希望能够帮助大家学。 目前追加了其他的一些经典的DM算法,在others的包中涉及聚类,...

    数据挖掘分析面试题.docx

    数据挖掘分析面试题 数据挖掘分析面试题全文共16页,当前为第1页。数据挖掘分析面试题全文共16页,当前为第1页。2011Alibaba数据分析师(实习)试题解析 数据挖掘分析面试题全文共16页,当前为第1页。 数据挖掘分析...

    数据挖掘原理与算法(PDF)

    对数据挖掘中的主要技术分支,包括关联规则、分类、聚类、序列、空间以及Web挖掘等进行了理论剖析和算法描述。本书的许多工作是作者们在攻读博士学位期间的工作总结,一方面,对于相关概念和技术的阐述尽量先从理论...

    快速数据挖掘数据分析实战RapidMiner工具应用第1章 数据挖掘基础V4.1.pdf

    这种从数据中“淘金”,从大量数据(包括文本)中挖掘出隐含的、未知的、对决策有潜在价值的关系、模式和趋势,并用这些知识和规则建立用于决策支持的模型,提供预测性决策支持的方法、工具和过程,就是数据挖掘;...

    分类数据挖掘算法在开发区经济决策方面的应用.pdf

    分类数据挖掘算法在开发区经济决策方面的应用.pdf

    数据挖掘与分析.doc

    三、数据挖掘分类 1.直接数据挖掘 目标是利用可用的数据建立一个模型,这个模型对剩余的数据,即一个特定的 变量进行描述。 2.间接数据挖掘 目标中没有选出某一具体的变量,而是在所有的变量中建立起某种关系。 四...

    数据挖掘中的关联规则

    针对初学者描述关联规则的定义、分类、度量等内容,简单介绍了关联规则的算法,当今国内外上的应用和在数据挖掘方面的研究状况。

    数据挖掘原理.rar

    长期以来,很多相互独立的不同学科分别致力于数据挖掘的各个方面。本书把信息科学、计算科学和统计学在数据挖掘方面的应用融合在一起,是第一本真正和跨学科教材。 本书由三部分构成。第一部分是基础,介绍了数据...

Global site tag (gtag.js) - Google Analytics