svmtest
svmtest
Classifier m_classifier = new LibSVM();
使用父類 分類器 實例化svm類
ArffLoader atf = new ArffLoader();
arff文件裝載器
裝載arff分兩種,第一種訓練模型用的訓練文件,第二種測試模型用的測試文件,這里訓練文件為test,測試文件為test2
atf.setFile(inputFile);
arff文件裝載器,第一步設置文件路徑,然后使用getDataSet()方法獲取文件中的數據集合,數據集合放在weka自定義的數據結構Instances中
Instances instancesTrain = atf.getDataSet();
數據集.numAttributes()獲取數據集的列數
數據集.numInstances()獲取數據集的行數
instancesTrain.setClassIndex(instancesTrain.numAttributes()-1);
獲取數據集后,需要設置數據集中的指針,將其指向數據集中列的最后一位。因為調用算法處理時,算法只會處理指針范圍內的列,也就是說,如果一張表有50列,指針指向8,那么算法只會處理1-8,具體到數據中的下標,就是0-7,這也是需要獲取列數后-1的原因。
m_classifier.buildClassifier(instancesTrain); //訓練
調用算法,輸入數據集,通過數據訓練形成模型
m_classifier.classifyInstance(instancesTest.instance(i))
分類器給定的實例測試方法,輸入單條數據,返回0 1
固定代碼塊
輸出arff文件
//設置輸出文檔路徑
File file2=new File("E://java//test.arff");
//實例化操作類
ArffSaver saver=new ArffSaver();
//獲取數據源
saver.setInstances(dataInsatnces);
//建立輸出文件
saver.setFile(file2);
//打印數據源數據到目標文件
saver.writeBatch();
zk.classifiers.Classifier cModel = new zk.classifiers.bayes.NaiveBayes();
cModel.buildClassifier(dataInsatnces);
//4.測試分類器
??
Evaluation eTest = new Evaluation(dataInsatnces);
eTest.evaluateModel(cModel, dataInsatnces);
??
//打印測試結果
System.out.println(eTest.toSummaryString());
?
logistic.java
建立模型函數
buildClassifier(Instances train)
獲取測試類的實例化對象,在調用測試方法來測試傳入的數據集
getCapabilities().testWithFail(train);
將數據集中,所有有缺失數據的記錄刪除,自帶的清洗功能
train = new Instances(train);
train.deleteWithMissingClass();
獲取過濾規則
m_ReplaceMissingValues = new ReplaceMissingValues();
設定過濾規則對象
m_ReplaceMissingValues.setInputFormat(train);
靜態過濾器裝載過濾對象及過濾規則
train = Filter.useFilter(train, m_ReplaceMissingValues);
?
?
?
?
?
?
?
?
?
?
轉載于:https://www.cnblogs.com/Anroam/p/3302909.html
總結
- 上一篇: xml入门简介--两天学会xml
- 下一篇: Sublime Text 2 中怎样查找