前言:注意首先要将weka.jar包加载到相应的路径中去。程序中的数据也是用的weka自带的数据。

扩展:eclipse添加jar包的操作方法:

打开eclipse ,在对应的工程下右击,选择Build Path ->选择Configure Build Path  ->选择Libraries  ->点击Add External JARs  ->然后到你的jar包所在路径选择它。即可。

一、特征选择

  1. package learning;
  2.  
  3. import weka.attributeSelection.ASEvaluation;
  4. import weka.attributeSelection.InfoGainAttributeEval;
  5. import weka.attributeSelection.Ranker;
  6. import weka.core.Instances;
  7. import weka.core.converters.ConverterUtils.DataSink;
  8. import weka.core.converters.ConverterUtils.DataSource;
  9. import weka.filters.Filter;
  10. import weka.filters.supervised.attribute.AttributeSelection;
  11.  
  12. /**feature selection via weka
  13. *
  14. * @author wenbaoli
  15. *
  16. */
  17. public class featureSelect {
  18.  
  19. /**
  20. *
  21. * @param arg
  22. */
  23. public static void main(String[] arg){
  24.  
  25. try {
  26.  
  27. System.out.println("++++++++++++Example3:Feature Selection Via Weka.+++++++++");
  28.  
  29. System.out.println("Step1:load data...");
  30. String fn = "E:/weka/data/iris.arff";
  31. DataSource source = new DataSource(fn);
  32. Instances instances = source.getDataSet();
  33.  
  34. System.out.println("Step2:feature selction...");
  35. featureSelect fs = new featureSelect();
  36.  
  37. int k = 2;
  38. AttributeSelection as = new AttributeSelection();
  39.  
  40. Ranker rank = new Ranker();
  41. rank.setThreshold(0.0);
  42. rank.setNumToSelect(k);
  43.  
  44. ASEvaluation ae = new InfoGainAttributeEval();
  45.  
  46. as.setEvaluator(ae);
  47. as.setSearch(rank);
  48. as.setInputFormat(instances);
  49. Instances reductData = Filter.useFilter(instances, as);
  50.  
  51. System.out.println("Step3:保存规约后的数据到新文件...");
  52. DataSink.write("E:/weka/data/iris_reducted.arff", reductData);
  53. System.out.println("Finished...");
  54.  
  55. } catch (Exception e) {
  56. e.printStackTrace();
  57. }
  58. }
  59.  
  60. }

二、缺失值处理

  1. package learning;
  2.  
  3. import weka.core.Instances;
  4. import weka.core.converters.ConverterUtils.DataSink;
  5. import weka.core.converters.ConverterUtils.DataSource;
  6.  
  7. /**Missing value Handling via weka
  8. *
  9. * @author wenbaoli
  10. *
  11. */
  12. public class missingHandle {
  13.  
  14. /**
  15. *
  16. * @param arg
  17. */
  18. public static void main(String[] arg) {
  19.  
  20. try {
  21. System.out.println("+++++++++++++Example 2 :Missing Value Handling.++++++++++++++");
  22.  
  23. System.out.println("Step1:load data...");
  24.  
  25. String fn = "E:weka/data/labor.arff";
  26.  
  27. DataSource source = new DataSource(fn);
  28.  
  29. Instances instances = source.getDataSet();
  30. int dim = instances.numAttributes();
  31. int num = instances.numInstances();
  32.  
  33. System.out.println("Step2:缺失值处理...");
  34. double[] meanV = new double[dim];
  35. for (int i = 0; i < meanV.length; i++) {
  36. meanV[i] = 0;
  37. int count = 0;
  38. for (int j = 0; j < num; j++) {
  39. if(!instances.instance(j).isMissing(i)){
  40. meanV[i] += instances.instance(j).value(i);
  41. count++;
  42. }
  43. }
  44. meanV[i] = meanV[i]/count;
  45. System.out.println(meanV[i]);
  46. }
  47.  
  48. for (int i = 0; i < meanV.length; i++) {
  49. meanV[i] = 0;
  50. int count = 0;
  51. for (int j = 0; j < num; j++) {
  52. if(instances.instance(j).isMissing(i)){
  53. instances.instance(j).setValue(i, meanV[i]);
  54. }
  55. }
  56.  
  57. }
  58.  
  59. System.out.println("Step3:保存数据到新文件...");
  60.  
  61. DataSink.write("E:weka/data/labor_missingValueHandled.arff", instances);
  62. System.out.println("Finished.");
  63. } catch (Exception e) {
  64. e.printStackTrace();
  65. }
  66.  
  67. }
  68. }

