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

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

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

    Change Dir

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

    統(tǒng)計

    留言簿(18)

    積分與排名

    “牛”們的博客

    各個公司技術

    我的鏈接

    淘寶技術

    閱讀排行榜

    評論排行榜

    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數(shù)據(jù)集也是數(shù)據(jù)挖掘領域的標準數(shù)據(jù)集,這個程序的運行結果如下:
    original class is Iris-setosa
    classify it to class Iris-setosa
    感興趣的朋友可以和我一起研究~~~郵件聯(lián)系哦。

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

    評論

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

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

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

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

    主站蜘蛛池模板: 人妻无码中文字幕免费视频蜜桃 | 亚洲人成影院在线| 日韩免费精品视频| 看Aⅴ免费毛片手机播放| 亚洲精品无码专区久久久| 亚洲美女免费视频| 午夜亚洲乱码伦小说区69堂| 亚洲av无码一区二区三区不卡| 成年在线观看网站免费| 免费人成大片在线观看播放电影| 亚洲AV无码一区二区三区DV| 在线观看视频免费国语| 成人无码WWW免费视频| 亚洲日韩中文字幕无码一区| 亚洲精品无码久久久久| 在线视频免费国产成人| 午夜精品一区二区三区免费视频| 亚洲欧洲精品成人久久曰| 亚洲av日韩av不卡在线观看| 性做久久久久免费观看| 日韩精品内射视频免费观看| 视频一区在线免费观看| 亚洲欧洲国产综合| 自拍偷自拍亚洲精品情侣| 最近2019中文免费字幕| 永久免费av无码入口国语片| 男男gay做爽爽免费视频| 亚洲一卡2卡4卡5卡6卡在线99| 国产亚洲精品a在线观看 | 久久亚洲精精品中文字幕| 免费欧洲毛片A级视频无风险| 91精品免费不卡在线观看| 一级一级一级毛片免费毛片| 亚洲人成网站色7799| 亚洲美女中文字幕| 亚洲AV无码专区国产乱码不卡| 亚洲欧洲日产国码无码网站| 波多野结衣免费视频观看| 永久免费无码网站在线观看| 国产成人午夜精品免费视频| 99久久免费中文字幕精品|