朴素贝叶斯分类器

package NaviveBayesClassify;


import NaviveBayesClassify.ChineseSpliter;

import NaviveBayesClassify.ClassConditionalProbability;

import NaviveBayesClassify.PriorProbability;

import NaviveBayesClassify.TrainingDataManager;

import NaviveBayesClassify.StopWordsHandler;

import java.util.ArrayList;

import java.util.Comparator;

import java.util.List;

import java.util.Vector;


/**

 * 朴素贝叶斯分类器

 */

public class BayesClassifier {

private TrainingDataManager tdm;// 训练集管理器

private String trainnigDataPath;// 训练集路径

private static double zoomFactor = 10.0f;


/**

* 默认的构造器,初始化训练集

*/

public BayesClassifier() {

tdm = new TrainingDataManager();

}


/**

* 计算给定的文本属性向量X在给定的分类Cj中的类条件概率 <code>ClassConditionalProbability</code>连乘值

* @param X

*            给定的文本属性向量

* @param Cj

*            给定的类别

* @return 分类条件概率连乘值,即<br>

*/

float calcProd(String[] X, String Cj) {

float ret = 1.0F;

// 类条件概率连乘

for (int i = 0; i < X.length; i++) {

String Xi = X[i];

// 因为结果过小,因此在连乘之前放大10倍,这对最终结果并无影响,因为我们只是比较概率大小而已

ret *= ClassConditionalProbability.calculatePxc(Xi, Cj) * zoomFactor;

}

// 再乘以先验概率

ret *= PriorProbability.calculatePc(Cj);

return ret;

}


/**

* 去掉停用词

* @param text

*            给定的文本

* @return 去停用词后结果

*/

public String[] DropStopWords(String[] oldWords) {

Vector<String> v1 = new Vector<String>();

for (int i = 0; i < oldWords.length; ++i) {

if (StopWordsHandler.IsStopWord(oldWords[i]) == false) {// 不是停用词

v1.add(oldWords[i]);

}

}

String[] newWords = new String[v1.size()];

v1.toArray(newWords);

return newWords;

}


/**

* 对给定的文本进行分类

* @param text

*            给定的文本

* @return 分类结果

*/

@SuppressWarnings("unchecked")

public String classify(String text) {

String[] terms = null;

try {

terms = ChineseSpliter.split(text, " ").split(" ");

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

} // 中文分词处理(分词后结果可能还包含有停用词)

terms = DropStopWords(terms);// 去掉停用词,以免影响分类


String[] Classes = tdm.getTraningClassifications();// 分类

float probility = 0.0F;

List<ClassifyResult> crs = new ArrayList<ClassifyResult>();// 分类结果

for (int i = 0; i < Classes.length; i++) {

String Ci = Classes[i];// 第i个分类

probility = calcProd(terms, Ci);// 计算给定的文本属性向量terms在给定的分类Ci中的分类条件概率


// 保存分类结果

ClassifyResult cr = new ClassifyResult();

cr.classification = Ci;// 分类

cr.probility = probility;// 关键字在分类的条件概率

System.out.println("In process.");

System.out.println(Ci + ":" + probility);

crs.add(cr);

}

// 对最后概率结果进行排序

java.util.Collections.sort(crs, new Comparator() {

public int compare(final Object o1, final Object o2) {

final ClassifyResult m1 = (ClassifyResult) o1;

final ClassifyResult m2 = (ClassifyResult) o2;

final double ret = m1.probility - m2.probility;

if (ret < 0) {

return 1;

} else {

return -1;

}

}

});

// 返回概率最大的分类

return crs.get(0).classification;

}


public static void main(String[] args) {

String text = "在新旧动能接续转换的关键时期,传统动能由强变弱,需要新动能异军突起和传统动能转型,形成新的“双引擎”,推动经济持续增长、跃上新台阶。 “十三五”规划建议提出,要加快突破新一代信息通信、新能源、新材料、航空航天等领域核心技术,支持节能环保、生物技术、信息技术等新兴产业发展。 当前我国发展正处于这样一个关键时期,必须培育壮大新兴产业,实现新旧动能平稳迭代更替。 智能制造、大数据、云计算、物联网……这些出现在“十三五”规划纲要草案中的新经济名词,昭示着以新兴产业为代表的“新兴中国”将取代以传统产业为代表的“传统中国”,成为“十三五”的投资新热点。 研究发现:广东拥有新经济行业最多上市公司,其中11个概念行业上市公司数量最多的省份均为广东省。一方面广东是全国上市公司数量第一省份,另一方面也说明广东在创新驱动、培育新经济方面起步更早、成效显著,广东的上市公司布局这些领域也是快人一步,处于引领地位。 被高层多次提及的“新经济”一词写入政府工作报告,在这背后,新经济承担着中国发展新引擎的战略考量。 在经济全球化背景下,由信息技术革命带动的、以高新技术产业为龙头的经济,包括移动互联网、先进制造业、新能源、生物医药等,构成了新经济的重要内容。 21世纪宏观研究院选取A股上市公司14个最热新经济概念行业(3D打印、机器人、物联网、新材料、新能源汽车、智能汽车、移动支付、云计算、智能穿戴、基因检测、健康中国、移动互联网、虚拟现实、量子通信)样本,通过对这些行业公司地域、净利润及增长率数据,和相关布局等进行比较分析。 研究发现:广东拥有新经济行业最多上市公司,其中11个概念行业上市公司数量最多的省份均为广东省。一方面广东是全国上市公司数量第一省份,另一方面也说明广东在创新驱动、培育新经济方面起步更早、成效显著,广东的上市公司布局这些领域也是快人一步,处于引领地位。 14个概念行业上市公司较集中于广东、北京、上海、浙江、江苏这5个地区,反映出新经济的区域集聚效应明显。概念行业龙头上市公司则多位于广东、北京、上海三地。 传统行业企业布局新经济领域动作频繁,有的行业跨度很大,如河北华夏幸福、四川蓝光发展等,主业为房地产,目前正大举布局量子通信、3D打印等,体现了传统产业资本对于新经济的热情高涨。 一些概念行业目前还未广泛应用,而一些已经市场化的行业呈现出超高增长率的特征。如新能源汽车和移动互联网,是14个概念行业中平均增长率最高的行业,分别达1141%和1214%。其余如智能穿戴、虚拟现实、量子通信、移动支付等,也呈现出较高的增长率。不过,受资本市场波动及母公司主营业务影响,该项增长率并不能完全代表概念行业市场情况。 广东“新经济”企业上市最多 在14个概念行业上市公司省域分布中,一个直观结论是:广东、北京、上海、浙江、江苏5地集中了大多数新经济领域上市公司,这是省域经济活力的一大力证。 除云计算、新能源汽车、新材料外,其余11个概念行业上市公司最多省份均为广东,并且从2015年三季报显示的净利润排名来看,广东的上市公司利润也很可观。在3D打印(大族激光)、机器人、云计算(中兴通讯、TCL集团)、智能汽车(长园集团、欧菲光)、基因检测(汤臣倍健、达安基因)、健康中国(健康元)、移动互联网(中兴通讯)等领域均拥有龙头企业。 其中,大族激光2015年前三季净利润超6亿元,是3D打印概念中净利润最高公司;中兴通讯同期净利润近29亿,是移动互联网概念中的净利润冠军;健康元以超7亿的净利润成健康中国概念龙头公司。 增速上来看,物联网和移动支付概念的广东上市公司国民技术,创造了1140%的超高增长率,其余如智慧松德、深圳惠程、蓝盾股份等,也录得了各自代表的概念行业最高增长。 传统优势产业布局“新经济” 除了东部地区外,一些中西部省份上市公司也开始在概念行业崭露头角,如辽宁省的机器人、新能源汽车和智能汽车,安徽的量子通信,湖北的新材料、智能穿戴、移动互联网,贵州的物联网,重庆的基因检测、智能汽车等。这些地区的新经济呈现出一个显著的特点:多基于当地原有的优势产业基础而布局打造。这说明,各地可根据自身优势产业布局新经济,发挥传统企业创造力,而非做“无中生有”的文章。 21世纪宏观研究院认为,从世界经验来看,战略性新兴产业的培育和发展高度依赖于制造业的发展。加快培育和发展新经济,需要兼顾传统产业转型升级,实现二者耦合发展。 具体而言,东部地区可依托原有高技术产业和科研要素集聚发展新经济;中部地区可依托传统制造业基础发展新经济;西部地区可依托资源优势发展新经济;东北地区工业基础好,可依托国有制造企业发展新经济。 京沪粤三大创新中心鼎立 当前,我国经济正上演传统产业产能过剩和新兴产业爆发式增长的“冰与火之歌”。数据显示,2015年我国规模以上工业增加值增长6.1%,比上年回落了2.2个百分点,是1998年以来的新低。 然而,2013-2015年,高技术产业增加值年均增长11.4%,在创新驱动发展战略下,高技术产业带动作用明显增强。国内外研究机构普遍认为,未来几年,新经济将显著改变中国经济的总体增长构成。如果从更长的时间周期来看,这种发展趋势有望更为明显。 从世界范围来看,通过互联网、信息科技的发展为经济带来新的增长动力,也曾是美国走出上世纪70-80年代经济停滞局面的一个手段。当前,中国也处在类似发展阶段,并且具备发展新经济的更广阔市场基础和产业基础。 全国两会正在审议的“十三五”规划草案中,除提出支持北京、上海建设具有全球影响力的科技创新中心外,还专门提出,支持珠三角地区建设开放创新型升级新高地,加快深圳科技、产业创新中心建设,深化泛珠三角区域合作,促进珠江-西江经济带加快发展。 这表明,在未来五年,以创新驱动为核心战略的珠三角地区,将在原有基础上,实现更大的升级。 本文来源:21世纪经济报道 作者:何苗 裴蕾 责任编辑:钟齐鸣_NF5619";

BayesClassifier classifier = new BayesClassifier();// 构造Bayes分类器

String result = classifier.classify(text);// 进行分类

System.out.println("此项属于[" + result + "]");

}

}


转载于:https://my.oschina.net/u/2510243/blog/637169

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值