标签: feature-selection

快速信息增益计算

我需要为> 10k文档中的> 10万个特征计算信息增益分数,以进行文本分类.下面的代码工作正常,但完整的数据集非常慢 - 在笔记本电脑上需要一个多小时.数据集是20newsgroup,我正在使用scikit-learn,chi2函数在scikit中提供的工作非常快.

知道如何为这样的数据集更快地计算信息增益吗?

def information_gain(x, y):

    def _entropy(values):
        counts = np.bincount(values)
        probs = counts[np.nonzero(counts)] / float(len(values))
        return - np.sum(probs * np.log(probs))

    def _information_gain(feature, y):
        feature_set_indices = np.nonzero(feature)[1]
        feature_not_set_indices = [i for i in feature_range if i not in feature_set_indices]
        entropy_x_set = _entropy(y[feature_set_indices])
        entropy_x_not_set = _entropy(y[feature_not_set_indices])

        return entropy_before - (((len(feature_set_indices) / float(feature_size)) * entropy_x_set)
                                 + ((len(feature_not_set_indices) / float(feature_size)) * entropy_x_not_set))

    feature_size = x.shape[0]
    feature_range = range(0, feature_size)
    entropy_before = _entropy(y)
    information_gain_scores …
Run Code Online (Sandbox Code Playgroud)

python performance machine-learning feature-selection scikit-learn

9
推荐指数
1
解决办法
1万
查看次数

在Java中保存大量数据的最佳实践

我正在用Java编写一个小系统,我从文本文件中提取n-gram特征,然后需要执行特征选择过程以选择最多的鉴别器特征.

单个文件的特征提取过程返回一个映射,该映射包含每个唯一特征,它在文件中的出现.我将所有文件的地图(地图)合并到一个地图中,其中包含从所有文件中提取的所有独特功能的文档频率(DF).统一地图可包含10,000,000个以上的条目.

目前,特征提取过程运行良好,我想执行特征选择,其中我需要实现信息增益或增益比.我将首先对Map进行排序,执行计算并保存结果,以便最终得到一个列表(对于每个特征,其特征选择分数)

我的问题是:保存大量数据(~10M)并执行计算的最佳实践和最佳数据结构是什么?

java computation feature-extraction feature-selection data-structures

9
推荐指数
3
解决办法
1万
查看次数

xgboost ML模型的get_fscore()有什么作用?

有人如何计算数字?在文档中它说这个函数"获取每个特征的特征重要性",但没有解释如何解释结果.

python feature-selection xgboost

9
推荐指数
1
解决办法
7068
查看次数

使用Sklearn中的特征选择,属性对Python中特定目标的预测能力

是否有任何特征选择方法Scikit-Learn(或一般算法)给出属性能力/预测能力/重要性的权重来预测特定目标? 例如,对from sklearn.datasets import load_iris4个属性权重中的每一个进行排序,以分别预测3种虹膜种类,但对于更复杂的数据集w/~1k-10k属性.

我寻找的东西类似于feature_importances_RandomForestClassifier.但是,RandomForestClassifer为整个预测过程的每个属性赋予权重.权重不需要加起来,但我想找到一种方法将特定属性子集与特定目标相关联.

首先,我尝试"过度拟合"模型以丰富特定目标,但结果似乎在目标之间没有太大变化.其次,我尝试通过找出哪些属性具有最大变化但不直接转化为预测能力来进行排序路线.第三,我尝试了稀疏模型,但遇到了与使用相同的问题feature_importances_.

指向完成此操作的示例或教程的链接就足够了.可能是关于如何在随机森林中遍历决策树并存储可预测特定目标的节点的教程.

python classification machine-learning feature-selection scikit-learn

9
推荐指数
1
解决办法
263
查看次数

如何在机器学习数据预处理中处理日期变量

我有一个数据集,其中包含其他变量的事务时间戳,格式为26-09-2017 15:29:32.我需要找到销售的可能相关性和预测(比如在逻辑回归中).我的问题是:

  1. 如何处理日期格式?我可以将它转换为一个数字(如excel自动执行)吗?我应该把它分成更多变量,如日,月,年,小时,分钟,秒?任何其他可能的建议?
  2. 如果我想每年添加不同的周数怎么办?我应该添加变量如342017(2017年第34周)?
  3. 我可以在第二季的问题2中做同样的事情吗?
#         Datetime               Gender        Purchase
1    23/09/2015 00:00:00           0             1
2    23/09/2015 01:00:00           1             0
3    25/09/2015 02:00:00           1             0
4    27/09/2015 03:00:00           1             1
5    28/09/2015 04:00:00           0             0
Run Code Online (Sandbox Code Playgroud)

python r machine-learning feature-selection logistic-regression

9
推荐指数
2
解决办法
1万
查看次数

解释sklearn中的逻辑回归特征系数值

我已经为我的数据拟合了逻辑回归模型。想象一下,我有四个特征:1)参与者收到的条件,2)参与者是否对所测试的现象有任何先验知识/背景(实验后问卷中的二元反应),3)在实验任务上花费的时间,以及4) 参与者年龄。我试图预测参与者最终是选择选项 A 还是选项 B。我的逻辑回归输出以下特征系数 clf.coef_

