📄 instancetest.java
字号:
package aaa;
import java.io.FileReader;
import weka.core.Instances;
import java.math.*;
public class InstanceTest{
//文件函数
public static Instances getFileInstances( String fileName ) throws Exception{
FileReader frData = new FileReader( fileName );
Instances data = new Instances( frData );
return data;
}
//期望函数
public double Mean(int[] shuzu,int shuzunum){
int k;
double sum=0,mean=0;
for(k=0;k<shuzunum;k++)
sum+=shuzu[k];
for(k=0;k<shuzunum;k++)
mean+=Math.pow(shuzu[k],2)/(sum*1.0);
return mean;
}
//方差函数
public double Square(int[] shuzu,double mean,int shuzunum){
int k;
double square=0,sum=0;
for(k=0;k<shuzunum;k++)
sum+=shuzu[k];
for(k=0;k<shuzunum;k++)
square+=Math.pow(shuzu[k]-mean, 2)*shuzu[k]/(sum*1.0);
return square;
}
public InstanceTest()throws Exception{
int i=0,k;
String str;
weka.core.Attribute att;
//读取文件
Instances ins=getFileInstances("D://Program Files//学习类//weka//Weka-3-5//data//iris.arff");
//选择出类
for(i=0;i<ins.numAttributes();i++){
att=ins.attribute(i);
str=att.name();
if(str.compareTo("class")==0){
ins.setClass(att);
ins.setClassIndex(i);
System.out.println(str+'\n');
}
}
//统计实例中的每个类别的元素的个数
if(ins.numClasses()==0)
System.out.println("没有类被选中");
else{
att=ins.classAttribute();
int[] num=new int[att.numValues()];
for(i=0;i<ins.numInstances();i++){
for(k=0;k<att.numValues();k++)
if(ins.instance(i).stringValue(att)==att.value(k)){
num[k]++;
}
}
//显示类别的名称和对应的元素的个数
for(k=0;k<att.numValues();k++){
System.out.println(""+att.value(k)+'\n');
System.out.println(""+num[k]+'\n');
}
//区分少数类
double sum=0,mean=0, square=0,deviation=0;
//求和
for(k=0;k<att.numValues();k++)
sum+=num[k];
//期望值
mean=Mean(num,att.numValues());
//方差
square=Square(num,Mean(num,att.numValues()),att.numValues());
//协方差
deviation=Math.pow(square, 0.5);
//区分少数类:标准是低于期望的且与期望的差值大于方差的称为少数类,其余的都是多数类
for(k=0;k<att.numValues();k++){
if(num[k]<mean&&Math.abs(num[k]-mean)>deviation)
for(i=0;i<ins.numInstances();i++){
if(ins.instance(i).stringValue(att)==att.value(k))
ins.instance(i).setWeight(sum/(num[k]*1.0));
}
}
}
}
public static void main(String[] args) throws Exception{
InstanceTest inss=new InstanceTest();
/*Instances instances = getFileInstances( "D://Program Files//学习类//weka//Weka-3-5//data//iris.arff");
//把数据集全部输入出
//System.out.println( instances );
//用numInstances可以获得数据集中有多少样本
instances.setClassIndex(4);
weka.core.Attribute att=instances.attribute("class");
if(att.isNominal())
System.out.println(att.numValues()+"");
else
System.out.println("00000");*/
/*for( int i = 0; i < instances.numInstances(); i++ )
{
//instance( i )是得到第i个样本
System.out.println( instances.attribute(4).type()+"" );
System.out.println( instances.numClasses()+"" );
// System.out.println( Attribute.value());
}*/
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -