我遇到了这个问题:
一个包含100个特征的XGBoost模型(.pickle文件,在V0.7.post3下构造),但我在模型(model.feature_importances_)中发现55个特征的重要性为0(如下面的矩阵);
另外,当我将泡菜文件转换为PMML (启动在线)时,PMML文件中只有45个特性(那些显然带有importance>0 );
所以,我的问题是:
--为什么重要性等于0的特性最终出现在XGB模型中?如果他们没有真正参与/参与分裂,为什么他们会留在这个模型中呢?
## Feature importance maxtrix from model for demo
ar
我目前正在研究随机森林分类器。随机森林分类器的参数之一是“准则”,它有两个选项:基尼系数或熵。基尼系数越低越好,熵值越高越好。默认情况下,gini是随机森林分类器的标准。
sklearn提供了一个名为feature_importances_的属性,我们可以在其中获取所提供的属性/特性的值。通过使用,我们可以选择一些特征,并使用"threshold and SelectFromModel“消除一些特征
我的疑问是,这些feature_importances_是根据什么计算的?假设默认标准"Gini“可用。如果我假设feature_importances_是“基尼重要性”,那么低值
编辑:我找到了答案--见下文
我在iPhone (有限的图形速度)上有一个3D游戏世界,我已经在根据每个形状的大小和与摄像头的距离来控制是否在屏幕上绘制每个形状。就像..。
if (how_big_it_looks_from_the_camera > constant) then draw
我现在想要做的是考虑到正在绘制的形状的数量,以便在游戏世界的繁忙区域中,我可以比其他情况下画得更少。
我试图通过将how_big_it_looks除以上一帧绘制的形状数量来实现这一点(好吧,这是这个的平方根,但我在简化-问题是相同的)。
if (how_big_it_looks / shapes_dr
我知道下面的特征选择方法
( a)基于树的模型(如Random Forest和Xgboost、GradientBoost等)中可用的特征重要性方法。
( b) statsmodel.logistic regression,它在其摘要输出中为我们提供了包含是否variables are significant or not (P-value)的结果
( c) SelectKbest,它使用ANOVA、Chi-square等计算input variable对target attribute的影响。
但是不幸的是,对于b和c方法,它没有考虑特性交互。我说的对吗?它通过考虑目标变量的每一列来工作。
然
今天,我试着写了一个程序,它可以接收一段文字,并创建一个图表来显示不同单词之间的关系。一切都很顺利,除了我不知道如何以更好的方式找到联系。更好的方式意味着类似于mind map.This是一个简单的输入,但我想创建一个程序,它可以从维基百科中提取一段内容,并给出一个非常好的思维导图。对于下面的输入,我从我的程序的点格式输出中得到的图形是
roses are red line_end
sky is blue line_end
life is beautiful line_end
everything is going fine line_end file_end
但是对于像这样的输入,
我有以下问题。我用Keras建立了一个神经网络。这是我的部件 of my dataFrame。我的DataFrame看起来像:
Id MainCl Class Other Options...
1016178069 0 30 1
1016178012 0 25 0
我的结果向量给出了结果被分类的概率。示例:
Prob_isClass_A Prob_isClass_b
0.756686 0.243314
为什么在决策树分类器中特征重要性的顺序会随着最大深度的选择而变化?
我使用了合成数据,但我没有共享代码,因为它是不必要的和长的。我只是想知道当我改变最大深度时背后的逻辑,为什么重要特性的顺序会发生变化。
dec_tree_clf = tree.DecisionTreeClassifier(max_depth=4, random_state=23, criterion="entropy")
dec_tree_clf.fit(X_data, y_data)
features importance
z 0.267464
n 0.12469
我正在用sklearn.ensemble.GradientBoostingRegressor训练一个模型。
我的数据集包括不同的变量,包括数值变量和类别变量。,因为sklearn不支持分类变量,所以在输入Regressor之前,我使用DictVectorizer来转换这些分类特性。下面是我的一段代码:
# process numeric and categorical variables separately
lsNumericColumns = []
lsCategoricalColumns = []
for col in dfTrainingSet.columns:
if (dfT