AttributeError: у объекта 'Pipeline' нет атрибута'partal_fit ' - PullRequest
0 голосов
/ 10 мая 2018

Я пытаюсь обучить свой двоичный классификатор огромным данным. Раньше я мог выполнять тренировку, используя подходящий метод sklearn. Но теперь у меня есть больше данных, и я не могу справиться с ними. Я пытаюсь подгонять их частично, но не могу избавиться от ошибок. Как я могу тренировать свои огромные данные постепенно? Применяя мой предыдущий подход, я получаю ошибку об объекте конвейера. Я просмотрел примеры из Incremental Learning , но все еще выполнение этих примеров кода дает ошибку. Я буду признателен за любую помощь.

X,y = transform_to_dataset(training_data)

clf = Pipeline([
    ('vectorizer', DictVectorizer()),
    ('classifier', LogisticRegression())])

length=len(X)/2

clf.partial_fit(X[:length],y[:length],classes=np.array([0,1]))

clf.partial_fit(X[length:],y[length:],classes=np.array([0,1]))

ERROR

AttributeError: 'Pipeline' object has no attribute 'partial_fit'

ПРОБНЫЕ ОБРАЗЦЫ ДАННЫХ КОДОВ:

clf=SGDClassifier(alpha=.0001, loss='log', penalty='l2', n_jobs=-1,
                      #shuffle=True, n_iter=10, 
                      verbose=1)
length=len(X)/2

clf.partial_fit(X[:length],y[:length],classes=np.array([0,1]))

clf.partial_fit(X[length:],y[length:],classes=np.array([0,1]))

ERROR

File "/home/kntgu/anaconda2/lib/python2.7/site-packages/sklearn/utils/validation.py", line 573, in check_X_y
ensure_min_features, warn_on_dtype, estimator)
File "/home/kntgu/anaconda2/lib/python2.7/site-packages/sklearn/utils/validation.py", line 433, in check_array
array = np.array(array, dtype=dtype, order=order, copy=copy)
TypeError: float() argument must be a string or a number

Мой набор данных состоит из нескольких предложений с их частью речевых тегов и отношений зависимости.

Thanks  NN  0   root
to  IN  3   case
all DT  1   nmod
who WP  5   nsubj
volunteered VBD 3   acl:relcl
.   .   1   punct

You PRP 3   nsubj
will    MD  3   aux
remain  VB  0   root
as  IN  5   case
alternates  NNS 3   obl
.   .   3   punct

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

Я сталкивался с той же проблемой, что и SGDClassifier внутри конвейера, не поддерживающего инкрементальное обучение (то есть параметр part_fit).Есть способ, которым мы могли бы сделать инкрементное обучение, используя sklearn, но это не с partial_fit, а с warm_start.В sklearn LogisticRegression и RandomForest есть два алгоритма, которые поддерживают warm_start.

теплый запуск - еще один способ делать incremental_learning.читать здесь

0 голосов
/ 10 мая 2018

A Pipeline объект из scikit-learn не имеет partial_fit, как видно из документов .

Причина этого в том, что вы можете добавить к этому объекту Pipeline любой желаемый оценщик, и не все из них реализуют partial_fit. Вот список поддерживаемых оценщиков .

Как вы видите, используя SGDClassifier (без Pipeline), вы не получите эту ошибку "без атрибута", потому что этот конкретный оценщик поддерживается. Сообщение об ошибке, которое вы получаете для этого, вероятно, связано с текстовыми данными. Вы можете использовать LabelEncoder для обработки нечисловых столбцов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...