__init__() takes from 1 to 2 positional arguments but 3 were given (1C: Искусственный интеллект)

Пару дней назад установил ИИ на 1С с определенными библиотеками, всё работал без проблем. Решил обновить пакеты библиотек и начало выдавать такую ошибку. Похожие вопросы находил, но не принесли никакой пользы. Прошу помощи!

Сама ошибка: Сама ошибка:

Вот все связанные системы:

C:\ITILServer\ITILServer.py

print('Задача Поиск по базе знаний')
print(' ../ai/itil/knowledge/search')
print(' ../ai/itil/knowledge/articles')
print()
ITILSearchModel = SearchModel(dataset_max_rows=args.max_row_dataset,
                              max_word_in_bag=args.max_word_in_bag,
                              feature_on_class=args.feature_on_class)
ITILArticlesModel = ArticlesModel(dataset_max_rows=args.max_row_dataset,
                                  max_word_in_bag=args.max_word_in_bag,
                                  feature_on_class=args.feature_on_class)

print()


from text_predict import (DatasetManagement,
                      PredictModelProba as PredictModel)

C:\ITILServer\Knowledge\Search.py

class PresetModel:
def __init__(self, min_proba=0.25, dataset_max_rows=0,
             max_word_in_bag=10000, feature_on_class=3):
    """Классификация базы знаний.
     - min_proba=0.25: Порог уверенности в ответах
     - dataset_max_rows=0: Ограничение максимального количества строк в обучающей выборке
     - max_word_in_bag=1000: Ограничение максимального количества слов в мешке слов
     - feature_on_class=3: Количество нейронов на один класс в скрытом слое НС
                           (если 0 - используется линейная модель LogisticRegression)
    """
    DatasetMng = DatasetManagement()
    df_raw = DatasetMng.get_rawdata('Knowledge/data/knowledgebase.csv')

    df = df_raw.drop_duplicates(keep='last')
    df = DatasetMng.dataset_balance(df, 'Описание',
                                    clf_min_size=0, clf_use_resample=False,
                                    dataset_max_rows=dataset_max_rows)
    X, X_test, y, y_test = \
        DatasetMng.get_test_train_data(df['ОписаниеПроблемы'].astype('U').values,
                                       df['Описание'].astype('U').values,
                                       test_size=.01, min_size_to_split=10)

    clf = PredictModel('Классификация базы знаний', X, y, min_proba=min_proba,
                       max_word_in_bag=max_word_in_bag, feature_on_class=feature_on_class)

    clf.score(X_test, y_test)
    self.clf = clf
    print()

C:\ITILServer\text_predict.py (def init)

class PredictModelProba:
"""Модель классификации текстовых данных
в концепции Мешок слов (BagOfWords)
"""
def __init__(self, name, X, y, min_proba=0, max_word_in_bag=10000, feature_on_class=3):
    
    self.name = name
    self.min_proba = min_proba

    print('Инициализация модели ', self.name, ':')
    print(' - обучающих примеров: ', len(y))
    
    self.vectorizer, X_v = get_vectorizer(X, y)
    print(' - размер словаря: ', X_v.shape[1])
    
    self.select_feature, X_f = get_select_feature(X_v, y, max_word_in_bag)
    print(' - количество признаков: ', X_f.shape[1])

    self.feature_names = np.array(self.vectorizer.get_feature_names())[self.select_feature.get_support()]
    
    self.estimator = get_estimator(X_f, y, feature_on_class)

C:\ITILServer\text_predict.py (def get_select_feature)

def get_select_feature(X_v, y, max_feature=10000):

if X_v.shape[1] < max_feature:
    k = 'all'
else:
    k = min(X_v.shape[1]//3, max_feature)

ch2 = SelectKBest(chi2, k)
X_f = ch2.fit_transform(X_v, y)

return ch2, X_f.toarray()

Буду очень благодарен!


Ответы (1 шт):

Автор решения: CrazyElf

Строка, в которой выходит ошибка:

ch2 = SelectKBest(chi2, k)

Проблема в том, что у функции SelectKBest может быть только один позиционный параметр score_func, см. её описание:

class sklearn.feature_selection.SelectKBest(score_func=<function f_classif>, *, k=10)

Параметр k у этой функции не позиционный, а именованный. Его имя нужно указывать в явном виде при вызове функции, как это ни странно выглядит:

ch2 = SelectKBest(chi2, k=k)
                        ^^^
→ Ссылка