[[-0.68120795 -0.19073737 -2.50511774  0.14956844]]
Run Code Online (Sandbox Code Playgroud)

如果选项 A 是我的正类,这个输出是否意味着特征 3 是二元分类中最重要的特征,并且与选择选项 A 的参与者有负相关(注意:我没有标准化/重新缩放我的数据)?我想确保我对系数的理解以及我可以从中提取的信息是正确的,因此我不会在我的分析中做出任何概括或错误假设。

谢谢你的帮助!

python feature-selection scikit-learn logistic-regression coefficients

9
推荐指数
1
解决办法
1万
查看次数

SciKit-Learn 标签编码器导致错误“参数必须是字符串或数字”

我有点困惑 - 在这里创建一个 ML 模型。

我正处于尝试从“大”数据框(180 列)中获取分类特征的步骤,并对它们进行单一处理,以便我可以找到特征之间的相关性并选择“最佳”特征。

这是我的代码:

# import labelencoder
from sklearn.preprocessing import LabelEncoder

# instantiate labelencoder object
le = LabelEncoder()

# apply le on categorical feature columns
df = df.apply(lambda col: le.fit_transform(col))
df.head(10)

Run Code Online (Sandbox Code Playgroud)

运行它时,我收到以下错误:

TypeError: ('argument must be a string or number', 'occurred at index LockTenor')

所以我转到 LockTenor 字段并查看所有不同的值:

df.LockTenor.unique()
Run Code Online (Sandbox Code Playgroud)

结果如下:

array([60.0, 45.0, 'z', 90.0, 75.0, 30.0], dtype=object)

对我来说看起来像所有的字符串和数字。错误是否是因为它是浮点数而不一定是 INT 引起的?

python machine-learning feature-selection scikit-learn one-hot-encoding

9
推荐指数
2
解决办法
2万
查看次数

编码风格的监督学习 - 特征选择(Scikit Learn)

我正在研究是否可以根据编码风格自动计算学生代码的得分.这包括避免重复代码,注释掉代码,变量命名错误等等.

我们正在尝试根据过去学期的作文分数(从1-3开始)学习,这很好地导致了有监督的学习.基本思想是我们从学生的提交中提取特征,并创建feature_vector,然后使用scikit-learn通过逻辑回归运行它.我们还尝试了各种各样的事情,包括在特征向量上运行PCA以减少维数.

我们的分类器只是猜测最频繁的类,即2分.我相信这是因为我们的功能无论如何都不能预测.有监督的学习算法是否还有其他可能的原因来猜测优势类?有什么方法可以防止这种情况吗?

我认为这是因为这些功能不具备预测性,有没有办法确定"好"的功能是什么?(好的,我的意思是可辨别的或预测性的).

注意:作为一项辅助实验,我们通过对已经评分的读者成绩分配测试了过去成绩的一致性.只有55%的人给出了相同的项目成分(1-3).这可能意味着这个数据集根本无法归类,因为人类甚至无法进行一致评分.关于其他想法的任何提示?或者事实上是否真的如此?

功能包括:重复代码行数,平均函数长度,1个字符变量数,包含注释掉代码的行数,最大行长度,未使用导入计数,未使用变量,未使用参数.还有一些...我们将所有功能可视化,并发现虽然平均值与分数相关,但变化非常大(不太有希望).

编辑:我们项目的范围:我们只是试图从一个特定项目(给出骨架代码)中学习.我们还不需要概括.

statistics machine-learning feature-extraction feature-selection supervised-learning

8
推荐指数
1
解决办法
499
查看次数

包装方法和信息过滤中的特征选择?

我在知名人士的老中考试中看到一个例子Tom Mitchell,如下:

考虑在总共1000个特征的情况下学习分类器.其中50个是关于课堂的真实信息.另外50个功能是前50个功能的直接副本.最终的900个功能不提供信息.假设有足够的数据可靠地评估功能的有用性,并且功能选择方法使用了良好的阈值.

How many features will be selected by mutual information ?ltering?
Run Code Online (Sandbox Code Playgroud)

解决方案:100

How many features will be selected by a wrapper method?
Run Code Online (Sandbox Code Playgroud)

解决方案:50

我的挑战是如何实现这些解决方案?我做了很多尝试,但无法理解这背后的想法.

pattern-recognition classification machine-learning data-mining feature-selection

8
推荐指数
1
解决办法
499
查看次数

Sklearn 单变量选择:特征是恒定的

当尝试对 sklearn 中的某些数据使用特征选择和 f_classif(方差分析测试)时,我收到以下警告消息:

C:\Users\Alexander\Anaconda3\lib\site-packages\sklearn\feature_selection\univariate_selection.py:113:UserWarning:功能...是不变的。用户警告)

警告消息指示的特征是恒定的,显然 p 值为 0。我无法找到有关导致此警告的原因的任何信息。此特定函数的 github 文件位于:https://github.com/scikit-learn/scikit-learn/blob/master/sklearn/feature_selection/univariate_selection.py

任何帮助将不胜感激,谢谢。

python feature-selection scikit-learn

8
推荐指数
1
解决办法
7152
查看次数