模板搜索空间
该文件是TPOT库的一部分。
当前版本的TPOT是由以下人员在Cedars-Sinai开发的: - Pedro Henrique Ribeiro (https://github.com/perib, https://www.linkedin.com/in/pedro-ribeiro/) - Anil Saini (anil.saini@cshs.org) - Jose Hernandez (jgh9094@gmail.com) - Jay Moran (jay.moran@cshs.org) - Nicholas Matsumoto (nicholas.matsumoto@cshs.org) - Hyunjun Choi (hyunjun.choi@cshs.org) - Miguel E. Hernandez (miguel.e.hernandez@cshs.org) - Jason Moore (moorejh28@gmail.com)
TPOT的原始版本主要由宾夕法尼亚大学的以下人员开发: - Randal S. Olson (rso@randalolson.com) - Weixuan Fu (weixuanf@upenn.edu) - Daniel Angell (dpa34@drexel.edu) - Jason Moore (moorejh28@gmail.com) - 以及许多慷慨的开源贡献者
TPOT 是免费软件:您可以根据自由软件基金会发布的 GNU 宽通用公共许可证的条款重新分发和/或修改它,许可证的版本可以是第 3 版,或者(根据您的选择)任何以后的版本。
TPOT 的发布是希望它能有用, 但没有任何保证;甚至没有对 适销性或特定用途适用性的暗示保证。更多详情请参阅 GNU 较宽松通用公共许可证。
您应该已经收到了一份GNU较宽松通用公共许可证的副本,随TPOT一起提供。如果没有,请参见http://www.gnu.org/licenses/。
DynamicUnionPipeline
¶
基类: SearchSpace
Source code in tpot2/search_spaces/pipelines/dynamicunion.py
__init__(search_space, max_estimators=None, allow_repeats=False)
¶
接收一个搜索空间列表。将生成一个顺序长度的管道。管道中的每一步将对应于相同索引中提供的搜索空间。
Source code in tpot2/search_spaces/pipelines/dynamicunion.py
DynamicUnionPipelineIndividual
¶
接受一个搜索空间。 将生成一个最多包含 max_estimators 数量的步骤的 FeatureUnion。 FeatureUnion 的输出将是所有步骤连接在一起的结果。
Source code in tpot2/search_spaces/pipelines/dynamicunion.py
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 | |
EstimatorNodeIndividual
¶
请注意,ConfigurationSpace 不支持将 None 作为参数。相反,请使用特殊字符串 "
参数:
| 名称 | 类型 | 描述 | 默认值 |
|---|---|---|---|
method |
type
|
要使用的估计器的类 |
必填 |
space |
ConfigurationSpace | dict
|
要使用的超参数空间。如果传递了字典,则超参数是固定的,不会进行学习。 |
required |
Source code in tpot2/search_spaces/nodes/estimator_node.py
FSSIndividual
¶
Source code in tpot2/search_spaces/nodes/fss_node.py
__init__(subsets, rng=None)
¶
一个用于表示特定FeatureSetSelector的个体。 FeatureSetSelector选择预定义特征子集列表的特征列表。
此实例最初将选择一个集合。变异和交叉可以将选定的子集与另一个交换。
参数:
| 名称 | 类型 | 描述 | 默认值 |
|---|---|---|---|
subsets |
str or list
|
设置FeatureSetSeletor将从哪些子集中选择,如果在配置字典中设置为选项。 如果使用Pandas数据框,特征由列名定义;如果使用numpy数组,特征由对应的索引整数定义。 - str : 如果是字符串,则假定为包含子集的csv文件的路径。 第一列假定为子集的名称,其余列为子集中的特征。 - list 或 np.ndarray : 如果是列表或np.ndarray,则假定为子集列表(即列表的列表)。 - dict : 字典,其中键是子集的名称,值是特征列表。 - int : 如果是整数,则假定为要生成的子集数量。每个子集将包含一个特征。 - None : 如果为None,则每列将被视为一个子集。每个子集将选择一列。 |
None
|
rng |
(int, Generator)
|
随机数生成器。默认值为None。 仅用于选择第一个子集。 |
None
|
返回:
| 类型 | 描述 |
|---|---|
None
|
|
Source code in tpot2/search_spaces/nodes/fss_node.py
FSSNode
¶
基类: SearchSpace
Source code in tpot2/search_spaces/nodes/fss_node.py
__init__(subsets)
¶
一个用于FeatureSetSelector的搜索空间。 FeatureSetSelector从预定义的特征子集中选择一个特征列表。
参数:
| 名称 | 类型 | 描述 | 默认值 |
|---|---|---|---|
subsets |
str or list
|
设置FeatureSetSeletor将从哪些子集中选择,如果在配置字典中设置为选项。 如果使用Pandas数据框,特征由列名定义;如果使用numpy数组,特征由对应的索引整数定义。 - str : 如果是字符串,则假定为包含子集的csv文件的路径。 第一列假定为子集的名称,其余列为子集中的特征。 - list 或 np.ndarray : 如果是列表或np.ndarray,则假定为子集列表(即列表的列表)。 - dict : 字典,其中键是子集的名称,值是特征列表。 - int : 如果是整数,则假定为要生成的子集数量。每个子集将包含一个特征。 - None : 如果为None,则每列将被视为一个子集。每个子集将选择一列。 |
None
|
返回:
| 类型 | 描述 |
|---|---|
None
|
|
Source code in tpot2/search_spaces/nodes/fss_node.py
FeatureSetSelector
¶
基类:BaseEstimator, SelectorMixin
选择预定义的特征子集。
Source code in tpot2/builtin_modules/feature_set_selector.py
__init__(sel_subset=None, name=None)
¶
创建一个FeatureSetSelector对象。
参数:
| 名称 | 类型 | 描述 | 默认值 |
|---|---|---|---|
sel_subset |
如果 X 是一个数据框,sel_subset 列表中的项必须对应列名 如果 X 是一个 numpy 数组,sel_subset 列表中的项必须对应列索引 int: 单个列的索引 |
None
|
返回:
| 类型 | 描述 |
|---|---|
None
|
|
Source code in tpot2/builtin_modules/feature_set_selector.py
fit(X, y=None)
¶
为特征选择拟合FeatureSetSelector
参数:
| 名称 | 类型 | 描述 | 默认值 |
|---|---|---|---|
X |
训练输入样本。 |
required | |
y |
目标值(分类中对应类的整数,回归中的实数)。 |
None
|
返回:
| 名称 | 类型 | 描述 |
|---|---|---|
self |
object
|
返回估计器的副本 |
Source code in tpot2/builtin_modules/feature_set_selector.py
GeneticFeatureSelectorNode
¶
基类: SearchSpace
Source code in tpot2/search_spaces/nodes/genetic_feature_selection.py
__init__(n_features, start_p=0.2, mutation_rate=0.1, crossover_rate=0.1, mutation_rate_rate=0, crossover_rate_rate=0)
¶
一个生成GeneticFeatureSelectorIndividual的节点。使用遗传算法来选择新的特征子集。
参数:
| 名称 | 类型 | 描述 | 默认值 |
|---|---|---|---|
n_features |
int
|
数据集中的特征数量。 |
required |
start_p |
float
|
选择初始特征子集中给定特征的概率。 |
0.2
|
mutation_rate |
float
|
从特征子集中添加/删除特征的概率。 |
0.1
|
crossover_rate |
float
|
在两个特征子集之间交换特征的概率。 |
0.1
|
mutation_rate_rate |
float
|
改变突变率的概率。(实验性) |
0
|
crossover_rate_rate |
float
|
改变交叉率的概率。(实验性) |
0
|
Source code in tpot2/search_spaces/nodes/genetic_feature_selection.py
GraphKey
¶
一个可以用作图键的类。
参数:
| 名称 | 类型 | 描述 | 默认值 |
|---|---|---|---|
graph |
Graph
|
用作键的图。节点属性用于哈希。 |
必填 |
matched_label |
str
|
用于哈希的节点属性。 |
'label'
|
Source code in tpot2/search_spaces/pipelines/graph.py
GraphPipelineIndividual
¶
定义了一个以有向无环图形式表示的管道搜索空间。如果需要,可以分别定义根节点、叶节点和内部节点的搜索空间。
每个图将有一个单一的根节点作为最终估计器,该估计器从root_search_space中抽取。如果定义了leaf_search_space,则管道中的所有叶节点将从该搜索空间中抽取。如果未定义leaf_search_space,则所有叶节点将从inner_search_space中抽取。
非叶节点或根节点的节点将从inner_search_space中抽取。如果未定义inner_search_space,则不会有内部节点。
cross_val_predict_cv, method, memory, 和 use_label_encoder 在导出管道时传递给 GraphPipeline 对象,而不是直接在搜索空间中使用。
导出到GraphPipeline对象。
参数:
| 名称 | 类型 | 描述 | 默认值 |
|---|---|---|---|
root_search_space |
SearchSpace
|
图中根节点的搜索空间。该节点将是管道中的最终估计器。 |
必填 |
inner_search_space |
SearchSpace
|
图中内部节点的搜索空间。如果未定义,则不会有内部节点。 |
None
|
leaf_search_space |
SearchSpace
|
图中叶节点的搜索空间。如果未定义,叶节点将从inner_search_space中抽取。 |
None
|
crossover_same_depth |
bool
|
如果为True,交叉将仅在图中相同深度的节点之间发生。如果为False,交叉将在任何深度的节点之间发生。 |
False
|
cross_val_predict_cv |
Union[int, Callable]
|
确定内部分类器或回归器中使用的交叉验证拆分策略 |
0
|
method |
str
|
用于内部分类器或回归器的预测方法。如果为'auto',它将尝试按顺序使用predict_proba、decision_function或predict。 |
'auto'
|
memory |
用于缓存节点的输入和输出,以防止重新拟合或计算量大的转换。默认情况下,不执行缓存。如果给出字符串,则是缓存目录的路径。 |
required | |
use_label_encoder |
bool
|
如果为True,则使用标签编码器将标签编码为0到N。如果为False,则不使用标签编码器。 主要用于需要标签为0到N的整数的分类器(XGBoost)。 也可以是sklearn.preprocessing.LabelEncoder对象。如果是这样,则使用该标签编码器。 |
False
|
rng |
用于采样第一个图实例的种子。 |
None
|
Source code in tpot2/search_spaces/pipelines/graph.py
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 | |
crossover(ind2, rng=None)
¶
self 是第一个个体,ind2 是第二个个体 如果 crossover_same_depth 为真,它将在相同的递归深度选择 graphindividuals。 否则,它将从整个图及其子图中随机选择 graphindividuals。
这不影响没有子图的图形。它也不影响不是图形个体的节点。交叉
Source code in tpot2/search_spaces/pipelines/graph.py
GraphSearchPipeline
¶
基类: SearchSpace
Source code in tpot2/search_spaces/pipelines/graph.py
723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 | |
__init__(root_search_space, leaf_search_space=None, inner_search_space=None, max_size=np.inf, crossover_same_depth=False, cross_val_predict_cv=0, method='auto', use_label_encoder=False)
¶
定义了一个以有向无环图形式表示的管道搜索空间。如果需要,可以分别定义根节点、叶节点和内部节点的搜索空间。
每个图将有一个单一的根节点作为最终估计器,该估计器从root_search_space中抽取。如果定义了leaf_search_space,则管道中的所有叶节点将从该搜索空间中抽取。如果未定义leaf_search_space,则所有叶节点将从inner_search_space中抽取。
非叶节点或根节点的节点将从inner_search_space中抽取。如果未定义inner_search_space,则不会有内部节点。
cross_val_predict_cv, method, memory, 和 use_label_encoder 在导出管道时传递给 GraphPipeline 对象,而不是直接在搜索空间中使用。
导出到GraphPipeline对象。
参数:
| 名称 | 类型 | 描述 | 默认值 |
|---|---|---|---|
root_search_space |
SearchSpace
|
图中根节点的搜索空间。该节点将是管道中的最终估计器。 |
必填 |
inner_search_space |
SearchSpace
|
图中内部节点的搜索空间。如果未定义,则不会有内部节点。 |
None
|
leaf_search_space |
SearchSpace
|
图中叶节点的搜索空间。如果未定义,叶节点将从inner_search_space中抽取。 |
None
|
crossover_same_depth |
bool
|
如果为True,交叉将仅在图中相同深度的节点之间发生。如果为False,交叉将在任何深度的节点之间发生。 |
False
|
cross_val_predict_cv |
int
|
用于内部分类器和回归器的cross_val_predict函数的折叠次数。估计器仍将在完整数据集上进行拟合,但下一个节点将获得来自cross_val_predict的输出。
|
0
|
method |
str
|
用于内部分类器或回归器的预测方法。如果为'auto',它将尝试按顺序使用predict_proba、decision_function或predict。 |
'auto'
|
memory |
用于缓存节点的输入和输出,以防止重新拟合或计算量大的转换。默认情况下,不执行缓存。如果给出字符串,则是缓存目录的路径。 |
required | |
use_label_encoder |
bool
|
如果为True,则使用标签编码器将标签编码为0到N。如果为False,则不使用标签编码器。 主要用于需要标签为0到N的整数的分类器(XGBoost)。 也可以是sklearn.preprocessing.LabelEncoder对象。如果是这样,则使用该标签编码器。 |
False
|
Source code in tpot2/search_spaces/pipelines/graph.py
MaskSelector
¶
基类:BaseEstimator, SelectorMixin
选择预定义的特征子集。
Source code in tpot2/search_spaces/nodes/genetic_feature_selection.py
SequentialPipeline
¶
基类: SearchSpace
Source code in tpot2/search_spaces/pipelines/sequential.py
__init__(search_spaces)
¶
SklearnIndividual
¶
基类:BaseIndividual
Source code in tpot2/search_spaces/base.py
TreePipeline
¶
基类: SearchSpace
Source code in tpot2/search_spaces/pipelines/tree.py
__init__(root_search_space, leaf_search_space=None, inner_search_space=None, min_size=2, max_size=10, crossover_same_depth=False)
¶
生成一个可变长度的管道。管道将具有类似于TPOT1的树状结构。
Source code in tpot2/search_spaces/pipelines/tree.py
TupleIndex
¶
TPOT2 使用元组为某些管道搜索空间创建唯一标识符。然而,元组有时无法与 pandas 索引正确交互。 这个类是元组的包装器,允许它用作字典中的键,而不会成为可迭代对象。
另一种选择可能是使唯一ID返回一个字符串,但这不适用于需要特殊对象的图形管道。 此类允许线性管道包含图形管道,同时仍然能够用作字典中的键。
Source code in tpot2/search_spaces/tuple_index.py
UnionPipeline
¶
基类: SearchSpace
Source code in tpot2/search_spaces/pipelines/union.py
__init__(search_spaces)
¶
UnionPipelineIndividual
¶
接收一个搜索空间列表。每个空间是一个SearchSpaces列表。 将生成一个FeatureUnion管道。管道中的每个步骤将对应于相同索引中提供的搜索空间。 生成的管道将是管道中步骤的FeatureUnion。
Source code in tpot2/search_spaces/pipelines/union.py
WrapperPipeline
¶
基类: SearchSpace
Source code in tpot2/search_spaces/pipelines/wrapper.py
__init__(method, space, estimator_search_space, hyperparameter_parser=None, wrapped_param_name=None)
¶
此搜索空间用于包装一个sklearn估计器,该方法接受另一个估计器和超参数作为参数。 例如,这可以与sklearn.ensemble.BaggingClassifier或sklearn.ensemble.AdaBoostClassifier一起使用。
Source code in tpot2/search_spaces/pipelines/wrapper.py
get_template_search_spaces(search_space, classification=True, inner_predictors=None, cross_val_predict_cv=None, **get_search_space_params)
¶
返回一个可以由TPOT优化的搜索空间。
参数:
| 名称 | 类型 | 描述 | 默认值 |
|---|---|---|---|
search_space |
默认使用的搜索空间。如果是字符串,应该是以下之一: - 'linear': 线性管道的搜索空间 - 'linear-light': 线性管道的搜索空间,具有更小、更快的搜索空间 - 'graph': 图管道的搜索空间 - 'graph-light': 图管道的搜索空间,具有更小、更快的搜索空间 - 'mdr': MDR管道的搜索空间 如果是SearchSpace对象,它应该是TPOT的有效搜索空间对象。 |
required | |
classification |
问题是分类问题还是回归问题。 |
True
|
|
inner_predictors |
是否在最终分类器/回归器之前包含额外的分类器/回归器(允许集成)。 对于'linear-light'和'graph-light'搜索空间,默认为False,否则为True。(不用于'mdr'搜索空间) |
None
|
|
cross_val_predict_cv |
用于cross_val_predict的折叠次数。 对于'linear-light'和'graph-light'搜索空间,默认值为0,其他情况下为5。(不用于'mdr'搜索空间) |
None
|
|
get_search_space_params |
传递给 get_search_space 函数的额外参数。 |
{}
|