三、归一化处理

  1. package learning;
  2.  
  3. import weka.core.Attribute;
  4. import weka.core.Instance;
  5. import weka.core.Instances;
  6. import weka.core.converters.ConverterUtils.DataSink;
  7. import weka.core.converters.ConverterUtils.DataSource;
  8. import weka.filters.Filter;
  9. import weka.filters.unsupervised.attribute.Normalize;
  10.  
  11. /**normalize data via weka
  12. *
  13. * @author wenbaoli
  14. *
  15. */
  16. public class normalizeTest {
  17.  
  18. /**
  19. *
  20. * @param arg
  21. */
  22. public static void main(String[] arg) {
  23.  
  24. String file = "cpu.arff";
  25. String file_norm = "norm_" + file;
  26. //对数据进行归一化
  27. try {
  28. System.out.println("+++++++++++++Example 1 : Normalize Data via weka.+++++++++");
  29.  
  30. System.out.println("Step1:读取数据...");
  31. DataSource source = new DataSource("E:/Weka/data/" + file);
  32. Instances instances = source.getDataSet();
  33.  
  34. System.out.println("Step2:原数据打印...");
  35. System.out.println("---------------------------------");
  36. int attributeNo = instances.numAttributes();
  37. for (int i = 0; i < attributeNo; i++) {
  38. Attribute attr = instances.attribute(i);
  39. System.out.print(attr.name() + "\t");
  40.  
  41. }
  42. System.out.println();
  43.  
  44. int instanceNo = instances.numInstances();
  45. for (int i = 0; i < instanceNo; i++) {
  46. Instance ins = instances.instance(i);
  47. System.out.print(ins.toString() + "\t");
  48. System.out.println();
  49. }
  50.  
  51. System.out.println("Step3:归一化...");
  52. Normalize norm = new Normalize();
  53. norm.setInputFormat(instances);
  54.  
  55. //归一化关键步骤:
  56. Instances newInstances = Filter.useFilter(instances, norm);
  57.  
  58. System.out.println("Step4:归一化之后的数据(打印)...");
  59. System.out.println("---------------------------------");
  60.  
  61. //打印属性名
  62. int numOfAttributes = newInstances.numAttributes();
  63. for (int i = 0; i < numOfAttributes; i++) {
  64. Attribute attribute = newInstances.attribute(i);
  65. System.out.print(attribute.name() + "\t");
  66.  
  67. }
  68. System.out.println();
  69.  
  70. //打印实例
  71. int numOfInstance = newInstances.numInstances();
  72. for (int i = 0; i < numOfInstance ; i++) {
  73. Instance instance = newInstances.instance(i);
  74. System.out.print(instance.toString() + "\t");
  75. System.out.println();
  76. }
  77. //发现一个问题:这把标签label也给归一化了。。。。。。。。。。这样可以吗???????
  78.  
  79. System.out.println("Step5:保存归一化的新数据到新文件...");
  80. System.out.println("-----------------------");
  81. DataSink.write("E:/Weka/data/" +file_norm, newInstances);
  82. System.out.println("Congratulations.");
  83. } catch (Exception e) {
  84. e.printStackTrace();
  85. }
  86.  
  87. }
  88. }

