`
ttitfly
  • 浏览: 622207 次
  • 性别: 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  
可以提供性能测试数据,或者该段代码已经成功运用在项目里

相关推荐

    数据挖掘的方法分类研究.pdf

    由于数据挖掘应用的广泛性,对其进行合理的分类能够有效地指导数据挖掘的实践应用,但是如何分类一直是个挑战。本研究提出了一种基于功能和任务差异、考虑不同视角影响的分类方法,并注重应用数据挖掘技术得出的结果...

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

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

    关于数据挖掘技术方面综述

    《关于数据挖掘技术方面综述》一文详细介绍了数据挖掘的基础理论、分类、算法以及未来研究方向,为读者提供了全面而深入的理解。 ### 数据挖掘的定义与基本过程 数据挖掘(Data Mining,DM)是指从海量、不完整、...

    数据挖掘原理与算法

    数据挖掘与其他相关技术的关系主要涉及数据挖掘与数据库知识发现、OLAP(在线分析处理)、人工智能和机器学习、统计学、客户关系管理以及软硬件发展等多个方面。数据挖掘是数据库知识发现的一个重要组成部分,它们都...

    Java经典算法之数据挖掘

    本资源聚焦于Java实现的经典数据挖掘算法,涵盖了分类、关联分析、集成采矿、聚类、连接挖掘以及统计学习等多个方面。 首先,分类算法是数据挖掘中的核心部分,它根据已有的特征将数据分为不同的类别。常见的Java...

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

    在医学图像分类中,数据挖掘的应用成为了一项重要的研究领域。数据挖掘涉及从大量数据中提炼信息的复杂过程,它综合了统计学、机器学习、数据库技术、模式识别和人工智能等多个学科领域的知识。随着医学成像技术如X...

    数据挖掘方面简单介绍

    数据挖掘是一种从海量数据中提取有价值信息的技术,它旨在揭示隐藏的模式、趋势和关系,以便支持决策制定。本文档提供了对数据挖掘基础知识的简单介绍,适合初学者学习。 首先,我们要了解数据挖掘的一些基本概念。...

    数据挖掘红酒分类实验报告及代码.zip

    本资料包“数据挖掘红酒分类实验报告及代码.zip”涵盖了数据挖掘在红酒品质预测中的应用,主要关注机器学习中的两种重要算法:朴素贝叶斯和线性逻辑回归。以下是这两个算法及其在实验中的应用和重要性的详细说明。 ...

    高级数据挖掘课程-大数据挖掘之互联网金融风控模型 共27页.pptx

    5. 数据挖掘在互联网金融风控中的应用:数据挖掘技术可以应用于互联网金融风控中,包括信用评分、客户分类、风险评估、欺诈检测等方面。数据挖掘可以帮助互联网金融机构更好地评估客户信用、预测风险、防止欺诈等。 ...

    4种数据挖掘典型分类方法在股票预测中的性能分析.pdf

    本文将详细探讨数据挖掘在股票市场预测中的应用,并重点分析四种典型的数据挖掘分类方法:K-近邻算法、朴素贝叶斯、决策树和支持向量机。这些方法被运用于构建股票涨跌预测模型,并且通过实际的日交易数据进行测试。...

    数据挖掘概念与技术_分类

    数据挖掘是一种从海量数据中提取有价值知识的过程,其核心任务之一就是分类。分类是指通过构建模型,根据数据的特征将其归属到预定义的类别中。在这个过程中,数据挖掘概念与技术_分类章节主要讨论了分类与预测这两...

    数据挖掘试题(150道)

    KDD是一个holistic过程,涉及到数据挖掘的所有方面。 知识点6:探索性数据分析 探索性数据分析是一种数据挖掘技术,它可以对数据进行探索和分析,以了解数据的特点和趋势。 知识点7:建模描述 建模描述是一种...

    高校图书馆数据挖掘和知识分类方法探讨.pdf

    目前,数据挖掘在高校图书馆的应用主要集中在用户行为分析、馆藏资源推荐、文献评价、知识点关联分析等方面。 再次,知识分类是数据挖掘中的一个关键环节,其目的是按照一定的标准将信息资源进行有序化组织,使之...

    数据挖掘可行性研究报告

    这份报告全面地涵盖了数据挖掘的背景、现状、发展趋势、需求分析和技术分析等多个重要方面,为决策者提供了宝贵的指导。 1. 背景及必要性 数据挖掘背景概述:数据挖掘是一种从大量数据中发现有价值信息和知识的过程...

    数据挖掘与数据分析.pdf

    在应用工具方面,数据挖掘通常需要开发者具备编程能力,如SQL用于数据库操作,C++提供高效编程支持,Python因其易用性和丰富的库资源(如Pandas、Scikit-learn)在数据处理和机器学习中广泛应用,Matlab适合矩阵运算...

    基于数据挖掘的文本分类算法.pdf

    在互联网高速发展的今天,文本分类技术作为网络数据管理和文本数据挖掘的基础,对于从海量的非结构化文本数据中提取有价值信息变得至关重要。文本分类是指依据一定的规则对文本进行类别标记的过程,广泛应用于搜索...

    学堂云数据挖掘课程课后习题

    关于数据挖掘中数据量的问题,大数据分析与传统数据分析的一个核心区别在于数据量大。然而,数据量仅是大数据的特征之一,其他特征还包括数据类型多样性和数据产生的高速度。数据类型的转换和数据自身的错误处理也是...

    文本数据挖掘与Python应用.pptx

    文本数据挖掘的基本概念包括文本预处理技术、文本特征提取方法、文本分类与聚类算法等。文本预处理技术包括分词、去停用词、词干提取等。文本特征提取方法包括TF-IDF、Word2Vec等。文本分类与聚类算法包括朴素贝叶斯...

Global site tag (gtag.js) - Google Analytics