Мы можем попробовать следующий способ решения (давайте использовать iris
набор данных и метку species
как числовые и соответствовать моделям линейной регрессии, чтобы увидеть, как использовать все независимые предикторы как в R
и python sklearn
):
В R
summary(lm(as.numeric(Species)~., iris))[c('coefficients', 'r.squared')]
$coefficients
Estimate Std. Error t value Pr(>|t|)
(Intercept) 1.18649525 0.20484104 5.792273 4.150495e-08
Sepal.Length -0.11190585 0.05764674 -1.941235 5.416918e-02
Sepal.Width -0.04007949 0.05968881 -0.671474 5.029869e-01
Petal.Length 0.22864503 0.05685036 4.021874 9.255215e-05
Petal.Width 0.60925205 0.09445750 6.450013 1.564180e-09
$r.squared
[1] 0.9303939
В Python (sklearn с пастообразной)
from sklearn.datasets import load_iris
import pandas as pd
from patsy import dmatrices
iris = load_iris()
names = [f_name.replace(" ", "_").strip("_(cm)") for f_name in iris.feature_names]
iris_df = pd.DataFrame(iris.data, columns=names)
iris_df['species'] = iris.target
# pasty does not support '.' at least in windows python 2.7, so here is the workaround
y, X = dmatrices('species ~ ' + '+'.join(iris_df.columns - ['species']),
iris_df, return_type="dataframe")
from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(X, y)
print model.score(X,y)
# 0.930422367533
print model.intercept_, model.coef_
# [ 0.19208399] [[0.22700138 0.60989412 -0.10974146 -0.04424045]]
Как мы можем видеть, модели, полученные в R
и Python
, с pasty
аналогичны (порядок коэффициентов различен).
Я не верю, что это так, вот пример с sklearn [здесь] (http://scikit-learn.org/stable/auto_examples/linear_model /plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) – cdeterman
@lmo Я отметил его как с тем, как я понял, что, вероятно, будет перекрытие между пользователями R и пользователями Scikit. – 114
@ 114 с чем именно вы работаете? Можете ли вы привести пример с игрушкой? –