def fit(self, features, targets):
"""
Trains self.nb_trees number of decision trees.
:param features: Array-like object of shape (nb_samples, nb_features)
containing the training examples
:param targets: Array-like object of shape (nb_samples) containing the
training targets.
"""
if not self.nb_samples:
self.nb_samples = int(len(features) / 10)
with ProcessPoolExecutor(max_workers=self.max_workers) as executor:
random_features = []
for x in range(self.nb_trees):
idxs = np.random.choice(np.arange(len(features)), self.nb_samples, replace=True)
try:
chosen_features = itemgetter(*idxs)(features)
chosen_targets = itemgetter(*idxs)(targets)
except:
chosen_features = features.iloc[idxs].as_matrix()
chosen_targets = targets.iloc[idxs].as_matrix()
random_features.append((x, chosen_features, chosen_targets))
self.trees = list(executor.map(self.train_tree, random_features))
评论列表
文章目录