该文件是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/。
SklearnIndividual
基类:BaseIndividual
Source code in tpot2/search_spaces/base.py
| class SklearnIndividual(tpot2.BaseIndividual):
def __init_subclass__(cls):
cls.crossover = cls.validate_same_type(cls.crossover)
def __init__(self,) -> None:
super().__init__()
def mutate(self, rng=None):
return
def crossover(self, other, rng=None, **kwargs):
return
@final
def validate_same_type(func):
def wrapper(self, other, rng=None, **kwargs):
if not isinstance(other, type(self)):
return False
return func(self, other, rng=rng, **kwargs)
return wrapper
def export_pipeline(self, **kwargs) -> BaseEstimator:
return
def unique_id(self):
"""
Returns a unique identifier for the individual. Used for preventing duplicate individuals from being evaluated.
"""
return self
#TODO currently TPOT2 population class manually uses the unique_id to generate the index for the population data frame.
#alternatively, the index could be the individual itself, with the __eq__ and __hash__ methods implemented.
# Though this breaks the graphpipeline. When a mutation is called, it changes the __eq__ and __hash__ outputs.
# Since networkx uses the hash and eq to determine if a node is already in the graph, this causes the graph thing that
# This is a new node not in the graph. But this could be changed if when the graphpipeline mutates nodes,
# it "replaces" the existing node with the mutated node. This would require a change in the graphpipeline class.
# def __eq__(self, other):
# return self.unique_id() == other.unique_id()
# def __hash__(self):
# return hash(self.unique_id())
#number of components in the pipeline
def get_size(self):
return 1
@final
def export_flattened_graphpipeline(self, **graphpipeline_kwargs) -> tpot2.GraphPipeline:
return flatten_to_graphpipeline(self.export_pipeline(), **graphpipeline_kwargs)
|
unique_id()
返回个体的唯一标识符。用于防止重复评估个体。
Source code in tpot2/search_spaces/base.py
| def unique_id(self):
"""
返回个体的唯一标识符。用于防止重复个体被评估。
"""
return self
|