- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 scikit learn 来训练分类模型。我的训练数据中既有离散特征也有连续特征。我想使用最大互信息进行特征选择。如果我有向量 x
和标签 y
并且前三个特征值是离散的,我可以像这样得到 MMI 值:
mutual_info_classif(x, y, discrete_features=[0, 1, 2])
SelectKBest(score_func=mutual_info_classif).fit(x, y)
SelectKBest
.是否有一些我忽略的语法可以做到这一点,或者我是否必须编写自己的评分函数包装器?
最佳答案
不幸的是,我找不到 SelectKBest 的这个功能。
但是我们可以轻松做的是扩展 SelectKBest
作为我们的自定义类来覆盖 fit()
将被调用的方法。
这是当前 fit()
方法 SelectKBest(取自 source at github)
# No provision for extra parameters here
def fit(self, X, y):
X, y = check_X_y(X, y, ['csr', 'csc'], multi_output=True)
....
....
# Here only the X, y are passed to scoring function
score_func_ret = self.score_func(X, y)
....
....
self.scores_ = np.asarray(self.scores_)
return self
SelectKBestCustom
与改变
fit()
.我已经从上述来源复制了所有内容,只更改了两行(对此发表了评论):
from sklearn.utils import check_X_y
class SelectKBestCustom(SelectKBest):
# Changed here
def fit(self, X, y, discrete_features='auto'):
X, y = check_X_y(X, y, ['csr', 'csc'], multi_output=True)
if not callable(self.score_func):
raise TypeError("The score function should be a callable, %s (%s) "
"was passed."
% (self.score_func, type(self.score_func)))
self._check_params(X, y)
# Changed here also
score_func_ret = self.score_func(X, y, discrete_features)
if isinstance(score_func_ret, (list, tuple)):
self.scores_, self.pvalues_ = score_func_ret
self.pvalues_ = np.asarray(self.pvalues_)
else:
self.scores_ = score_func_ret
self.pvalues_ = None
self.scores_ = np.asarray(self.scores_)
return self
clf = SelectKBestCustom(mutual_info_classif,k=2)
clf.fit(X, y, discrete_features=[0, 1, 2])
discrete_features
调用
fit()
时可以为参数分配不同的值.
SelectKBest
与
mutual_info_classif
,暂时(只是分析结果),我们也可以做一个自定义函数,可以调用
mutual_info_classif
内部硬编码
discrete_features
.类似的东西:
def mutual_info_classif_custom(X, y):
# To change discrete_features,
# you need to redefine the function each time
# Because once the func def is supplied to selectKBest, it cant be changed
discrete_features = [0, 1, 2]
return mutual_info_classif(X, y, discrete_features)
selector = SelectKBest(mutual_info_classif_custom).fit(X, y)
关于scikit-learn - 如何使用来自离散和连续特征混合的互信息来 SelectKBest?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43643278/
我正在使用 scikit learn 来训练分类模型。我的训练数据中既有离散特征也有连续特征。我想使用最大互信息进行特征选择。如果我有向量 x和标签 y并且前三个特征值是离散的,我可以像这样得到 MM
我使用 Scikit learn selectKbest 选择最佳特征,从 900 个特征中选择大约 500 个。如下,其中 d 是所有特征的数据框。 from sklearn.feature_sel
我想将特征选择的结果可视化为按降序排列的条形图。(仅前 10 个特征)我如何使用 matplotlib 来做到这一点?您可以在下面看到代码。 filename_train = 'C:\Users\x.
我试图通过将特征选择方法应用于我的数据集来找到最有值(value)的特征。我现在使用 SelectKBest 函数。我可以生成分值并根据需要对它们进行排序,但我不明白这个分值是如何计算的。我知道理论上
我在 sklearn 中使用 SelectKBest() 类进行特征选择。 SelectKBest() 可以将可调用的评分函数作为输入。在这种情况下,我想使用 mutual_info_regressi
在上课时,我被困在我认为必须是小问题的地方。我想用 SelectKBest 找出最重要的特征是什么(我将 k 从 2,4,6,8 改变) 我加载数据 data_dict = pickle.load(o
给定以下数据: import pandas as pd from sklearn.feature_selection import SelectKBest from sklearn.feature_s
我正在使用 SelectKBest()在 Sklearn 的 Pipeline()类将特征数量从 30 个减少到 5 个最佳特征。当我拟合分类器时,我会得到与特征选择不同的测试结果。但是我在我的代码中
我需要从数据集中为回归任务选择一些特征。但是数值来自不同的范围。 from sklearn.datasets import load_boston from sklearn.feature_selec
我想使用 SelectKBest 选择前 K 个特征并运行 GaussianNB: selection = SelectKBest(mutual_info_classif, k=300) data_t
我的问题是我应该首先对整个数据集执行 selectkbest sklearn 函数进行特征选择,然后将数据集划分为训练集和测试集,还是应该执行 selectkbest训练和测试数据集分区后?在第二个中
我正在尝试获取我的数据集的所有特征的分数。 file_data = numpy.genfromtxt(input_file) y = file_data[:,-1] X = file_data[:,0
我是 scikit-learn 和 python 的初学者,我使用 feature_selection 包中的 SelectKBest 尝试了这段看起来非常简单的代码。 train = pd.
我从 sklearn 实现了 SelectKBest,我想获得 K 个最佳列的名称,而不仅仅是每个列的值。 我需要做什么? 我的代码: X_new = SelectKBest(chi2, k=2).f
我正在尝试自动特征工程和选择,为此,我使用了 sklearn 中提供的波士顿房价数据集。 . from sklearn.datasets import load_boston import panda
我尝试在我的 SelectKBest 变量上使用 .fit(),一旦我的程序命中 skb.fit(X, y),我就会不断收到错误。不知道为什么。 我收到错误:fit % (self.score_fun
我有一个数据集,我尝试使用 SelectKBest 和 Chi2 获取特征重要性,但 SelectKBest 给出了分数特征为nan。 数据文件和代码文件位于 this链接 # Path to the
我正在尝试在多标签场景中将特征选择作为 scikit-learn 管道的一部分。我的目的是对于给定的 k 选择最佳的 K 个特征。 这可能很简单,但我不明白如何在这种情况下获取选定的特征索引。 在常规
我试图让 SelectKBest 示例的一个稍微修改的版本工作,但不断收到 ValueError("Unknown label type: %s"% repr(ys)) 这是我的代码: # Impor
我想做监督学习。 到目前为止,我知道对所有特征进行监督学习。 不过,我也想对 K 个最佳特征进行实验。 我阅读了文档,发现在 Scikit 中学习有 SelectKBest 方法。 不幸的是,在找到这
我是一名优秀的程序员,十分优秀!