Я классифицирую 2-классные, 1-D данные, используя классификатор scikit-learn LDA в конвейере машинного обучения, который я создал.Произошло следующее исключение:
ValueError: Ошибка расчета размера внутреннего рабочего массива: -10
в следующей строке:
LinearDiscriminantAnalysis.fit (X, y)
, где X = [-5e15, -5e15, -5e15, 5.7e16] и y = [0, 0, 0, 1], оба типа данных float64
Кроме того, на консоль была выведена следующая ошибка:
Intel MKL ОШИБКА: неверный параметр 10 при входе в DGESDD
После быстрого поиска в Google,dgesdd - это функция в LAPACK , на которую scikit-learn опирается .Документация dgesdd сообщает нам, что функция вычисляет декомпозицию сингулярных значений (SVD) реальной матрицы M-N A.
Возвращаясь к оригиналуисключение, я обнаружил, что это было поднято в scipy.linalg.lapack.py в функции _compute_lwork.Эта функция принимает в качестве входных данных функцию, которая в данном случае, на мой взгляд, является функцией dgesdd.CTRL-F "-10" на странице документации dgesdd дает логику для этого кода ошибки, но я не знаю Fortran, поэтому я не совсем уверен, что это значит.
Хочу поспорить, чтоРасчет SVD не выполняется из-за (1) больших значений в массиве X или (2) того факта, что 3 значения в массиве X являются точно такими же числами.
Я буду продолжать читать SVD и его ограничения.Любая идея о том, как избежать этой ошибки, будет чрезвычайно полезна.
Вот скриншот ошибки