GitHub开源项目!一款功能强大的特征选择工具

UE与Unity坐标系转换实战:从原理到代码解决跨引擎开发难题 在3D图形开发中,坐标系是描述物体位置、朝向和运动的基础。其核心原理在于定义了三维空间中X、Y、Z轴的方向与手性(左手或右手坐标系),这直接决定了向量运算、旋转变换和空间感知的数学规则。理解坐标系差异的技术价值在于实现资产复用、数据互通和跨平台协作,是构建高效游戏开发管线与工具链的关键。尤其在涉及Unreal Engine与Unity两大主流引擎的项目迁移、网络同步或工具开发时,两者默认的轴向定义不同(UE为Z轴向上、X轴向前,Unity为Y轴向上、Z轴向前)会引发模型朝向错乱、动画数据异常等典型问题。本文 阅读详情

编辑 | 机器学习算法与Python实践

特征选择(feature selection)是查找和选择数据集中最有用特征的过程,是机器学习流程中的一大关键步骤。不必要的特征会降低训练速度、降低模型可解释性,并且最重要的是还会降低其在测试集上的泛化表现。

目前存在一些专用型的特征选择方法,我常常要一遍又一遍地将它们应用于机器学习问题,这实在让人心累。所以我用 Python 构建了一个特征选择类并开放在了 GitHub 上。这个 FeatureSelector 包含一些最常用的特征选择方法:

  1. 具有高缺失值百分比的特征

  2. 共线性(高度相关的)特征

  3. 在基于树的模型中重要度为零的特征

  4. 重要度较低的特征

  5. 具有单个唯一值(unique value)的特征

项目地址:

https://github.com/WillKoehrsen/feature-selector

有关使用方法,请参阅Feature Selector的使用指南

https://github.com/WillKoehrsen/feature-selector/blob/master/Feature%20Selector%20Usage.ipynb

1 示例数据集

为了进行演示,我们将使用来自 Kaggle「家庭信用违约风险」机器学习竞赛的一个数据样本。640?wx_fmt=png这个竞赛是一个监督分类问题,这也是一个非常合适的数据集,因为其中有很多缺失值、大量高度关联的(共线性)特征,还有一些无助于机器学习模型的无关特征。

2 创建实例

要创建一个 FeatureSelector 类的实例,我们需要传入一个结构化数据集,其中观察在行中,特征在列中。我们可以使用一些仅操作特征的方法,但基于重要度的方法也需要训练标签。因为这是一个监督分类任务,所以我们将使用一组特征和一组标签。

from feature_selector import FeatureSelector
# Features are in train and labels are in train_labels
fs = FeatureSelector(data = train, labels = train_labels)

3 方法

这个特征选择器有 5 种用于查找待移除特征的方法。我们可以访问任何已被识别出来的特征并通过人工方式将它们移出数据,也可以使用 FeatureSelector 中的 remove 函数。

这里我们将介绍其中每种识别方法,还将展示如何同时运行这 5 种方法。此外,FeatureSelector 还有几个图表绘制功能,因为可视化地检查数据是机器学习的一大关键部分。

4 缺失值

查找和移除特征的第一个方法很简单:查找缺失值比例超过特定阈值的特征。下面的调用能识别缺失值比例超过 60% 的特征(粗体是输出结果)。

fs.identify_missing(missing_threshold = 0.6)

17 features with greater than 0.60 missing values.

要查看待移除特征,我们可以读取 FeatureSelector 的 ops 属性,这是一个 Python 特征词典,特征会以列表的形式给出。

missing_features = fs.ops['missing']
missing_features[:5]

['OWN_CAR_AGE',
 'YEARS_BUILD_AVG',
 'COMMONAREA_AVG',
 'FLOORSMIN_AVG',
 'LIVINGAPARTMENTS_AVG']

最后,我们可以绘制一张所有特制的缺失值分布图:640?wx_fmt=png

5 共线性特征

共线性特征是指彼此之间高度关联的特征。在机器学习领域,高方差和较低的模型可解释性导致在测试集上的泛化能力下降。

identify_collinear 方法能基于指定的相关系数值查找共线性特征。对于每一对相关的特征,它都会标识出其中要移除的一个(因为我们只需要移除其中一个):

fs.identify_collinear(correlation_threshold = 0.98)

21 features with a correlation magnitude greater than 0.98.

使用热图可以很好地可视化共线性。下图展示了所有至少有一个相关关系(correlation)超过阈值的特征:

