С течением времени я собрал несколько простейших сит. Самый быстрый на моем компьютере следующий:
from time import time
# 175 ms for all the primes up to the value 10**6
def primes_sieve(limit):
a = [True] * limit
a[0] = a[1] = False
#a[2] = True
for n in xrange(4, limit, 2):
a[n] = False
root_limit = int(limit**.5)+1
for i in xrange(3,root_limit):
if a[i]:
for n in xrange(i*i, limit, 2*i):
a[n] = False
return a
LIMIT = 10**6
s=time()
primes = primes_sieve(LIMIT)
print time()-s
Полагаю, вы можете полностью избавиться от словаря. Вот возможный способ создания экземпляров разных классификаторов с разными параметрами:
from sklearn.ensemble import RandomForestClassifier, BaggingClassifier
for model in [RandomForestClassifier, BaggingClassifier]:
for n in [5, 10, 20]:
clf = model(random_state=12345, n_estimators=n)
print(clf)
Приведенный выше код дает:
RandomForestClassifier(bootstrap=True, class_weight=None, criterion='gini',
max_depth=None, max_features='auto', max_leaf_nodes=None,
min_impurity_decrease=0.0, min_impurity_split=None,
min_samples_leaf=1, min_samples_split=2,
min_weight_fraction_leaf=0.0, n_estimators=5, n_jobs=1,
oob_score=False, random_state=12345, verbose=0,
warm_start=False)
RandomForestClassifier(bootstrap=True, class_weight=None, criterion='gini',
max_depth=None, max_features='auto', max_leaf_nodes=None,
min_impurity_decrease=0.0, min_impurity_split=None,
min_samples_leaf=1, min_samples_split=2,
min_weight_fraction_leaf=0.0, n_estimators=10, n_jobs=1,
oob_score=False, random_state=12345, verbose=0,
warm_start=False)
RandomForestClassifier(bootstrap=True, class_weight=None, criterion='gini',
max_depth=None, max_features='auto', max_leaf_nodes=None,
min_impurity_decrease=0.0, min_impurity_split=None,
min_samples_leaf=1, min_samples_split=2,
min_weight_fraction_leaf=0.0, n_estimators=20, n_jobs=1,
oob_score=False, random_state=12345, verbose=0,
warm_start=False)
BaggingClassifier(base_estimator=None, bootstrap=True,
bootstrap_features=False, max_features=1.0, max_samples=1.0,
n_estimators=5, n_jobs=1, oob_score=False, random_state=12345,
verbose=0, warm_start=False)
BaggingClassifier(base_estimator=None, bootstrap=True,
bootstrap_features=False, max_features=1.0, max_samples=1.0,
n_estimators=10, n_jobs=1, oob_score=False, random_state=12345,
verbose=0, warm_start=False)
BaggingClassifier(base_estimator=None, bootstrap=True,
bootstrap_features=False, max_features=1.0, max_samples=1.0,
n_estimators=20, n_jobs=1, oob_score=False, random_state=12345,
verbose=0, warm_start=False)
Кажется, вы добавляете новые значения. для обновления необходимо присвоить значение с индексированным массивом