Редактировать:
Есть также одна вещь, которую следует отметить, что диабет набор данных используется в этом примере.
Данные уже нормализованы, поэтому работа нормализуется на них сам по себе может не дать того эффекта, который вы ищете.
Возможно, лучше использовать другой набор данных для ваших тестов.
Параметр нормализации работает так же, как sklearn. preprocessing.normalizer , который отличается от стандартного скейлера.
Основное отличие состоит в том, что нормализатор будет действовать на строки (наблюдения), тогда как стандартный скейлер будет действовать на столбцы.
Здесь еще один пост связанный пост. Разница между стандартизатором и нормализатором в sklearn.preprocessing .
В этом посте также приведены ссылки на некоторые дополнительные статьи, которые вы можете изучить.
Редактировать:
Документация сбивает с толку, и он появляется после просмотра исходного кода, похоже, что он действительно действует на столбцы, а не на строки, поскольку указывается параметр axis = 0.
Один из способов проверить это - использовать нормализуйте функцию и сравните, как она работает относительно передачи параметра.
Вот код, который выполняет предварительную обработку. (f_normalize - это та же самая функция, которая связана).
if normalize:
X, X_scale = f_normalize(X, axis=0, copy=False,
return_norm=True)
Я думаю, вы можете попробовать это и посмотреть, получите ли вы тот же результат, что и при использовании параметра normalize.
from sklearn.preprocessing import normalize
X_std= normalize(X,axis=0,return_norm=False)
clf = RidgeCV(normalize=False,alphas=[1e-3, 1e-2, 1e-1, 1]).fit(X_std, y)
print("standardize and normalize=True")
print(clf.alpha_)
print(clf.score(X_std,y))
print(clf.coef_)
standardize and normalize=True
0.01
0.5166287840315835
[ -7.19945679 -234.55293001 520.58313622 320.52335582 -380.60706569
150.48375154 -78.59123221 130.31305868 592.34958662 71.1337681 ]
Это дает тот же результат, что и:
X, y = load_diabetes(return_X_y=True)
clf = RidgeCV(normalize=True,alphas=[1e-3, 1e-2, 1e-1, 1]).fit(X, y)
print("standardize and normalize=True")
print(clf.alpha_)
print(clf.score(X_std,y))
print(clf.coef_)
standardize and normalize=True
0.01
0.5166287840315835
[ -7.19945679 -234.55293001 520.58313622 320.52335582 -380.60706569
150.48375154 -78.59123221 130.31305868 592.34958662 71.1337681 ]