Я изучаю sklearn.linear_model и statsmodel.api, где я использую метод smf.ols.Используя stats.linear_model, я могу напрямую создать свою модель.Например, smf.ols(Y~X**2)
, как в R, мы можем удалить переменные, которые имеют высокую корреляцию, или если они должны быть в квадрате.Но используя sklearn, я просто помещаю LinearRegression()
в свои данные.Поэтому я не вижу модель, которую он строит.Неужели я не увижу модельное уравнение?Примечание. Я попытался использовать этот метод для своих данных и получил совершенно другое значение R 2 .
statsmodel
import statsmodels.formula.api as smf
model1_scaledstp = smf.ols('profit ~ rd_spend + administration+marketing_spend + california + florida', data = stp_n).fit()
stp_pred = model1_scaledstp.predict(stp_n)
from sklearn.metrics import mean_squared_error, r2_score
rmse = mean_squared_error(y, stp_pred)
r2 = r2_score(y, stp_pred)
склеарн линейная регрессия
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 0)
from sklearn.linear_model import LinearRegression
reg = LinearRegression()
reg.fit(X_train, y_train)
y_pred = reg.predict(X_test)
from sklearn.metrics import r2_score
r2_score(y_test, y_pred)
- R 2 : statsmodel = 0,643 ++
- r 2 : sklearn linear_model = 0,4 ++
Разница большая.