用于在模拟数据流上选择特性的python包

pystreamfs的Python项目详细描述


pypi version

pystreamfs是一个开放源码的python包,允许在模拟数据流上快速简单地比较功能选择算法。

用户可以在作为numpy.ndarray提供的任何数据集上模拟具有不同批处理大小的数据流。 pystreamfs将指定的功能选择算法应用于每个批处理,并计算 每次t时选择的功能集。pystreamfs也可用于绘制性能指标。

pystreamfs为数据流提供了5种内置的功能选择算法。此外,您可以在github上找到3个可供下载的数据集。 pystreamfs具有模块化结构,因此易于扩展(有关更多信息,请参见第2.5节)。

许可证:麻省理工学院许可证
即将进行的更改:

  • 能够模拟要素流
  • 生成人工数据流的能力
  • 一次测试多个特征选择算法的能力

1开始

1.1预排队

需要安装以下python模块(比指定的版本旧的版本也可能工作):

  • python>;=3.7.1
  • numpy=1.15.4
  • psutil=5.4.7
  • matplotlib>;=2.2.3
  • scikit学习>;=0.20.1
  • 特征选择算法所需的任何模块

1.2如何获取pystreamfs

使用pip:pip安装pystreamfs
/dist中下载并解压缩.tar.gz文件。导航到解压文件夹并执行 python setup.py安装

2包装

2.1文件

主要模块是/pystreamfs/pystreamfs.py。特征选择算法存储在/algorithms

2.2主模块:pystreamfs.py

pystreamfs.py提供以下功能:

  • x,y=准备数据(数据、目标、随机播放)
    • 说明:准备用于模拟数据流的数据集:随机排序数据矩阵的行并提取目标变量y和功能x
    • 输入
      • 数据:numpy.ndarray,数据集
      • 目标:int,目标变量的索引
      • shuffle:bool,如果true随机排序样本
    • 输出
      • x:numpy.ndarray,功能
      • y:numpy.ndarray,目标变量
  • stats=模拟流(x,y,fs_算法,模型,参数)
    • 说明:遍历数据集中的所有数据点以模拟数据流。 执行给定的特征选择算法并返回性能统计信息。
    • 输入
      • x:numpy.ndarray,这是由prepare\data()返回的x
      • y:numpy.ndarray,这是由prepare\u data()返回的y
      • fs_算法:函数,特征选择算法
      • ml_model:对象,用于计算精度分数的机器学习模型(关于knn的备注:相邻数量必须大于或等于批量大小)
      • 参数:dict,包括:
        • num-features:整数,要返回的功能数
        • 批处理大小:整数,在一次迭代中处理的实例数
        • 附加算法特定参数
    • 输出
      • 统计信息:dict
        • 功能:列表列表,每个批次的选定功能集
        • 时间平均值:float,一次执行功能选择的平均计算时间
        • 时间度量值:列表,每个批次的时间度量值
        • memory_avg:float,执行一次功能选择后的平均内存使用量,使用psutil.process(os.getpid()).memory_full_info().uss
        • 内存测量:列出每个批次的内存测量
        • acc_avg:float,所选功能集分类的平均精度
        • acc_measures:列表,每批的精度测量值
        • fscr_avg:浮点,每个时间窗口的平均特征选择更改率(fscr)。 fscr是相对于t-1在t中变化的选定特征的百分比(如果所有选定特征保持相同,则fscr=0;如果所有选定特征发生变化,则fscr=1)
        • fscr_measures列出每个批次的fscr度量值
  • plt=plot_stats(stats,ftr_names,param,fs_name,model_name):
    • 说明:在所有时间窗口中绘制时间、内存、FSCR和选定功能的统计信息。
    • 输入
      • 统计信息:dict(请参见simulate嫒stream()统计信息
      • ftr\u名称:numpy.ndarray,包含所有功能名称
      • 参数:dict,参数
      • fs_name:字符串,特征选择算法的名称
      • 型号名称:字符串,机器学习型号的名称
    • 输出
      • plt:pyplot对象:统计图

2.3内置功能选择算法

  • 基于感知器算法的在线特征选择。(2013年)-链接到论文
  • 利用Huang等人的矩阵草图在数据流(FSD)上进行无监督特征选择。(2015年)-链接到纸张
  • hamoodi等提出的基于微簇近邻的特征选择方法。(2018年)-链接到论文
  • 基于carvalho等人改进的平衡风选分类器的极值特征选择。(2006年)-链接到纸张
  • Vadim Borisov基于神经网络的取消特征选择(github

2.4可下载数据集

所有数据集都已清理并规范化。所有数据集的目标变量都移到第一列。

  • 德国信用评分(链接
  • 人类活动识别的二进制版本(链接)。
    • 原始har数据集有一个多变量目标。对于它的二进制版本,我们将类"walking"定义为正类(label=1),将所有其他类定义为负类(non-walking)。 我们把172原始"行走"类的2个样本,随机抽取所有其他类的3000个实例。
  • usenet(链接

2.5如何添加特征选择算法

如果要使用pystreamfs测试自己的特征选择算法,则必须将算法封装在一个函数中 格式如下:

defyour_fs_algorithm(X,Y,w,param):"""Your feature selection algorithm    :param numpy.nparray X: current data batch    :param numpy.nparray Y: labels of current batch    :param numpy.nparray w: feature weights    :param dict param: any parameters the algorithm requires    :return: w (updated feature weights), param    :rtype numpy.ndarray, dict    """...dofeatureselection...returnw,param

然后,您可以导入和测试功能选择算法,方法与任何内置算法相同(请参见示例)。

<H2>3。例
frompystreamfsimportpystreamfsimportnumpyasnpimportpandasaspdfrompystreamfs.algorithmsimportofsfromsklearn.neighborsimportKNeighborsClassifier# Load a datasetdata=pd.read_csv('../datasets/har.csv')feature_names=np.array(data.drop('target',1).columns)data=np.array(data)# Extract features and target variableX,Y=pystreamfs.prepare_data(data,0,False)# Load a FS algorithmfs_algorithm=ofs.run_ofs# Define parametersparam=dict()param['num_features']=5# number of features to returnparam['batch_size']=50# batch size# Define ML modelmodel=KNeighborsClassifier(n_jobs=-1,n_neighbors=5)# Data stream simulationstats=pystreamfs.simulate_stream(X,Y,fs_algorithm,model,param)# Plot statisticspystreamfs.plot_stats(stats,feature_names,param,'Online feature selection (OFS)','K Nearest Neighbor').show()

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
如何在java中模拟按键?   尽管元素存在,但HtmlUnit中的java ElementNotFoundException   在Java中,长双精度并发写入不是原子的吗?   java如何在另一个对象数组中打印对象的int值?   java在显示或更改视图后执行一些代码   java JFR:读取时发生OutOfMemoryError。jfr文件   java Android助手检查是否购买   java这种设计模式的好处是什么?   Weblogic 10.3中针对托管服务器的java部署问题   java如何获取字符串。在编译时投诉的格式   声明字符串数组时发生java错误   java JPA在多个并行线程中从表中删除时发生死锁   java Android:在按钮动画之后启动活动   java并发与JMS主题在春季   使用Lucene spatial search/DateRangePrefixTree进行java日期范围查询?   java可选接口问题   JavaDbUnit没有在每个方法之后清洗和插入数据库,所以测试不是独立的   java在IAIK PKCS11包装器中一对私钥和证书如何匹配?