ValueError: endog muss in der Einheit Intervall
Während der Verwendung statsmodels, ich bin immer diese komische Fehlermeldung: ValueError: endog must be in the unit interval.
Kann mir jemand mehr Informationen über diesen Fehler? Google ist nicht zu helfen.
Code erzeugt die Fehlermeldung:
"""
Multiple regression with dummy variables.
"""
import pandas as pd
import statsmodels.api as sm
import pylab as pl
import numpy as np
df = pd.read_csv('cost_data.csv')
df.columns = ['Cost', 'R(t)', 'Day of Week']
dummy_ranks = pd.get_dummies(df['Day of Week'], prefix='days')
cols_to_keep = ['Cost', 'R(t)']
data = df[cols_to_keep].join(dummy_ranks.ix[:,'days_2':])
data['intercept'] = 1.0
print(data)
train_cols = data.columns[1:]
logit = sm.Logit(data['Cost'], data[train_cols])
result = logit.fit()
print(result.summary())
Und der traceback:
Traceback (most recent call last):
File "multiple_regression_dummy.py", line 20, in <module>
logit = sm.Logit(data['Cost'], data[train_cols])
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/statsmodels/discrete/discrete_model.py", line 404, in __init__
raise ValueError("endog must be in the unit interval.")
ValueError: endog must be in the unit interval.
- Vielleicht überprüfen Sie diese Bedingung, dass dieser Fehler erzeugt: if (self.__Klasse__.__name__ != 'MNLogit' und nicht np.alle((self.endog >= 0) & (selbst.endog <= 1))): raise ValueError("endog muss in der Einheit Intervall.")
- Was ist Ihre
Cost
Daten? Logit erfordert, dass die abhängige variable (endog) ist in der Einheit Intervall. Wenn Sie möchten, dass die Logistische regression mit Werten in einem anderen Intervall, dann müssen Sie zusammenarbeiten, um Ihre Werte, so dass Sie in der Einheit Intervall. Allerdings Logit-nicht erforderlich, dass dieendog
sind 0 und 1 ganze zahlen, so können wir es verwenden, für Proportionen. - Ah
Cost
ist nicht in der Einheit Intervall. Keine Ahnung warum Logit benötigt? - Die zugrunde liegende Verteilung der Logit ist eine Bernoulli-Verteilung, die Werte 0 und 1. Dies kann erweitert werden auf beliebige Werte zwischen 0 und 1, aber die Funktionen sind nicht definiert außerhalb des unit-Intervalls. Wenn Sie eine positive abhängigen variable und einer exponentiellen meine Funktion dann die Poisson-Verteilung kann verwendet werden, auch wenn die Daten continous. Für ungebundene kontinuierliche Daten das übliche Modell ist OLS.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bekam ich diese Fehlermeldung, wenn meine Spalte Ziel hatten Werte größer 1.
Stellen Sie sicher, dass Ihre Ziel-Spalte liegt zwischen 0 und 1 (als Voraussetzung für eine Logistische Regression) und versuchen Sie es erneut.
Zum Beispiel, wenn Sie Ziel-Spalte mit den Werten 1-5, 4 und 5 ist die positive Klasse 1,2,3 und die negative Klasse. Hoffe, das hilft.
Es scheint, wie Sie nach dem gleichen logistischen regression tutorial, das ich habe:
http://blog.yhat.com/posts/logistic-regression-and-python.html
Ich landete immer den gleichen Wert-Fehler, wenn ich fit mein Logistische regression, und der trick, den ich brauchte, um es ausgeführt wurde, machen Sie sicher, dass Sie zum löschen aller Zeilen, die meine Daten mit fehlenden Werten (N/A oder np.nan).
Diese kann getan werden, mit den pandas Funktion pandas.notnull() wie folgt :
und so weiter, bis alle Variablen haben die gleiche Menge von Werten, mit zu arbeiten.
Hoffe, dies hilft jemand anderes!