通过weka.jar包来进行数据预处理的更多相关文章

  1. BeanShell使用json.jar包处理Json数据

    环境准备 ①Jmeter版本 ,JDK ②前置条件:将json.jar包置于..\lib\下, 如果还是报错,可以将该jar包添加到测试计划的Library中:否则会报:Typed variable ...

  2. weka数据预处理

    Weka数据预处理(一) 对于数据挖掘而言,我们往往仅关注实质性的挖掘算法,如分类.聚类.关联规则等,而忽视待挖掘数据的质量,但是高质量的数据才能产生高质量的挖掘结果,否则只有"Garbag ...

  3. jdbc数据连接池dbcp要导入的jar包

    jdbc数据连接池dbcp要导入的jar包 只用导入commons-dbcp-x.y.z.jarcommons-pool-a.b.jar

  4. Excel文件按照指定模板导入数据(用jxl.jar包)

        本文中的方法只适合Excel2003,要读取Excel2007最好使用poi.jar,据说poi.jar还在更新,jxl.jar已经不更新了,处理Excel文件的读写问题最好还是学习poi.j ...

  5. 总结:独立开发 jar 包组件——功能主要是支持查询数据库的所有表数据

    前言:开发完一个项目,必定总结,这次就将总结记录在博客,第一次开发组件 jar 包,包含前端,后台,中间遇到好多问题,这里一一描述.转载请注明出处: https://www.cnblogs.com/y ...

  6. 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  ...

  7. 使用C#利用cmd来调用java jar包获取其中的数据

    其实也很简单,就是在C#中构建一个Process,启动jar包,并且给jar包传递参数 因为我并没有怎么学过JAVA,所以只写了个很小的Demo,就是根据传入的参数获取对应的数据 以下是JAVA De ...

  8. Java 使用poi导入excel,结合xml文件进行数据验证的例子(增加了jar包)

    ava 使用poi导入excel,结合xml文件进行数据验证的例子(增加了jar包) 假设现在要做一个通用的导入方法: 要求: 1.xml的只定义数据库表中的column字段,字段类型,是否非空等条件 ...

  9. WEKA中的数据预处理

    数据预处理包括数据的缺失值处理.标准化.规范化和离散化处理. 数据的缺失值处理:weka.filters.unsupervised.attribute.ReplaceMissingValues. 对于 ...

随机推荐

  1. 【jmeter】JMeter中返回Json数据的处理方法

    Json 作为一种数据交换格式在网络开发,特别是 Ajax 与 Restful 架构中应用的越来越广泛.而 Apache 的 JMeter 也是较受欢迎的压力测试工具之一,但是它本身没有提供对于 Js ...

  2. PHP 生成指定大小随机图片

    PHP 生成指定大小随机图片 <?php $image_width = 100; $image_height = 100; $image_str = ''; if (isset($_GET['w ...

  3. CentOS生产机器禁止ROOT远程SSH登录

    方法一 很多站长拥有linux主机,不管是虚拟机还是实体机,一般我们远程连接的时候,都是用的ssh(SecureShell建立在应用层和传输层基础上的安全协议). 它默认的端口22,默认使用root也 ...

  4. boa配置文件详解

    Web服务器boa配置文件参数说明 boa的配置文件是/etc/boa/boa.conf.Port:boa服务器监听的端口,默认的端口是80.如果端口小于1024,则必须是  root用户启动服务器. ...

  5. 验证视图状态 MAC 失败

    起因: 最近在做一个项目需要用到生成多个Html页,采用一下方法动态生成. WebRequest request = WebRequest.Create(pageurl); WebResponse r ...

  6. .NET常用方法——邮件发送

    邮件发送类文件,可直接使用: 调用方法(实例化.静态调用): 实例化: string exception = ""; SendEmail.SendEmail SE = new Se ...

  7. jQuery-webcam(.NET)实现WEB摄像头监控

    jQuery-webcam是一个非常好用的摄像头监控工具,DEMO可官方下载地址http://www.xarg.org/project/jquery-webcam-plugin/ 1.下载解压后,jq ...

  8. Android:单元测试Junit的配置

    在实际开发中,开发android软件的过程需要不断地进行测试.而使用Junit测试框架,侧是正规Android开发的必用技术,在Junit中可以得到组件,可以模拟发送事件和检测程序处理的正确性.... ...

  9. c# Base64编码和图片的互相转换代码

    将图片转化为Base64字符串的流程是:首先使用BinaryFormatter将图片文件序列化为二进制数据,然后使用Convert类的ToBase64String方法.将Base64字符串转换为图片的 ...

  10. DBA_Oracle Erp升级时如何确定具体的Patch ID(案例)

    2014-07-03 Created By BaoXinjian