zoukankan      html  css  js  c++  java
  • 在Python中使用Weka

      Weka是用Java编写的数据挖掘工具,如果要在Python中调用Weka,需要用到Jython。Jython是100%用Java实现的Python,可以无缝的嵌入到Java平台当中。

      前期准备:

      1. 安装JDK,Jython

      2. 将Jython的执行路径加入到$PATH,将Weka.jar的路径加入到$CLASSPATH中

      下面我们用Jython调用Weka的朴素贝叶斯分类器来对数据进行分类:

     1 #!/usr/bin/python
     2  #coding=UTF-8
     3  import sys
     4  import java.io.FileReader as FileReader
     5  import java.io.File as File
     6  import weka.core.Instances as Instances
     7  import weka.core.converters.CSVLoader as CSVLoader
     8  import weka.classifiers.bayes.NaiveBayes as NaiveBayes
     9  #训练数据格式为CSV文件
    10  loader=CSVLoader()
    11  loader.setSource(File('train.csv'))
    12  data=loader.getDataSet()
    13  
    14  '''
    15  训练数据格式为arff文件
    16  reader = FileReader("/train.arff")
    17  data = Instances(reader)
    18  '''
    19  
    20  #设置分类属性
    21  data.setClassIndex(data.numAttributes()-1)
    22  
    23  #训练朴素贝叶斯模型
    24  nb=NaiveBayes()
    25  #设置选项,测出我们不使用任何选项
    26  options=splitOptions('')
    27  nb.setOptions(options)
    28  nb.buildClassifier(data)
    29  #输出训练好的朴素贝叶斯分类模型
    30  print nb
    31  
    32  #导入测试数据,此处是CSV格式,也可以用arff格式
    33  loader=CSVLoader()
    34  loader.setSource(File('test.csv'))
    35  test_data=loader.getDataSet()
    36  test_data.setClassIndex(test_data.numAttributes()-1)
    37  
    38  num=test_data.numInstances()
    39  print num
    40  for i in range(num):
    41      #输出测试样例在所有类别上的概率分布
    42      r1=nb.distributionForInstance(test_data.instance(i))
    43      #输出测试样例的分类结果,是所有类别中概率最高的那个类别
    44      r2=nb.classifyInstance(test_data.instance(i))
    45      print r1
    46      print r2
    47  
    48  #5重交叉验证评估朴素贝叶斯分类器的效果
    49  evaluator=Evaluation(data)
    50  print evaluator.evaluateModel(NaiveBayes(),['-t','train.csv','-x','5','-i'])

      上述脚本命名为weka_naive_bayes.py

      执行该脚本的命令为jython weka_naive_bayes.py

      参考文献:

      [1]  Using Weka from Jython

      [2]  Weka Sourceforge

      [3]  用Python的方式调用Weka

  • 相关阅读:
    Timer 实现2秒4秒连环炸
    Java中的注解
    PHP连接打印机
    php同步mysql两个数据库中表的数据
    thinkphp 两表、三表联合查询
    ereg/eregi报错处理办法
    ThinkPHP3.2判断手机端访问并设置默认访问模块的方法
    使用PHP获取时间今天 明天 昨天 时间戳的详解
    jquery获取radio和select选中值
    php开启mysqli扩展之后如何连接数据库
  • 原文地址:https://www.cnblogs.com/kemaswill/p/2790509.html
Copyright © 2011-2022 走看看