CLI 中的 Weka 摘要统计信息
Weka summary statisticss in CLI
如何在 Weka CLI(命令行)中使用汇总统计(均值、方差等)?
我知道有 "AttributeStats" 命令,但我应该如何编写代码?
例如我有一个数据 "D:\data.arff",如何使用 CLI 编码找到每个变量的均值和方差?
经过长时间的搜索,我发现这段代码可用于 Java 以查找 WEKA 中变量的汇总统计信息。
package weka.api;
//import required classes
import weka.experiment.Stats;
import weka.core.AttributeStats;
import weka.core.Instance;
import weka.core.Instances;
import weka.core.converters.ConverterUtils.DataSource;
public class AttInst {
public static void main(String args[]) throws Exception{
//load dataset
DataSource source = new DataSource("D:/y.arff");
//get instances object
Instances data = source.getDataSet();
//set class index .. as the last attribute
if (data.classIndex() == -1) {
data.setClassIndex(data.numAttributes() - 1);
}
//get number of attributes (notice class is not counted)
int numAttr = data.numAttributes() - 1;
for (int i = 0; i < numAttr; i++) {
//check if current attr is of type nominal
if (data.attribute(i).isNominal()) {
System.out.println("The "+i+"th Attribute is Nominal");
//get number of values
int n = data.attribute(i).numValues();
System.out.println("The "+i+"th Attribute has: "+n+" values");
}
//get an AttributeStats object
AttributeStats as = data.attributeStats(i);
int dC = as.distinctCount;
System.out.println("The "+i+"th Attribute has: "+dC+" distinct values");
//get a Stats object from the AttributeStats
if (data.attribute(i).isNumeric()){
System.out.println("The "+i+"th Attribute is Numeric");
Stats s = as.numericStats;
System.out.println("The "+i+"th Attribute has min value: "+s.min+" and max value: "+s.max+" and mean value: "+s.mean+" and stdDev value: "+s.stdDev );
}
}
}
}
如何在 Weka CLI(命令行)中使用汇总统计(均值、方差等)?
我知道有 "AttributeStats" 命令,但我应该如何编写代码?
例如我有一个数据 "D:\data.arff",如何使用 CLI 编码找到每个变量的均值和方差?
经过长时间的搜索,我发现这段代码可用于 Java 以查找 WEKA 中变量的汇总统计信息。
package weka.api;
//import required classes
import weka.experiment.Stats;
import weka.core.AttributeStats;
import weka.core.Instance;
import weka.core.Instances;
import weka.core.converters.ConverterUtils.DataSource;
public class AttInst {
public static void main(String args[]) throws Exception{
//load dataset
DataSource source = new DataSource("D:/y.arff");
//get instances object
Instances data = source.getDataSet();
//set class index .. as the last attribute
if (data.classIndex() == -1) {
data.setClassIndex(data.numAttributes() - 1);
}
//get number of attributes (notice class is not counted)
int numAttr = data.numAttributes() - 1;
for (int i = 0; i < numAttr; i++) {
//check if current attr is of type nominal
if (data.attribute(i).isNominal()) {
System.out.println("The "+i+"th Attribute is Nominal");
//get number of values
int n = data.attribute(i).numValues();
System.out.println("The "+i+"th Attribute has: "+n+" values");
}
//get an AttributeStats object
AttributeStats as = data.attributeStats(i);
int dC = as.distinctCount;
System.out.println("The "+i+"th Attribute has: "+dC+" distinct values");
//get a Stats object from the AttributeStats
if (data.attribute(i).isNumeric()){
System.out.println("The "+i+"th Attribute is Numeric");
Stats s = as.numericStats;
System.out.println("The "+i+"th Attribute has min value: "+s.min+" and max value: "+s.max+" and mean value: "+s.mean+" and stdDev value: "+s.stdDev );
}
}
}
}