package weka.measures;
import java.util.HashMap;
//import weka.core.Capabilities;
//import weka.core.Capabilities.Capability;
import weka.core.Utils;
import weka.measures.io.TextInput;
import weka.measures.io.TextOutput;
import weka.measures.lib.DataSet;
//import weka.core.*;
//import weka.measures.lib.Statistics;
import MyGUI.*;
/**
* Class full of utility functions The approach there is final class with
* private constructor and static methods.
*
* @author JieLi
*
*/
public final class F1 {
/**
*
*/
private static final long serialVersionUID = 1L;
public F1() {
}
// 计算F1
public static float calcF1(DataSet ds) {
int colNum = ds.getColNum();
int rowNum = ds.getRowNum();
double[] values = new double[colNum - 1];
double[] label = ds.getLable();
double[] posArr = new double[rowNum];
double[] negArr = new double[rowNum];
int j, k;
for (int h = 0; h < colNum - 1; h++) {
j = k = 0;
for (int i = 0; i < rowNum; i++) {
if (label[i] > 0) {
posArr[j] = ds.getFeture(h)[i];
j++;
} else {
negArr[k] = ds.getFeture(h)[i];
k++;
}
}
values[h] = calcF(getTopEle(posArr, j), getTopEle(negArr, k));
}
return (float) Utils.maxIndex(values);
}
/*
public Capabilities getCapabilities() {
Capabilities result = super.getCapabilities();
result.disableAll();
result.enable(Capability.NO_CLASS);
// attributes
result.enable(Capability.NOMINAL_ATTRIBUTES);
result.enable(Capability.NUMERIC_ATTRIBUTES);
result.enable(Capability.DATE_ATTRIBUTES);
result.enable(Capability.MISSING_VALUES);
return result;
}
*/
// 计算f
private static double calcF(double[] posArr, double[] negArr) {
double u1 = Utils.mean(posArr);
double u2 = Utils.mean(negArr);
double f = (u1 - u2) * (u1 - u2)
/ (Utils.variance(posArr) + Utils.variance(negArr));
return f;
}
// 返回数组的前n
private static double[] getTopEle(double[] arr, int n) {
double[] tmpArr = new double[n];
for (int i = 0; i < n; i++) {
tmpArr[i] = arr[i];
}
return tmpArr;
}
// 主函数
// public static void main(String [] args){
public void cal() {
JFile jf = new JFile("a");
DataSet ds = TextInput.readCSV(jf.getPath());// 输入数据
System.out.println(F1.calcF1(ds));
HashMap<String, Float> rs = new HashMap<String, Float>();
rs.put("F1", F1.calcF1(ds));
TextOutput.writeCSV("D:/data/out.txt", rs);
// String u1 = null;
// System.out.println("u1:" + u1);
}
}
Fishers-Java-Code.zip_Fisher java_fisher
版权申诉
10 浏览量
2022-09-21
19:01:02
上传
评论
收藏 3KB ZIP 举报
Kinonoyomeo
- 粉丝: 75
- 资源: 1万+
最新资源
- 基于vue3.x 、Typescript、vite、Element plus等,适配手机、平板、pc 的后台开源免费模板库
- 黑幕聚焦转场0.0.1
- 旅行活动的微信小程序页面
- 第三节课,后端代码优化 & 结束
- 基于matlab实现的10自由度齿轮传动系统动力学模型,通过调用ode45进行求解,考虑了轴承刚度和阻尼.rar
- 基于matlab实现齿轮系统非线性动力学模型和动力学求解 齿轮非线性动力学研究.rar
- 基于matlab实现的 流体力学有限元NS方程,有限元离散,得到速度场、压力场,流体力学.rar
- 基于matlab实现的GROWTH2.0是一个地球物理反演工具
- 基于matlab实现的matlab法求解椭圆轴承支承的刚性jeffcott转子的振动方程
- 基于matlab实现的sfs算法对目标的多角度图像进行三维重构.rar
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