fs.plot_collinear()

640?wx_fmt=png

和之前一样,我们可以访问将会被移除的整个相关特征列表,或者在一个 dataframe 中查看高度相关的特征对。

# list of collinear features to remove
collinear_features = fs.ops['collinear']
# dataframe of collinear features
fs.record_collinear.head()

640?wx_fmt=png

如果我们想全面了解数据集,我们还可以通过将 plot_all = True 传入该调用,绘制出数据中所有相关性的图表:

640?wx_fmt=png

6 零重要度特征

前面两种方法可被应用于任何结构化的数据集并且结果是确定的——对于一个给定的阈值,每次结果都一样。接下来的方法是专为监督式机器学习问题设计的,其中我们有训练模型的标签并且是非确定性的。identify_zero_importance 函数能根据梯度提升机(GBM)学习模型查找重要度为零的特征。

我们可以使用基于树的机器学习模型(比如 boosting ensemble)求取特征重要度。这个重要度的绝对值没有相对值重要,我们可以将相对值用于确定对一个任务而言最相关的特征。我们还可以通过移除零重要度特征来在特征选择中使用特征重要度。在基于树的模型中,零重要度的特征不会被用于分割任何节点,所以我们可以移除它们而不影响模型表现。

FeatureSelector 能使用来自 LightGBM 库的梯度提升机来得到特征重要度。为了降低方差,所得到的特征重要度是在 GBM 的 10 轮训练上的平均。另外,该模型还使用早停(early stopping)进行训练(也可关闭该选项),以防止在训练数据上过拟合。

下面的代码调用了该方法并提取出了零重要度特征:

# Pass in the appropriate parameters
fs.identify_zero_importance(task = 'classification',
 eval_metric = 'auc',
 n_iterations = 10,
 early_stopping = True)
# list of zero importance features
zero_importance_features = fs.ops['zero_importance']
63 features with zero importance after one-hot encoding.

我们传入的参数解释如下:

task:根据我们的问题,要么是「classification」,要么是「regression」

eval_metric:用于早停的度量(如果早停禁用了,就不必使用)

n_iterations:训练轮数,最后结果取多轮的平均

early_stopping:是否为训练模型使用早停

这时候我们可以使用 plot_feature_importances 绘制两个图表:

# plot the feature importances
fs.plot_feature_importances(threshold = 0.99, plot_n = 12)
124 features required for 0.99 of cumulative importance

640?wx_fmt=png左图给出了 plot_n 最重要的特征(重要度进行了归一化,总和为 1)。右图是对应特征数量的累积重要度。蓝色竖线标出了累积重要度为 99% 的阈值。

对于基于重要度的方法,有两点需要记住:

训练梯度提升机是随机的,这意味着模型每次运行后,特征重要度都会改变。

这应该不会有太大的影响(最重要的特征不会突然就变成最不重要的),但这会改变某些特征的排序,也会影响识别出的零重要度特征的数量。如果特征重要度每次都改变,请不要感到惊讶!

要训练机器学习模型,特征首先要经过 one-hot 编码。这意味着某些被识别为零重要度的特征可能是在建模过程中加入的 one-hot 编码特征。

当我们到达特征移除阶段时,还有一个选项可移除任何被添加进来的 one-hot 编码的特征。但是,如果我们要在特征选择之后做机器学习,我们还是必须要 one-hot 编码这些特征。

7 低重要度特征

接下来的方法基于零重要度函数,使用来自模型的特征重要度来进一步选择。identify_low_importance 函数能找到重要度最低的特征,这些特征无助于指定的总重要性。

比如,下面的调用能找到最不重要的特征,即使没有这些特征也能达到 99% 的重要度。

fs.identify_low_importance(cumulative_importance = 0.99)

123 features required for cumulative importance of 0.99 after one hot encoding.
116 features do not contribute to cumulative importance of 0.99.

根据前面的累积重要度图和这一信息,梯度提升机认为很多特征都与学习无关。重申一下,每次训练运行后该方法的结果都不一样。

我们也可以在一个 dataframe 中查看所有特征重要度:

fs.feature_importances.head(10)

640?wx_fmt=png

low_importance 方法借鉴了主成分分析(PCA)中的一种方法,其中仅保留维持一定方差比例(比如 95%)所需的主成分是很常见的做法。要纳入考虑的总重要度百分比基于同一思想。

