<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Change Dir

    先知cd——熱愛生活是一切藝術的開始

    統計

    留言簿(18)

    積分與排名

    “?!眰兊牟┛?/h3>

    各個公司技術

    我的鏈接

    淘寶技術

    閱讀排行榜

    評論排行榜

    weka的java使用(2)——分類

    書接上文,既然寫了聚類,再把我用到的分類的相關代碼奉上。
      1/**
      2 * 
      3 */

      4package edu.tju.ikse.mi.util;
      5
      6import java.io.File;
      7import java.io.IOException;
      8
      9import weka.classifiers.Classifier;
     10import weka.core.Attribute;
     11import weka.core.Instances;
     12import weka.core.converters.ArffLoader;
     13
     14/**
     15 * @author Jia Yu
     16 * @date 2010-6-9
     17 */

     18public class WekaClassifier {
     19
     20    /**
     21     * @param args
     22     */

     23    private ArffLoader loader;
     24    private Instances dataSet;
     25    private File arffFile;
     26    private int sizeOfDataset;
     27    private Classifier classifier;
     28    private int sizeOfAttribute;
     29    private String resultClass;
     30    private double[] distributions;
     31
     32    public WekaClassifier(File file) throws Exception {
     33        this.arffFile = file;
     34        loadTrainSet();
     35        loadClassifier();
     36        buildClassifierModel();
     37    }

     38
     39    private void buildClassifierModel() throws Exception {
     40        this.classifier.buildClassifier(dataSet);
     41    }

     42
     43    private void loadClassifier() {
     44        this.classifier = new weka.classifiers.meta.RandomSubSpace();
     45    }

     46
     47    private void loadTrainSet() throws IOException {
     48        loader = new ArffLoader();
     49        loader.setFile(this.arffFile);
     50        dataSet = loader.getDataSet();
     51        setSizeOfDataset(dataSet.numInstances());
     52        setSizeOfAttribute(dataSet.numAttributes());
     53        dataSet.setClassIndex(this.sizeOfAttribute - 1);
     54    }

     55
     56    public void classifyInstance(weka.core.Instance instance) throws Exception {
     57        double tNum = this.classifier.classifyInstance(instance);
     58        setDistributions(this.classifier.distributionForInstance(instance));
     59        Attribute attr = dataSet.attribute(dataSet.classIndex());
     60        int classIndex = (int) tNum;
     61        setResultClass(attr.value(classIndex));
     62    }

     63    
     64    public static void main(String[] args) {
     65        File file = new File(
     66                "iris.arff");
     67        try {
     68            WekaClassifier wc = new WekaClassifier(file);
     69            double[] feature = 5.1,3.5,1.4,0.2 };
     70            weka.core.Instance ins = new weka.core.Instance(wc
     71                    .getSizeOfAttribute());
     72            ins.setDataset(wc.getDataSet());
     73            for (int i = 0; i < ins.numAttributes() - 1; i++{
     74                ins.setValue(i, feature[i]);
     75                // System.out.println(ins.attribute(i).getLowerNumericBound());
     76            }

     77            ins.setValue(ins.numAttributes() - 1"Iris-setosa");
     78            System.out.println("original class is "
     79                    + ins.stringValue(ins.numAttributes() - 1));
     80            wc.classifyInstance(ins);
     81            System.out.println("classify it to class "
     82                    + wc.getResultClass());
     83        }
     catch (Exception e) {
     84            e.printStackTrace();
     85        }

     86    }

     87
     88    public int getSizeOfAttribute() {
     89        return sizeOfAttribute;
     90    }

     91
     92    public void setSizeOfAttribute(int sizeOfAttribute) {
     93        this.sizeOfAttribute = sizeOfAttribute;
     94    }

     95
     96    public Instances getDataSet() {
     97        return dataSet;
     98    }

     99
    100    public void setDataSet(Instances dataSet) {
    101        this.dataSet = dataSet;
    102    }

    103
    104    public String getResultClass() {
    105        return resultClass;
    106    }

    107
    108    public void setResultClass(String resultClass) {
    109        this.resultClass = resultClass;
    110    }

    111
    112    public void setDistributions(double[] distributions) {
    113        this.distributions = distributions;
    114    }

    115
    116    public double[] getDistributions() {
    117        return distributions;
    118    }

    119
    120    public void setSizeOfDataset(int sizeOfDataset) {
    121        this.sizeOfDataset = sizeOfDataset;
    122    }

    123
    124    public int getSizeOfDataset() {
    125        return sizeOfDataset;
    126    }

    127}

    128

    其中的iris數據集也是數據挖掘領域的標準數據集,這個程序的運行結果如下:
    original class is Iris-setosa
    classify it to class Iris-setosa
    感興趣的朋友可以和我一起研究~~~郵件聯系哦。

    posted on 2010-11-04 09:51 changedi 閱讀(4063) 評論(2)  編輯  收藏 所屬分類: 機器學習

    評論

    # re: weka的java使用(2)——分類 2011-03-31 20:21 Jesson

    你好,我在學習weka中。。。利用java調用j48算法對數據集構建分類模型,這個步驟問題 不大,重點是我應該如何利用模型對未分類的數據集進行分類?謝謝啊~~~~~  回復  更多評論   

    # re: weka的java使用(2)——分類 2011-03-31 20:35 changedi

    @Jesson
    在weka中默認的分類是十折交叉驗證即train和test都用你提供的arff文件。你可以選擇train和test分開,使用單獨的train文件和test文件,在weka的explorer界面的classifier選項卡里有設置的,很容易找到。  回復  更多評論   

    主站蜘蛛池模板: 大陆一级毛片免费视频观看| 成人一a毛片免费视频| 全部免费毛片在线| 大胆亚洲人体视频| 久久精品国产亚洲AV未满十八| 国产精品免费αv视频| www.亚洲一区| 成年免费大片黄在线观看com| 99re热精品视频国产免费| 无码专区—VA亚洲V天堂| 亚洲精品免费在线观看| 亚洲黄片毛片在线观看| v片免费在线观看| 亚洲精品乱码久久久久66| 国产亚洲一卡2卡3卡4卡新区| 免费看香港一级毛片| 精品亚洲国产成AV人片传媒| 免费国产在线精品一区| 国产精品亚洲产品一区二区三区| 亚洲欧洲春色校园另类小说| 免费可以看黄的视频s色| 国产成A人亚洲精V品无码| 国产99久久亚洲综合精品| 蜜臀AV免费一区二区三区| 国产AV无码专区亚洲AV男同| 久久精品无码专区免费青青| 亚洲色偷偷综合亚洲AVYP| 久久成人无码国产免费播放| 亚洲色大18成人网站WWW在线播放| 每天更新的免费av片在线观看 | 在线jyzzjyzz免费视频| 看全免费的一级毛片| 国产亚洲AV无码AV男人的天堂| 亚洲成人免费网站| 亚洲av日韩av永久无码电影| 青青在线久青草免费观看| 婷婷亚洲综合一区二区| 亚洲成AV人在线观看天堂无码| 毛片免费vip会员在线看| 亚洲五月丁香综合视频| 亚洲av日韩片在线观看|