Pandas Dataframe AttributeError: 'DataFrame' - Objekt hat kein Attribut 'design_info'

Ich versuche, mit der predict() Funktion der statsmodels.formula.api OLS Umsetzung. Wenn ich den pass eine neue Daten-frame an die Funktion zu erhalten vorhergesagten Werte für eine out-of-sample-Datensatz result.predict(newdf) gibt die folgende Fehlermeldung zurück: 'DataFrame' object has no attribute 'design_info'. Was bedeutet dies und wie behebe ich es? Den vollständigen traceback ist:

    p = result.predict(newdf)
  File "C:\Python27\lib\site-packages\statsmodels\base\model.py", line 878, in predict
    exog = dmatrix(self.model.data.orig_exog.design_info.builder,
  File "C:\Python27\lib\site-packages\pandas\core\frame.py", line 2088, in __getattr__
    (type(self).__name__, name))
AttributeError: 'DataFrame' object has no attribute 'design_info'

EDIT: Hier ist ein reproduzierbares Beispiel. Der Fehler scheint aufzutreten, wenn ich die Gurke und dann unpickle das Ergebnis-Objekt (was muss ich tun, in meinem eigentlichen Projekt):

import cPickle
import pandas as pd
import numpy as np
import statsmodels.formula.api as sm

df = pd.DataFrame({"A": [10,20,30,324,2353], "B": [20, 30, 10, 1, 2332], "C": [0, -30, 120, 11, 2]})

result = sm.ols(formula="A ~ B + C", data=df).fit()
print result.summary()

test1 = result.predict(df) #works

f_myfile = open('resultobject', "wb")
cPickle.dump(result, f_myfile, 2)
f_myfile.close()
print("Result Object Saved")


f_myfile = open('resultobject', "rb")
model = cPickle.load(f_myfile)

test2 = model.predict(df) #produces error
  • Bitte Bearbeiten Sie die Frage und auch einige Beispiel-code sowie die komplette stack-trace.
  • Ich habe den vollen traceback. Ich kann versuchen, fügen Sie ein reproduzierbares Beispiel, wenn niemand weiß, warum dieser Fehler tritt in der Regel.
  • Ich denke, wir brauchen eine reproduzierbare Beispiel. Ich sehe keinen Grund, warum die Formel Informationen design_info ist nicht da, aber ich nicht vollständig verstehen, die code-Pfad für diese mit der Interaktion mit patsy. Sie könnten auch öffnen Sie ein Problem mit statsmodels auf github. Es ist vielleicht nicht sehr robust zu halten, die Formel von Informationen beigefügt, um die ursprünglichen dataframe.
  • Hinzugefügt eine reproduzierbare Beispiel, hat offensichtlich etwas zu tun mit Beizen und depickling das Objekt.
  • Ja, ich dachte darüber nach, wie ein möglicher Kandidat. Es ist auch möglich, die Daten entfernen, die vor dem Beizen, wenn wir nur wollen, um vorherzusagen, nach unpickling, die auch dazu führen, das gleiche problem. Meine Vermutung ist, dass statsmodels keine unit-tests für Beizen, wenn Formeln verwendet wurden.
  • Gibt es eine alternative zur Verwendung einer Formel oder ist es ein Weg, um Futter in die Formel einmal seinen worden unpickled?
  • "Es ist auch möglich, die Daten entfernen, die vor dem Beizen" ist das Ergebnis-Objekt speichern der Trainings-dataset? Wie kann man es entfernen?
  • statsmodels.sourceforge.net/devel/generated/... Es entfernen soll alle in voller Länge-arrays einschließlich der Trainingsdaten. Der einzige Teil, der gehalten wird, sind die Parameter und andere kleine Merkmale. Dieser wurde speziell Hinzugefügt, um eine Vorhersage nach dem Beizen ist eine Ergebnisse-Instanz ohne den vollen Datenbestand. Dies war jedoch Hinzugefügt und getestet nur für Datensätze, die numpy-arrays, und da diese Frage gibt, wird nicht richtig arbeiten mit Formeln.
  • Ich bin mit diesem problem auch. Gibt es dafür eine Lösung?

InformationsquelleAutor Michael | 2013-12-22
Schreibe einen Kommentar