只有当我们要用基于树的模型来做预测时,基于特征重要度的方法才真正有用。除了结果随机之外,基于重要度的方法还是一种黑箱方法,也就是说我们并不真正清楚模型认为某些特征无关的原因。如果使用这些方法,多次运行它们看到结果的改变情况,也许可以创建具有不同参数的多个数据集来进行测试!

8 单个唯一值特征

最后一个方法相当基础:找出任何有单个唯一值的列。仅有单个唯一值的特征不能用于机器学习,因为这个特征的方差为 0。举个例子,如果一个特征仅有一个值,那么基于树的模型就永远不能进行区分(因为没有可做区分的依据)。

fs.identify_single_unique()

4 features with a single unique value.

我们可以绘制每个类别唯一值数量的直方图:

fs.plot_unique()

640?wx_fmt=png

9 移除特征

在确定了待移除特征之后,我们有两种移除它们的选择。所有要移除的特征都存储在 FeatureSelector 的 ops 词典中,我们可以使用这个列表来手动移除它们,当然也可使用内置的 remove 函数。

对于这一方法,我们需传入要用于移除特征的 methods。如果我们想使用所实现的所有方法,我们只需使用 methods = 'all'

# Remove the features from all methods (returns a df)
train_removed = fs.remove(methods = 'all')

['missing', 'single_unique', 'collinear', 'zero_importance', 'low_importance'] methods have been runRemoved 140 features.

这个方法会返回一个包含被移除特征的 dataframe。另外,要移除在机器学习过程中创建的 one-hot 编码的特征:

train_removed_all = fs.remove(methods = 'all', keep_one_hot=False)

Removed 187 features including one-hot features.

在执行操作之前检查将被移除的特征可能是个好想法!原来的数据集会被存储在 FeatureSelector 的 data 属性中用作备份!

10 一次运行所有方法

除了单独使用各个方法之外,我们也可通过 identify_all 一次性使用所有方法。我们需要使用一个词典来设定其中每个方法的参数:

fs.identify_all(selection_params = {'missing_threshold': 0.6,
 'correlation_threshold': 0.98,
 'task': 'classification',
 'eval_metric': 'auc',
 'cumulative_importance': 0.99})

151 total features out of 255 identified for removal after one-hot encoding.

总结

这个特征选择器类实现了训练机器学习模型之前几种用于移除特征的常见操作。其提供了可用于识别待移除特征的函数以及可视化函数。这些方法可以单独使用,也可以一次全部应用以实现高效的工作流程。

其中 missing、collinear 和 single_unique 方法是确定性的,而基于特征重要度的方法会随每次运行而变化。与机器学习领域很相似,特征选择很大程度上是实证式的,需要测试多种组合才能找到最优解。最好的做法是在流程中尝试多种配置,并且 FeatureSelector 提供了一种用于快速评估特征选择参数的方法。

原文链接:

https://www.cnblogs.com/whig/p/9285736.html

python特征选择(一款非常棒的特征选择工具:feature-selector) 文章目录前言1.数据集选择2.feature-selector用法3.具有高missing-values百分比的特征4.具有高相关性的特征5.对模型预测结果无贡献的特征6.对模型预测结果只有很小贡献的特征7.具有单个值的特征8.从数据集去除选择的特征9.结论 前言        FeatureSelector是用于降低机器学习数... 阅读详情

相关推荐

【数据挖掘】金融风控 Task03 特征工程

【数据挖掘】金融风控 Task03 特征工程特征工程介绍数据预处理查找出对象和数值特征进行缺失值填充时间格式处理对象类特征的处理类别特征处理异常值的处理数据分箱固定宽度分箱分数位分箱卡方分箱和其他分箱方法的尝试特征交互特征编码特征选择 学习地址:https: //github.com/datawhalechina/team-learning-data-mining/tree/master/FinancialRiskControl 天池竞赛地址:https://tianchi.aliyun.com/comp

一一xi的博客 1226

数据挖掘笔记-特征选择-算法实现-1

代码托管:https://github.com/fighting-one-piece/repository-datamining.git。关于特征选择相关的知识可以参考一下连接。

PURSUE ONE PIECE 1万+

MATLAB数学建模快速入门:从环境搭建到核心技能实战指南

