简单程序数据集

1. 问题描述编辑

FineReport报表的数据来源可以是数据库数据或是文本数据,并且还可以是其它任何类型的数据,因为FineReport是通过AbstractTableData抽象类来读取数据源的,而上述所有的数据来源都继承实现其抽象方法,因此用户只要实现了AbstractTableData抽象类,也就可以用自定义类型的数据源了(程序数据集),FineReport报表引擎就能够读取定义的数据源作为报表数据源使用。

2. 实现原理编辑

AbstractTableData抽象类主要有5个方法,如下:
//获取AbstractTableData的总列数
public int getColumnCount();
//获取AbstractTableData中第columnIndex列的列名
public String getColumnName(int columnIndex);
//判断是否存在第rowIndex行,这主要是用于处理超大数据时,完全遍历所有数据获取总行数相当困难,用这个方法来判断第rowIndex行是否存在,存在则可读取
public boolean hasRow(int rowIndex);
//获取AbstractTableData的总行数
public int getRowCount();
//获取AbstractTableData中第columnIndex列,第rowIndex行的数据
public Object getValueAt(int rowIndex, int columnIndex);
在某些应用场景中,需要在程序中对数据进行处理后再作为报表的数据源使用。

3. 示例编辑

下面我们定义数据集为如下样式:列为Name,Score,值分别为Alex,15;Helly,22;Bobby,99作为程序数据集。
3.1 定义程序数据源
定义一个类,继承AbstractTableData,并实现里面的方法,具体的代码如下:
  1. package com.fr.data;  
  2.   
  3. import com.fr.data.AbstractTableData;  
  4.   
  5. public class ArrayTableDataDemo extends AbstractTableData {  
  6.     // 定义程序数据集的列名与数据保存位置  
  7.     private String[] columnNames;  
  8.     private Object[][] rowData;  
  9.     // 实现构建函数,在构建函数中准备数据  
  10.     public ArrayTableDataDemo() {  
  11.         String[] columnNames = { "Name""Score" };  
  12.         Object[][] datas = { { "Alex"new Integer(15) },  
  13.                 { "Helly"new Integer(22) }, { "Bobby"new Integer(99) } };  
  14.         this.columnNames = columnNames;  
  15.         this.rowData = datas;  
  16.     }  
  17.     // 实现ArrayTableData的其他四个方法,因为AbstractTableData已经实现了hasRow方法  
  18.     public int getColumnCount() {  
  19.         return columnNames.length;  
  20.     }  
  21.     public String getColumnName(int columnIndex) {  
  22.         return columnNames[columnIndex];  
  23.     }  
  24.     public int getRowCount() {  
  25.         return rowData.length;  
  26.     }  
  27.     public Object getValueAt(int rowIndex, int columnIndex) {  
  28.         return rowData[rowIndex][columnIndex];  
  29.     }  
  30. }  
将ArrayTableDataDemo.java编译生成 ArrayTableDataDemo.class类。
将生成的类文件拷贝到报表工程 %FR_HOME%\WebReport\WEB-INF\classes目录下。由于该类是在com. fr.data包中的,因此最终应该将该 ArrayTableData.class放在 %FR_HOME%\WebReport\WEB-INF\classes\com\fr\data下面。此时该程序数据源便定义好了。
3.2 配置程序数据源
点击模板数据集下面的加号,选择程序数据集,然后在弹出的程序数据集对话框中,选择对应的class文件,如下图:

222

3.3 使用程序数据集
配置好程序数据源后便可以使用定义的程序数据集了,与其他类型的数据集使用方法是相同的,可以通过拖拽方法实现单元格数据列绑定。如下图:

222
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
构建 SVM(支持向量机) 程序,实现对 iris 数据集的分类。 首先,我们需要导入所需要的库和模块。我们使用 sklearn 库中的 svm 模块进行构建。 接下来,我们需要加载 iris 数据集。可以使用 sklearn 中的 datasets 模块来加载这个数据集。 然后,我们需要对数据集进行预处理。我们需要将数据集分为特征矩阵 X 和目标向量 y。特征矩阵 X 包含了鸢尾花的四个特征(花萼长度、花萼宽度、花瓣长度、花瓣宽度),目标向量 y 包含了鸢尾花的目标(三种鸢尾花的分类)。 接下来,我们需要将数据集划分为训练集和测试集。我们可以使用 sklearn 中的 train_test_split 函数来实现数据集划分。 然后,我们需要对数据进行标准化处理。我们可以使用 sklearn 中的 StandardScaler 函数来对特征矩阵进行标准化处理,使得特征矩阵的均值为0,方差为1。 接下来,我们可以使用 svm 模块中的 SVC 函数来构建 SVM 分类器。我们可以指定不同的内核函数和超参数来调整模型的性能。 然后,我们可以使用训练集来训练 SVM 分类器。可以使用 svm 模块中的 fit 函数来实现训练。 最后,我们可以使用测试集来评估模型的性能。可以使用 svm 模块中的 predict 函数来进行预测,并与真实的目标进行比较,计算准确率等性能指标。 通过以上步骤,我们可以构建一个简单的 SVM 程序,实现对 iris 数据集的分类。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值