Я использую Sympy, чтобы выполнить пример базовой регрессии в надежде, что он станет эффективным инструментом для разложения более сложных оценок. Однако я не могу понять, как отображать плотные матрицы для каждого шага процесса. В частности, я зацикливаться пытается представить оценку по методу наименьших квадратов:Sympy - плотная матричная индикация матрицы Inverse
Вот настройки с помощью всего пять наблюдений.
from sympy import *
y=MatrixSymbol('y',5,1)
x=MatrixSymbol('x',5,2)
b=MatrixSymbol('b',2,1)
можно представить основные компоненты:
(x.T*x).as_explicit()
(x.T*y).as_explicit()
И даже может представлять собой инверсию первого компонента символически.
(x.T*x).I
Однако при попытке расширить инверсию первого компонента, я получаю отдавало с IndexError.
(x.T*x).I.as_explicit()
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-182-93739c34be6e> in <module>()
----> 1 (x.T*x).I.as_explicit()
/home/choct155/analysis/Anaconda/lib/python2.7/site-packages/sympy/matrices/expressions/matexpr.pyc in as_explicit(self)
230 return ImmutableMatrix([[ self[i, j]
231 for j in range(self.cols)]
--> 232 for i in range(self.rows)])
233
234 def as_mutable(self):
/home/choct155/analysis/Anaconda/lib/python2.7/site-packages/sympy/matrices/expressions/matexpr.pyc in __getitem__(self, key)
198 i, j = sympify(i), sympify(j)
199 if self.valid_index(i, j) is not False:
--> 200 return self._entry(i, j)
201 else:
202 raise IndexError("Invalid indices (%s, %s)" % (i, j))
/home/choct155/analysis/Anaconda/lib/python2.7/site-packages/sympy/matrices/expressions/matpow.pyc in _entry(self, i, j)
27 if self.exp.is_Integer:
28 # Make an explicity MatMul out of the MatPow
---> 29 return MatMul(*[self.base for k in range(self.exp)])._entry(i, j)
30
31 from matmul import MatMul
/home/choct155/analysis/Anaconda/lib/python2.7/site-packages/sympy/matrices/expressions/matmul.pyc in _entry(self, i, j, expand)
45 return coeff * matrices[0][i, j]
46
---> 47 head, tail = matrices[0], matrices[1:]
48 assert len(tail) != 0
49
IndexError: list index out of range
Обратный существует, поэтому я просто прошу, чтобы Симпи что-то делать не мог? Цель здесь состоит в том, чтобы явно выполнить каждый компонент процедуры оценки как с представлением матрицы, так и с данными в IPython Notebook. Я не смог найти решение для этого, поэтому любая помощь на этом фронте будет очень признательна.
И тянуть запросы приветствуются, если вы хотите попытаться решить одну из ошибок. – asmeurer