在Python中使用Weka

來源:互聯網
上載者:User

  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 nb31  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 num40  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 r146      print r247  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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.