MATLAB作为一款强大的科学计算与数据可视化软件,其核心在于矩阵运算和工程问题求解。通过向量化编程和丰富的工具箱,用户能够高效处理复杂数学问题,实现从算法设计到结果验证的完整流程。在工程实践与学术研究中,MATLAB广泛应用于数据分析、模型拟合、优化求解及可视化呈现。特别是在数学建模竞赛中,掌握数据预处理、统计检验、回归分析等核心技能至关重要。本文聚焦于ttest与ttest2等统计函数的正确应用,并详解如何通过环境配置与代码优化避开常见陷阱,帮助读者快速构建从问题到代码的解决路径,提升建模效率与结果可靠

weixin_34088583的博客 358

3步快速上手BatteryML:终极开源电池寿命预测工具

BatteryML是一款功能强大的开源机器学习工具,专门用于电池退化分析和寿命预测。无论你是电池研究人员、数据科学家还是机器学习工程师,都能通过这个工具轻松处理复杂的电池数据,构建准确的预测模型。在短短几分钟内,你就能开始使用这个强大的电池寿命预测平台,加速你的电池研究项目。 --- ## 1. 🚀 快速安装与环境配置 ### 一键安装,即刻启程 BatteryML的安装过程非常简单,只

gitblog_00839的博客 307

特征选择MCFS算法,来自github

n many data analysis tasks, one is often confronted with very high dimensional data. Feature selection techniques are designed to find the relevant feature subset of the original features which can facilitate clustering, classification and retrieval. The feature selection problem is essentially a combinatorial optimization problem which is computationally expensive. Traditional feature selection methods address this issue by selecting the top ranked features based on certain scores computed independently for each feature. These approaches neglect the possible correlation between different features and thus can not produce an optimal feature subset. Inspired from the recent developments on manifold learning and L1-regularized models for subset selection, we propose here a new approach, called {\em Multi-Cluster/Class Feature Selection} (MCFS), for feature selection. Specifically, we select those features such that the multi-cluster/class structure of the data can be best preserved. The corresponding optimization problem can be efficiently solved since it only involves a sparse eigen-problem and a L1-regularized least squares problem. It is important to note that MCFS can be applied in superised, unsupervised and semi-supervised cases. If you find these algoirthms useful, we appreciate it very much if you can cite our following works: Papers Deng Cai, Chiyuan Zhang, Xiaofei He, "Unsupervised Feature Selection for Multi-cluster Data", 16th ACM SIGKDD Conference on Knowledge Discovery and Data Mining (KDD'10), July 2010. Bibtex source Xiaofei He, Deng Cai, and Partha Niyogi, "Laplacian Score for Feature Selection", Advances in Neural Information Processing Systems 18 (NIPS'05), Vancouver, Canada, 2005 Bibtex source

别再只盯着GPS了!手把手教你用Python仿真UWB定位,30厘米精度是怎么算出来的?

本文详细解析了UWB(超宽带)室内定位技术的原理与实现,通过Python代码演示如何从三边测量法到实现30厘米精度的定位。文章涵盖了UWB的核心数学模型、Python仿真环境搭建、误差分析及优化策略,为开发者提供了实用的技术指南和应用场景。

weixin_26873711的博客 254

OpenSMILE:全面解析慕尼黑开源音频特征提取工具包

OpenSMILE(开源语音与音乐大特征空间提取工具包)是慕尼黑工业大学开发的一款功能强大的开源音频特征提取工具,专门用于语音和音乐信号的实时处理和机器学习应用。这款工具包采用纯C++编写,具有快速、高效、灵活的架构,支持跨平台运行,是音频分析、情感识别和语音处理领域的终极解决方案。 ## 🔍 什么是OpenSMILE? OpenSMILE全称为**open**-source **S**pe

gitblog_00485的博客 901

AI气象预报:数值模式融合与短临预警的工程实践

气象预报正经历从物理推演到数据驱动的认知范式转变。AI气象预报并非替代传统数值模式,而是通过数值模式融合弥补其在参数化误差、初值敏感性和计算效率上的固有瓶颈。其技术价值在于提升短临预警时效性与空间精度,支撑航空调度、电力调控、防洪应急等关键场景。实践中需兼顾物理一致性、可解释性与业务系统兼容性,避免纯黑箱建模带来的外推失效与不确定性缺失风险。本文聚焦AI作为超分辨率引擎、误差矫正器和短临加速器的三类落地路径,解析HEALPix投影、多尺度图建模、轻量级U-Net等核心适配方法。

weixin_28221501的博客 299

跨平台网络资源下载器:5个技巧轻松捕获微信视频号与短视频平台内容

