通过weka.jar包来进行数据预处理
前言:注意首先要将weka.jar包加载到相应的路径中去。程序中的数据也是用的weka自带的数据。
扩展:eclipse添加jar包的操作方法:
打开eclipse ,在对应的工程下右击,选择Build Path ->选择Configure Build Path ->选择Libraries ->点击Add External JARs ->然后到你的jar包所在路径选择它。即可。
一、特征选择
package learning; import weka.attributeSelection.ASEvaluation;
import weka.attributeSelection.InfoGainAttributeEval;
import weka.attributeSelection.Ranker;
import weka.core.Instances;
import weka.core.converters.ConverterUtils.DataSink;
import weka.core.converters.ConverterUtils.DataSource;
import weka.filters.Filter;
import weka.filters.supervised.attribute.AttributeSelection; /**feature selection via weka
*
* @author wenbaoli
*
*/
public class featureSelect { /**
*
* @param arg
*/
public static void main(String[] arg){ try { System.out.println("++++++++++++Example3:Feature Selection Via Weka.+++++++++"); System.out.println("Step1:load data...");
String fn = "E:/weka/data/iris.arff";
DataSource source = new DataSource(fn);
Instances instances = source.getDataSet(); System.out.println("Step2:feature selction...");
featureSelect fs = new featureSelect(); int k = 2;
AttributeSelection as = new AttributeSelection(); Ranker rank = new Ranker();
rank.setThreshold(0.0);
rank.setNumToSelect(k); ASEvaluation ae = new InfoGainAttributeEval(); as.setEvaluator(ae);
as.setSearch(rank);
as.setInputFormat(instances);
Instances reductData = Filter.useFilter(instances, as); System.out.println("Step3:保存规约后的数据到新文件...");
DataSink.write("E:/weka/data/iris_reducted.arff", reductData);
System.out.println("Finished..."); } catch (Exception e) {
e.printStackTrace();
}
} }
二、缺失值处理
package learning; import weka.core.Instances;
import weka.core.converters.ConverterUtils.DataSink;
import weka.core.converters.ConverterUtils.DataSource; /**Missing value Handling via weka
*
* @author wenbaoli
*
*/
public class missingHandle { /**
*
* @param arg
*/
public static void main(String[] arg) { try {
System.out.println("+++++++++++++Example 2 :Missing Value Handling.++++++++++++++"); System.out.println("Step1:load data..."); String fn = "E:weka/data/labor.arff"; DataSource source = new DataSource(fn); Instances instances = source.getDataSet();
int dim = instances.numAttributes();
int num = instances.numInstances(); System.out.println("Step2:缺失值处理...");
double[] meanV = new double[dim];
for (int i = 0; i < meanV.length; i++) {
meanV[i] = 0;
int count = 0;
for (int j = 0; j < num; j++) {
if(!instances.instance(j).isMissing(i)){
meanV[i] += instances.instance(j).value(i);
count++;
}
}
meanV[i] = meanV[i]/count;
System.out.println(meanV[i]);
} for (int i = 0; i < meanV.length; i++) {
meanV[i] = 0;
int count = 0;
for (int j = 0; j < num; j++) {
if(instances.instance(j).isMissing(i)){
instances.instance(j).setValue(i, meanV[i]);
}
} } System.out.println("Step3:保存数据到新文件..."); DataSink.write("E:weka/data/labor_missingValueHandled.arff", instances);
System.out.println("Finished.");
} catch (Exception e) {
e.printStackTrace();
} }
}
三、归一化处理
package learning; import weka.core.Attribute;
import weka.core.Instance;
import weka.core.Instances;
import weka.core.converters.ConverterUtils.DataSink;
import weka.core.converters.ConverterUtils.DataSource;
import weka.filters.Filter;
import weka.filters.unsupervised.attribute.Normalize; /**normalize data via weka
*
* @author wenbaoli
*
*/
public class normalizeTest { /**
*
* @param arg
*/
public static void main(String[] arg) { String file = "cpu.arff";
String file_norm = "norm_" + file;
//对数据进行归一化
try {
System.out.println("+++++++++++++Example 1 : Normalize Data via weka.+++++++++"); System.out.println("Step1:读取数据...");
DataSource source = new DataSource("E:/Weka/data/" + file);
Instances instances = source.getDataSet(); System.out.println("Step2:原数据打印...");
System.out.println("---------------------------------");
int attributeNo = instances.numAttributes();
for (int i = 0; i < attributeNo; i++) {
Attribute attr = instances.attribute(i);
System.out.print(attr.name() + "\t"); }
System.out.println(); int instanceNo = instances.numInstances();
for (int i = 0; i < instanceNo; i++) {
Instance ins = instances.instance(i);
System.out.print(ins.toString() + "\t");
System.out.println();
} System.out.println("Step3:归一化...");
Normalize norm = new Normalize();
norm.setInputFormat(instances); //归一化关键步骤:
Instances newInstances = Filter.useFilter(instances, norm); System.out.println("Step4:归一化之后的数据(打印)...");
System.out.println("---------------------------------"); //打印属性名
int numOfAttributes = newInstances.numAttributes();
for (int i = 0; i < numOfAttributes; i++) {
Attribute attribute = newInstances.attribute(i);
System.out.print(attribute.name() + "\t"); }
System.out.println(); //打印实例
int numOfInstance = newInstances.numInstances();
for (int i = 0; i < numOfInstance ; i++) {
Instance instance = newInstances.instance(i);
System.out.print(instance.toString() + "\t");
System.out.println();
}
//发现一个问题:这把标签label也给归一化了。。。。。。。。。。这样可以吗??????? System.out.println("Step5:保存归一化的新数据到新文件...");
System.out.println("-----------------------");
DataSink.write("E:/Weka/data/" +file_norm, newInstances);
System.out.println("Congratulations.");
} catch (Exception e) {
e.printStackTrace();
} }
}
通过weka.jar包来进行数据预处理的更多相关文章
- BeanShell使用json.jar包处理Json数据
环境准备 ①Jmeter版本 ,JDK ②前置条件:将json.jar包置于..\lib\下, 如果还是报错,可以将该jar包添加到测试计划的Library中:否则会报:Typed variable ...
- weka数据预处理
Weka数据预处理(一) 对于数据挖掘而言,我们往往仅关注实质性的挖掘算法,如分类.聚类.关联规则等,而忽视待挖掘数据的质量,但是高质量的数据才能产生高质量的挖掘结果,否则只有"Garbag ...
- jdbc数据连接池dbcp要导入的jar包
jdbc数据连接池dbcp要导入的jar包 只用导入commons-dbcp-x.y.z.jarcommons-pool-a.b.jar
- Excel文件按照指定模板导入数据(用jxl.jar包)
本文中的方法只适合Excel2003,要读取Excel2007最好使用poi.jar,据说poi.jar还在更新,jxl.jar已经不更新了,处理Excel文件的读写问题最好还是学习poi.j ...
- 总结:独立开发 jar 包组件——功能主要是支持查询数据库的所有表数据
前言:开发完一个项目,必定总结,这次就将总结记录在博客,第一次开发组件 jar 包,包含前端,后台,中间遇到好多问题,这里一一描述.转载请注明出处: https://www.cnblogs.com/y ...
- json-lib-2.4-jdk15.jar所需全部JAR包.rar java jsoup解析开彩网api接口json数据实例
json-lib-2.4-jdk15.jar所需全部JAR包.rar java jsoup解析开彩网api接口json数据实例 json-lib-2.4-jdk15.jar所需全部JAR包.rar ...
- 使用C#利用cmd来调用java jar包获取其中的数据
其实也很简单,就是在C#中构建一个Process,启动jar包,并且给jar包传递参数 因为我并没有怎么学过JAVA,所以只写了个很小的Demo,就是根据传入的参数获取对应的数据 以下是JAVA De ...
- Java 使用poi导入excel,结合xml文件进行数据验证的例子(增加了jar包)
ava 使用poi导入excel,结合xml文件进行数据验证的例子(增加了jar包) 假设现在要做一个通用的导入方法: 要求: 1.xml的只定义数据库表中的column字段,字段类型,是否非空等条件 ...
- WEKA中的数据预处理
数据预处理包括数据的缺失值处理.标准化.规范化和离散化处理. 数据的缺失值处理:weka.filters.unsupervised.attribute.ReplaceMissingValues. 对于 ...
随机推荐
- == Got TLE on OJ? Here is the solution! ==
As a solo warrior in OJ, I spent about nearly 50% of my time on tackling TLE - that is innumerous ho ...
- 重绘Winform窗体
本文转载自:http://www.cnblogs.com/encoding/p/5603080.html 按照惯例,先来几张样例图(注:为了展示窗口阴影效果,截图范围向外扩展了些,各位凭想象吧). 还 ...
- c++封装编写线程池
在csapp学习或者其他linux底层编程的过程中,一般都会举一些多线程或多进程的例子,配合底层同步原语.系统调用api来解释怎么创建多线程/多进程. 但是这些例子和实际项目中所用到的多线程/多进程编 ...
- C++模板元编程 - 1 基本数据类型和运算
这是博客开通前几天做的,C++的模板没办法存方便的浮点数,算了. 基本类型的设计参考了vczh轮子叔模仿boost的MPL的设计. 话说template和typename写多了真是无限烦人啊,不得已定 ...
- 转-android图片降低图片大小保持图片清晰的方法
http://i.cnblogs.com/EditPosts.aspx?opt=1 android里面对于图片的处理一直是个比较烦人的问题,烦人之处在于一个不小心,就有可能造成OOM. 最近碰到一个关 ...
- mapreduce执行流程
角色描述:JobClient:执行任务的客户端JobTracker:任务调度器TaskTracker:任务跟踪器Task:具体的任务(Map OR Reduce) 从生命周期的角度来看,mapredu ...
- ylbtech-dbs:ylbtech-7,welfareSystem(福利发放系统)
ylbtech-dbs:ylbtech-7,welfareSystem(福利发放系统) -- =============================================-- Datab ...
- 在win7电脑中如何查看运行进程的PID标识符
在介绍技巧方法之前,咱们还是先来介绍一下什么是PID标识符,这个PID标识符就是系统对运行中的程序自动分配的一个编号,是用来识别对应进程的,而且这个编号也是一一对应,不会有重复的,只有当系统结束运行的 ...
- Python深入01 特殊方法与多范式
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明. Python一切皆对象,但同时,Python还是一个多范式语言(multi-paradi ...
- Android NFC开发概述
NFC手机相比普通手机来说,有以下3个附加功能: 1.可以当成POS机来用,也就是“读取”模式 2.可以当成一张卡来刷,也就是NFC技术最核心的移动支付功能 3.可以像蓝牙.Wi-Fi一样做点 ...