我使用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)
.
我想查询的数组在执行期间不会更改:
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]
?
python 文档提出的弱引用的用例之一是保留对大型缓存对象的引用而不增加其引用计数,从而不会阻止它们在时机成熟时被垃圾收集。
但是,垃圾收集不能保证在对象的引用计数达到零后立即发生,并且弱引用仅在 GC 收集其目标时才会失效。因此,基本上可以保留对无效对象的有效(非死)weakref - PyPy 损坏的 WeakSet 就是这种情况的一个例子。
因此,假设一个具有对抗性的垃圾收集器,是否存在弱引用为用户提供确定性且有用的行为的场景(除了终结器之外)?
我有一个数据集,其中包括数字和分类功能,其中分类功能可以包含标签列表.例如:
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转换它们,然后重新粘贴数字特征.
有更优雅的方式吗?