你是否曾经遇到过这样的场景:在微信视频号上看到一个精彩的短视频,想要保存下来却找不到下载按钮?或者在小红书、抖音等平台发现优质内容,却因为平台限制无法轻松获取?这正是res-downloader网络资源下载工具要解决的核心痛点。作为一款基于Go和Wails框架开发的跨平台工具,res-downloader支持Windows、macOS和Linux三大操作系统,专门针对微信视频号、小程序、抖音、快手

gitblog_01053的博客 933

Anomalib实战:从零开始构建自定义数据集的异常检测模型

本文详细介绍了如何使用Anomalib 2.1.0从零开始构建自定义数据集的异常检测模型。通过实战演示,指导读者准备符合规范的数据集结构,快速上手训练Patchcore等先进算法,并完成模型推理与调优,为工业质检、医疗影像等场景提供高效的视觉异常检测解决方案。

weixin_29165465的博客 109

abaqus单位设置_ABAQUS热辐射分析实例

热辐射是一种通过电磁波传递热能的方式。电磁波以光的速度进行传递,而能量传递与辐射物体之间的介质无关。热辐射只在电磁波的频谱中占小部分的带宽。由于辐射产生的热流与物体表面的绝对温度的四次方成正比因此热辐射有限元分析是高度非线性的。 下面就通过一个简单的案例带大家了解以下在ABAQUS中如何进行热辐射分析。1. 模型介绍 该案例模拟了一个直径为1m、高1m、初始温度20...

weixin_39670849的博客 1万+

Orange3完整指南:从数据预处理到机器学习可视化的终极教程

Orange3是一款功能强大的开源数据分析和可视化工具,专为机器学习和数据挖掘而设计。它通过直观的图形界面,让用户无需编程经验就能完成复杂的数据分析任务。这个完整的Orange3教程将带你从基础安装到高级应用,全面掌握数据预处理、机器学习模型构建和结果可视化等核心功能。🚀 ## 为什么选择Orange3进行数据分析? Orange3提供了**完整的机器学习工作流程**,从数据导入到模型评估,

gitblog_00123的博客 882

RK平台PCIE-Ethernet扩展:Intel I210移植与性能飞升之路

本文详细介绍了Intel I210千兆以太网控制器在瑞芯微RK平台的移植与优化过程。通过硬件适配、内核配置、驱动开发及性能调优四个关键环节,实现了RK平台的网络性能提升。硬件方面,重点说明了PCIE接口的规范连接与供电检查;软件方面,系统阐述了内核配置、设备树修改和驱动编译流程。在性能优化环节,详细介绍了中断优化、缓冲区设置和TCP/IP协议栈调优策略,并采用Iperf和Netperf工具进行量化测试验证。测试结果显示,优化后的网络吞吐量提升20%以上,延迟降低40%,为工业控制、智能安防等场景提供了可靠的

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 354

如何快速掌握数据质量分析:pandas-profiling的终极指南

pandas-profiling是一款强大的数据分析工具,只需一行代码就能为Pandas和Spark DataFrames生成全面的数据质量分析报告。本文将为你提供一份简单易懂的指南,帮助你快速上手这款工具,轻松完成数据探索和质量分析任务。 ## 为什么选择pandas-profiling进行数据质量分析? 在数据分析的过程中,数据质量是至关重要的。pandas-profiling能够自动生成

gitblog_00757的博客 523

Qt EGLFS 图形后端详解

EGLFS (EGL Full Screen) 是Qt框架在嵌入式Linux系统中的高性能图形显示后端,它提供了直接基于EGL和OpenGL ES的硬件加速渲染解决方案。

浩瀚之水的专栏 513

1 电科院FTU检测标准学习笔记-外观检查

作者简介:本人从事电力系统多年,岗位包含研发,测试,工程等,具有丰富的经验在配电自动化验收测试以及电科院测试中,本人全程参与,积累了不少现场的经验。

sixtome 1852

5大核心功能全解析:ftools如何让Stata大数据处理快10倍

还在为Stata处理百万级数据时的卡顿而烦恼吗?ftools项目正是为解决这一痛点而生,它提供了一系列快速Stata命令,专门针对大规模数据集进行优化。作为GitHub加速计划旗下的高性能工具集,ftools通过底层算法重构,让你的数据分析效率实现质的飞跃。 ## 🚀 项目简介与核心价值 ftools是一个专为Stata用户设计的高性能数据处理工具包,主要解决传统Stata命令在处理大数据时

