问题标签 [feature-engineering]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
7591 浏览

python - scikit-learn 中分类算法的文本特征输入格式

我开始使用 scikit-learn 来做一些 NLP。我已经使用了一些来自 NLTK 的分类器,现在我想尝试在 scikit-learn 中实现的分类器。

我的数据基本上是句子,我从这些句子的一些单词中提取特征来做一些分类任务。我的大部分特征都是名义上的:词的词性(POS),词到左,词性词到左,词到右,词性词到-对,从一个词到另一个词的句法关系路径,等等。

当我使用 NLTK 分类器(决策树,朴素贝叶斯)进行一些实验时,特征集只是一个字典,其中包含特征的相应值:名义值。如:[ {"postag":"noun", "wleft":"house", "path":"VPNPNP",...},.... ]。我只需要将它传递给分类器,他们就完成了他们的工作。

这是使用的代码的一部分:

这是提取的特征集之一的示例:

正如我之前提到的,大多数功能都是名义上的(字符串值)。

现在,我想试试 scikit-learn 包中的分类器。据我了解,这种类型的特征集对于 sklearn 中实现的算法是不可接受的,因为所有特征值都必须是数字,并且它们必须在数组或矩阵中。因此,我使用 DictVectorizer 类转换了“原始”功能集。但是,当我传递这个转换后的向量时,会出现以下错误:

当我只使用 DictVectorizer() 时出现这些错误。但是,如果我使用 DictVectorizer(sparse=False),甚至在代码进入训练部分之前我就会收到错误:

由于这个错误,很明显必须使用稀疏表示。

所以问题是:如何转换我的标称特征以便使用 scikit-learn 提供的分类算法?

提前感谢您能给我的所有帮助。

更新

正如下面的答案所建议的,我尝试将 NLTK 包装器用于 scikit-learn。我刚刚更改了创建分类器的代码行:

然后,当我调用“train”方法时,我得到以下信息:

因此,显然,包装器无法创建稀疏矩阵,因为这些特征是名义上的。然后,我回到原来的问题。

0 投票
1 回答
114 浏览

string - 学习垃圾邮件发送者的名字

目前,一些垃圾邮件浪潮,尤其是在体育赛事发生时,正在充斥着互联网。

由于我强烈怀疑垃圾邮件发送者的用户名不是计算机生成的,我认为尝试以某种方式以编程方式学习垃圾邮件发送者名称可能会很有趣。

用户名应介于 2 到 15 个字符之间,以字母开头并且仅包含字母、数字_-.

一个示例名称列表将是

我只有相当基本的算法知识(来自大学)。我的问题是,我可以使用哪些机器学习算法和/或字符串指标来预测任意用户名是否可能是垃圾邮件发送者。我考虑过使用余弦字符串相似度,因为它相当简单。

0 投票
1 回答
3804 浏览

python - 使用 Pandas 进行二维分箱

所以我有两组特征,我希望对它们进行分类(分类),然后组合起来创建一个新特征。这与将坐标分类为地图上的网格没有什么不同。

问题是特征分布不均匀,我想pandas.qcut()在对两个特征/坐标进行分箱(如 with )时使用分位数。

有没有比qcut()对这两个特征都做然后连接结果标签更好的方法?

0 投票
1 回答
55 浏览

r - R dplyr如何提取基于窗口的特征

我想知道我该如何做这件事:

基本上,新功能应该是时间窗口 ID-window_size 中有多少点:带有密钥的 ID。目前我到处都是 0,for 循环在 R 中是一个糟糕的主意。有什么想法吗?

问候,T

0 投票
1 回答
492 浏览

python - Python Pandas 特征生成作为聚合函数

我有一只熊猫 df,它有点像泥泞或不太像

这个 DF 包含数百万个点。我现在正在尝试生成一些描述符以包含数据的时间性质。这个想法是对于每一行,我应该创建一个长度为 x 的窗口,返回数据并计算窗口中特定键的出现次数。我做了一个实现,但根据我对 23 个不同窗口的估计,计算将运行 32 天。这是代码

有多个不同长度的不同窗口。然而,我有一种不安的感觉,即迭代可能不是进行这种数据聚合的最明智的方式。有没有办法实现它运行得更快?

0 投票
0 回答
87 浏览

categorical-data - 在 R 中分解分类属性

这看起来可能是基本的,但是如何将分类变量分解为其子部分,然后运行回归?万一这只是胡说八道,很难举个例子。我正在尝试查看提起的诉讼,其中包括原告、被告、申请日期、诉讼类型等因素。然后按国家/地区对原告类别进行分类(如当事方提起的诉讼),我想分析哪些国家/地区提起了哪些诉讼各种诉讼。因此,我不想使用 data$plaintiff 作为其他因素的函数进行回归,而是想根据原告类别中的各种因素创建一个新变量(我认为)。我认为我想做的是特征工程,但我不明白/无法弄清楚如何做到这一点。

我刚刚意识到这基本上是在 excel 的列中进行排序和过滤,我该如何在 R 中做到这一点?

0 投票
1 回答
380 浏览

python - Python - 具有字符串列表的字典列表上的特征散列

我希望能够获取一个字典(记录)列表,其中一些列具有一个值列表作为单元格的值。这是一个例子

如何获取此输入并对其执行特征哈希(在我的数据集中,我有数千列)。目前我正在使用一种热编码,但这似乎消耗了很多内存(比我系统上的内存还多)。

我尝试如上所述获取我的数据集并收到错误:

我还尝试将其转换为数据框并将其传递给哈希器:

知道如何使用 pandas 或 sklearn 实现这一点吗?或者也许我可以一次构建我的虚拟变量几千行?

这是我如何使用 pandas 获取我的虚拟变量:

0 投票
2 回答
185 浏览

r - R 自动将在数据集上实现的预处理应用到新数据集

我正在寻找一种方法来编写一个在另一个脚本中自动加载脚本的一部分的函数。

这是我的问题:我创建了一个脚本,对数据集执行预处理,然后应用 xgboost。

我需要自动将此脚本中实现的预处理(例如:创建新变量,用平均值替换 NA - 保持初始数据集的平均值)应用于新数据集。这对用户应该是完全透明的(没有复制粘贴,只有一个带有新集合的函数和一个模型的 Rdata 作为参数输入)。

我的想法是将带有预处理的脚本部分“存储”为 Rdata 中的对象,然后当我在新脚本中加载此对象时,预处理将应用于新数据集。

有没有人知道如何做到这一点?

0 投票
1 回答
2867 浏览

python - 规范化一列数据框 pyspark ML

我正在尝试使用库L1对数据框中的列值进行规范化。pyspark ML以下是我的代码。但它做不到。你能帮我弄清楚这段代码有什么问题吗?

以下是错误日志的一部分。

0 投票
1 回答
1478 浏览

machine-learning - 在未知测试集上使用 Select-K-best

我在 sklearn 中训练了一个逻辑回归分类器。我的基本特征文件有 65 个特征,现在我通过考虑二次组合(使用 PolynomialFeatures())将它们外推到 1000。然后我通过 Select-K-Best() 方法将它们减少到 100。

但是,一旦我训练了我的模型并获得了一个新的 test_file,它将只有 65 个基本特征,但我的模型预计其中有 100 个。

那么,当我不知道 Select-K-Best.fit() 函数中所需的标签时,如何在我的测试集上应用 Select-K-Best() 方法