2017-01-05 2 views
-1

Ich bin neu in Python und versucht, eine einfache lineare Regression zu berechnen. Mein Modell hat eine abhängige Variable und eine unabhängige Variable. Ich verwende linear_model.LinearRegression() aus dem Paket sklearn. Ich habe einen R-Quadrat-Wert von .16 Dann habe ich import statsmodels.api als sm mod = sm.OLS (Y_train, X_train) und ich habe ein R-Quadrat von 0,61. unten ist der Code beginnend mit Daten von großen AbfrageUnterschied zwischen statsmodel OLS und scikit lineare Regression; verschiedene Modelle geben unterschiedliche r Quadrat

****Code for linear regression**** 
    train_data_df = pd.read_gbq(query,project_id) 
    train_data_df.head() 

    X_train = train_data_df.revisit_next_day_rate[:, np.newaxis] 
    Y_train = train_data_df.demand_1yr_per_new_member[:, np.newaxis] 

#scikit-learn version to get prediction R2 
    model_sci = linear_model.LinearRegression() 
    model_sci.fit(X_train, Y_train) 


    print model_sci.intercept_ 
    print ('Coefficients: \n', model_sci.coef_) 
    print("Residual sum of squares %.2f" 
     % np.mean((model_sci.predict(X_train) - Y_train ** 2))) 
    print ('Variance score: %.2f' %model_sci.score(X_train, Y_train)) 
    Y_train_predict = model_sci.predict(X_train) 
    print ('R Square', r2_score(Y_train,Y_train_predict)) 


****for OLM**** 

    print Y_train[:3] 
    print X_train[:3] 
    mod = sm.OLS(Y_train,X_train) 
    res = mod.fit() 
    print res.summary() 

Ich bin sehr neu dazu. Versuchen zu verstehen, welches lineare Regressionspaket ich verwenden soll?

+0

Sie müssen uns zeigen, was Sie tatsächlich getan haben, oder wie könnte jemand sagen, was Sie falsch gemacht haben? –

+0

Willkommen bei StackOverflow. Bitte lesen und befolgen Sie die Buchungsrichtlinien in der Hilfe. [Minimales, vollständiges, überprüfbares Beispiel] (http://stackoverflow.com/help/mcve) gilt hier. Wir können Ihnen nicht effektiv helfen, bis Sie Ihren MCVE-Code veröffentlicht und das Problem genau beschrieben haben. – Prune

+0

@ juanpa.arrivillaga Ich habe die Frage bearbeitet, um den Code hinzuzufügen. – SAM244776

Antwort

0

Den Unterschied herausgefunden. Es war der Schnittpunkt. OLS nimmt es standardmäßig nicht. So fügen Sie unter dem Code die Antworten hinzu.

X = sm.add_constant(X) 
sm.OLS(y,X) 
Verwandte Themen