SKlearn VoteClassifier () клонировала модель, показывающую NOneType для параметра - PullRequest
0 голосов
/ 27 марта 2020

У меня есть базовый класс оценщика, который я создал, который обучает NN из TF.keras

что-то вроде:

TF_NN(BaseEstimator):
    def __init__(self,...,parameter='defaultstring', metric='accuracy', ...):
        self.parameter = parameter
        self.metric=metric
        ... #build a tf.keras n_network + methods + other assignments

Теперь вот часть, которая является странной. Я запускаю этот код

nn = TF_NN(...,parameter='some_string',...)
clf = VotingClassifier( [('nn', nn), (...), (...)] )
clf.fit(x,y)

, и когда я проверяю параметры класса clf после запуска clf.fit, я получаю это - здесь левая рука - это выполнение кода, правая сторона знака равенства - возвращаемое значение как после запуска clf.fit (). Другими словами, это не операторы присваивания в моем коде. Это просто сохраненные значения после запуска fit (), показывающие, что клонированные копии, которые являются подогнанными оценщиками, больше не содержат значения для значения параметра. С другой стороны, параметр 'metric' работает нормально.

print(clf.estimators[0][1].parameter) #returns 'some_string'
print(clf.estimators_[0][1].parameter) #returns {NoneType} None 
print(clf.estimators[0][1].metric) #returns 'accuracy'
print(clf.estimators_[0][1].metric) #returns 'accuracy' 

Любая причина, почему это может происходить? Это не происходит для всех моих входных параметров, как вы можете видеть. Как и на этапе клонирования clf.fit, он пропустил один из моих параметров.

И если я вместо этого сделаю это в своем классе TF_NN init :

self.parameter = 'some_string'

он отлично работает, когда и оценщики, и оценщики_ показывают правильное значение.

По сути, конечной целью этапа 1 является наличие классификатора голосования, который может использовать тензор потока NN в качестве одного из критериев голосования. Для чего это стоит,

parameter == outputActivation #activation used on output Layer. softmax for multiclass classification.
...