Что это значит, когда значение P = 0,000;Rsquared = 0,012 в результатах регрессии OLS с использованием statsmodel;но склеарн Rsquared = 0,839? - PullRequest
0 голосов
/ 12 декабря 2018

Я провел линейную регрессию на моих данных - (2 категориальные и 6 числовых переменных), используя модель линейной регрессии Sci-Kit Learn, и я нашел ниже результаты регрессии.

regressor = LinearRegression()
regressor.fit(X_train, y_train)
y_pred = regressor.predict(X_test)

r2_score(y_test, y_pred)
--> 0.8399

np.sqrt(mean_squared_error(y_test, y_pred))
--> 149.066

Когда я запускаю одни и те же данные с использованием statsmodels, результаты совершенно разные, Rsquared сходит с ума и значение p равно 0,000.

Что это значит, что яя делаю не так?

import statsmodels.formula.api as sm
#X = np.append(arr = np.ones((X.shape[0], 1)).astype(int), values = X, axis = 1)
X_opt = X[:, [0,1,2,3,4,5,6,7,8]]
regressor_OLS = sm.OLS(endog = y, exog = X_opt).fit()        
regressor_OLS.summary()

enter image description here

Ответы [ 2 ]

0 голосов
/ 14 декабря 2018

Я нашел ответ на свою ошибку, во-первых, необходимо добавить константу при использовании statsmodels, во-вторых, я использую OneHotEncoder для кодирования категориальной функции, которая добавляет дополнительные столбцы в массив в зависимости от количества категорий, которые несет столбец.Помня об этом и настраивая X_train в обеих библиотеках - sklearn & statsmodel - я получил одинаковые результаты от обеих.

спасибо всем за вопросы, которые помогли мне решить мою собственную проблему!

0 голосов
/ 12 декабря 2018

Я не могу разместить изображение в комментарии, поэтому разместите его здесь.Кажется подозрительным, что эти коэффициенты имеют одно и то же значение, это может быть ключом.

same values

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...