• 在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

  • 相关阅读:
    6. Flask请求和响应
    5. Flask模板
    FW:Software Testing
    What is the difference between modified duration, effective duration and duration?
    How to push master to QA branch in GIT
    FTPS Firewall
    Query performance optimization of Vertica
    (Forward)5 Public Speaking Tips That'll Prepare You for Any Interview
    (转)The remote certificate is invalid according to the validation procedure
    Change
  • 原文地址:https://www.cnblogs.com/kemaswill/p/2790509.html
Copyright © 2020-2023  润新知