小编Noa*_*men的帖子

如何将标签添加到ctree(包方)的终端节点?

我使用ctree创建了一个二叉分类树.我希望每个终端节点包含与该节点关联的行名称.我怎么能做到这一点?

例如,对于下面的数据集,我希望最左边的节点列出所有年龄<23岁(Abner到Abudemio)和最右边的Abundiantus到Acelin的人的名字.

      names       age height young   
1     Abner       18   76.1   yes
2     Abraham     19   77.0   yes
3     Abram       20   78.1   yes
4     Abrasha     21   78.2   yes
5     Absalom     22   78.8   yes
6     Abudemio    23   79.7   yes
7     Abundiantus 24   79.9    no
8     Acacio      25   81.1    no
9     Acario      26   81.2    no
10    Accursius   27   81.8    no
11    Ace         28   82.8    no
12    Acelin      29   83.5    no
Run Code Online (Sandbox Code Playgroud)

. 在此输入图像描述

r party decision-tree

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

Perl:如何同时访问数组中的多个非连续元素?

我想查询的数组在执行期间不会更改:

my @const_arr=qw( a b c d e f g);
Run Code Online (Sandbox Code Playgroud)

输入是一个包含我想要访问的索引的字符串,例如:

my $str ="1,4";
Run Code Online (Sandbox Code Playgroud)

是否有某些东西(除了迭代索引之外$str)沿着@subarray = @const_arr[$str]那条线 会导致@subarray包含[b,e]

perl

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

如果当对象的引用计数达到零时不能保证Python的weakref死亡,那么它的用例是什么?

python 文档提出的弱引用的用例之一是保留对大型缓存对象的引用而不增加其引用计数,从而不会阻止它们在时机成熟时被垃圾收集

但是,垃圾收集不能保证在对象的引用计数达到零后立即发生,并且弱引用仅在 GC 收集其目标时才会失效。因此,基本上可以保留对无效对象的有效(非死)weakref - PyPy 损坏的 WeakSet 就是这种情况的一个例子

因此,假设一个具有对抗性的垃圾收集器,是否存在弱引用为用户提供确定性且有用的行为的场景(除了终结器之外)?

python weak-references

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

sklearn的LabelBinarizer可以和DictVectorizer类似吗?

我有一个数据集,其中包括数字和分类功能,其中分类功能可以包含标签列表.例如:

RecipeId   Ingredients    TimeToPrep
1          Flour, Milk    20
2          Milk           5
3          Unobtainium    100
Run Code Online (Sandbox Code Playgroud)

如果我每个配方只有一个Ingeredient,DictVecorizer将优雅地处理编码到适当的虚拟变量:

from sklearn feature_extraction import DictVectorizer
RecipeData=[{'RecipeID':1,'Ingredients':'Flour','TimeToPrep':20}, {'RecipeID':2,'Ingredients':'Milk','TimeToPrep':5}
,{'RecipeID':3,'Ingredients':'Unobtainium','TimeToPrep':100}
dc=DictVectorizer()
dc.fit_transform(RecipeData).toarray()
Run Code Online (Sandbox Code Playgroud)

给出输出:

array([[   1.,    0.,    0.,    1.,   20.],
       [   0.,    1.,    0.,    2.,    5.],
       [   0.,    0.,    1.,    3.,  100.]])
Run Code Online (Sandbox Code Playgroud)

在将分类标签编码为布尔特征时,可以正确处理整数要素.

但是,DictVectorizer无法处理列表值功能和扼流圈

RecipeData = [{'RecipeID':1,'成分':['面粉','牛奶'],'TimeToPrep':20},{'RecipeID':2,'成分':'牛奶','TimeToPrep': 5},{'RecipeID':3,'成分':'Unobtainium','TimeToPrep':100}

LabelBinarizer正确处理此问题,但必须分别提取和处理分类变量:

from sklearn.preprocessing import LabelBinarizer
lb=LabelBinarizer()
lb.fit_transform([('Flour','Milk'), ('Milk',), ('Unobtainium',)])
array([[1, 1, 0],
       [0, 1, 0],
       [0, 0, 1]])
Run Code Online (Sandbox Code Playgroud)

这就是我目前的做法 - 从混合数字/分类输入数组中提取包含标签列表的分类特征,使用LabelBinarizer转换它们,然后重新粘贴数字特征.

有更优雅的方式吗?

python machine-learning scikit-learn

0
推荐指数
1
解决办法
1028
查看次数