gitblog_00533的博客 983

液态神经网络(Liquid Neural Networks)从线虫大脑到下一代 AI

液态神经网络(Liquid Neural Networks,LNN)是一类具有动态内部结构的神经网络,其灵感来源于生物神经系统,尤其是大脑中神经元如何以复杂、非线性的方式响应外部刺激。与传统神经网络不同,液态神经网络的每个神经元在处理输入时,不再是静态线性或非线性变换,而是基于一个微分方程模型进行响应。这种建模方式使神经元的行为具有时间连续性和动态适应性。换句话说,它不仅“记住”过去的信息,还能根据当前环境实时调整自身的动态特性,这对于感知、决策、预测等任务都非常关键。

hello.reader 7423

Xberg PHP 批量提取实战:extractBatch 混合 bytes 与 URL 输入的统一结果封装解析

本文以 Xberg 仓库中 PHP 绑定的批处理提取示例([url_batch_mixed_inputs.md](https://link.gitcode.com/i/0deaa9ad3763b0c322be269ad8e4dedd))为核心,深入讲解 `Xberg::extractBatch` 如何将"内存字节(bytes)"与"远程 URL"两类输入放进同一次调用、共享一个输出封装(outpu

gitblog_01003的博客 485

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

实战指南:利用Hermes Agent构建高效智能供应链需求预测系统

在当今快速变化的市场环境中,供应链需求预测已成为企业运营效率和成本控制的关键。Hermes Agent作为一款功能强大的AI代理工具,集成了先进的机器学习与统计方法,为构建智能供应链需求预测系统提供了全面的技术解决方案。本文将深入探讨如何利用Hermes Agent的核心功能,打造高效、精准的需求预测系统,帮助企业实现数据驱动的供应链管理决策。 ## 🔍 供应链预测面临的挑战与Hermes解决

gitblog_00749的博客 381

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

盘点:为 Java 开发者量身定制的五款机器学习库

Weka 地址:http://www.cs.waikato.ac.nz/ml/weka/index.html 毫无疑问,Weka 是目前首选的 Java 机器学习库。 它由新西兰怀卡托大学(University of Waikato)的机器学习项目组研发。其命名来源于一种新西兰特有的不会飞的鸟——新西兰秧鸡,新西兰秧鸡的英文名称就是 Weka。按照...

weixin_33698043的博客 198

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

TypeGraphQL 参数与输入校验完整指南:class-validator 与自定义 validateFn 深度实践

> **导读**:本文系统讲解 TypeGraphQL 内建的参数(Argument)与输入(Input)自动校验能力。文章以官方文档 [docs/validation.md](https://link.gitcode.com/i/14ef57f409795c2dc91cab09e9ee99d5) 与 2.0.0-rc.2 版本文档为骨架,结合仓库源码([validate-arg.ts](http

gitblog_02244的博客 454

特征筛选2——皮尔逊相关系数筛选(单变量筛选)

值域为正负1之间,用来筛查单变量与预测结果之间的相关关系,一般来讲: 绝对值在0-0.1之间:无关 绝对值在0.1-0.3之间:弱相关关系 绝对值在0.3-0.6之间:存在相关关系 绝对值在0.6-0.9之间:强相关关系 绝对值大于0.9:几乎线性相关 主要的功能函数: def pearsonr_selection(x_data, y_data): # 皮尔逊pearsonr相关系数 from scipy.stats import pearsonr para_dict3 = []

呆萌的代Ma 4914

【python】数据挖掘分析清洗——特征选择(特征筛选)方法汇总

特征构造得到足够的广度后,将这些特征进行筛选特征选择主要有两个功能:减少特征数量、降维,使模型泛化能力更强,减少过拟合增强对特征和特征值之间的理解通常来说,从两个方面考虑来选择特征:特征是否发散:如果一个特征不发散,例如方差接近于0,也就是说样本在这个特征上基本上没有差异,这个特征对于样本的区分并没有什么用。特征与目标的相关性:这点比较显见,与目标相关性高的特征,应当优选选择特征选择指的是从原始数据中选择最具有代表性和重要性的特征,保留这些特征并去除无用或冗余的特征。

weixin_47058355的博客 1万+
上一篇: 深度学习必懂的13种概率分布
下一篇: PyTorch VS TensorFlow谁最强?这是标星15000+ Transformers库的运行结果
Wang_AI
博客等级 码龄12年 996粉丝 162原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值