pub struct PyARDRegression { /* private fields */ }Expand description
Bayesian ARD regression.
Fit the weights of a regression model, using an ARD prior. The weights of the regression model are assumed to be drawn from an isotropic Gaussian distribution with precision lambda. The shrinkage is data-dependent, and the parameters of the prior are estimated from the data using empirical Bayes approach.
§Parameters
max_iter : int, default=300 Maximum number of iterations.
tol : float, default=1e-3 Stop the algorithm if w has converged.
alpha_init : float, default=1.0 Initial value for alpha (per-feature precisions). If not provided, alpha_init is 1.0.
lambda_init : float, default=1.0 Initial value for lambda (precision of the noise). If not provided, lambda_init is 1.0.
threshold_alpha : float, default=1e10 Threshold for removing (pruning) weights with high precision from the computation: features with precision higher than this threshold are considered to have zero weight.
fit_intercept : bool, default=True Whether to calculate the intercept for this model. If set to False, no intercept will be used in calculations (i.e. data is expected to be centered).
compute_score : bool, default=False If True, compute the objective function at each step of the model.
copy_X : bool, default=True If True, X will be copied; else, it may be overwritten.
§Attributes
coef_ : array-like of shape (n_features,) Coefficients of the regression model (mean of distribution)
alpha_ : array-like of shape (n_features,) estimated precision of the weights.
lambda_ : float estimated precision of the noise.
sigma_ : array-like of shape (n_features, n_features) estimated variance-covariance matrix of the weights
scores_ : array-like of shape (n_iter_+1,) if computed, value of the objective function (to be maximized) at each iteration of the optimization.
intercept_ : float
Independent term in decision function. Set to 0.0 if
fit_intercept = False.
n_features_in_ : int Number of features seen during fit.
§Examples
from sklears_python import ARDRegression import numpy as np X = np.array([[1], [2], [3], [4], [5]]) y = np.array([1, 2, 3, 4, 5]) reg = ARDRegression() reg.fit(X, y) ARDRegression() reg.predict([[3]]) array([3.])
§Notes
ARD performs feature selection by setting the weights of many features to zero, as they are deemed irrelevant. This is particularly useful when the number of features is much larger than the number of samples.
For polynomial regression, it is recommended to “center” the data by subtracting its mean before fitting the ARD model.
§References
D. J. C. MacKay, Bayesian nonlinear modeling for the prediction competition, ASHRAE Transactions, 1994.
R. Salakhutdinov, Lecture notes on Statistical Machine Learning,
http://www.cs.toronto.edu/~rsalakhu/sta4273/notes/Lecture2.pdf
Their beta is our lambda_, and their alpha is our alpha_
ARD is a little different: only lambda_ is inferred; alpha_
is fixed by the user.
Trait Implementations§
Source§impl<'py> IntoPyObject<'py> for PyARDRegression
impl<'py> IntoPyObject<'py> for PyARDRegression
Source§type Target = PyARDRegression
type Target = PyARDRegression
Source§type Output = Bound<'py, <PyARDRegression as IntoPyObject<'py>>::Target>
type Output = Bound<'py, <PyARDRegression as IntoPyObject<'py>>::Target>
Source§fn into_pyobject(
self,
py: Python<'py>,
) -> Result<<Self as IntoPyObject<'_>>::Output, <Self as IntoPyObject<'_>>::Error>
fn into_pyobject( self, py: Python<'py>, ) -> Result<<Self as IntoPyObject<'_>>::Output, <Self as IntoPyObject<'_>>::Error>
Source§impl PyClass for PyARDRegression
impl PyClass for PyARDRegression
Source§impl PyClassImpl for PyARDRegression
impl PyClassImpl for PyARDRegression
Source§const IS_BASETYPE: bool = false
const IS_BASETYPE: bool = false
Source§const IS_SUBCLASS: bool = false
const IS_SUBCLASS: bool = false
Source§const IS_MAPPING: bool = false
const IS_MAPPING: bool = false
Source§const IS_SEQUENCE: bool = false
const IS_SEQUENCE: bool = false
Source§const IS_IMMUTABLE_TYPE: bool = false
const IS_IMMUTABLE_TYPE: bool = false
Source§type ThreadChecker = SendablePyClass<PyARDRegression>
type ThreadChecker = SendablePyClass<PyARDRegression>
Source§type PyClassMutability = <<PyAny as PyClassBaseType>::PyClassMutability as PyClassMutability>::MutableChild
type PyClassMutability = <<PyAny as PyClassBaseType>::PyClassMutability as PyClassMutability>::MutableChild
Source§type BaseNativeType = PyAny
type BaseNativeType = PyAny
PyAny by default, and when you declare
#[pyclass(extends=PyDict)], it’s PyDict.fn items_iter() -> PyClassItemsIter
fn lazy_type_object() -> &'static LazyTypeObject<Self>
fn dict_offset() -> Option<isize>
fn weaklist_offset() -> Option<isize>
Source§impl PyClassNewTextSignature<PyARDRegression> for PyClassImplCollector<PyARDRegression>
impl PyClassNewTextSignature<PyARDRegression> for PyClassImplCollector<PyARDRegression>
fn new_text_signature(self) -> Option<&'static str>
Source§impl<'a, 'py> PyFunctionArgument<'a, 'py, false> for &'a PyARDRegression
impl<'a, 'py> PyFunctionArgument<'a, 'py, false> for &'a PyARDRegression
Source§impl<'a, 'py> PyFunctionArgument<'a, 'py, false> for &'a mut PyARDRegression
impl<'a, 'py> PyFunctionArgument<'a, 'py, false> for &'a mut PyARDRegression
Source§impl PyMethods<PyARDRegression> for PyClassImplCollector<PyARDRegression>
impl PyMethods<PyARDRegression> for PyClassImplCollector<PyARDRegression>
fn py_methods(self) -> &'static PyClassItems
Source§impl PyTypeInfo for PyARDRegression
impl PyTypeInfo for PyARDRegression
Source§fn type_object_raw(py: Python<'_>) -> *mut PyTypeObject
fn type_object_raw(py: Python<'_>) -> *mut PyTypeObject
Source§fn type_object(py: Python<'_>) -> Bound<'_, PyType>
fn type_object(py: Python<'_>) -> Bound<'_, PyType>
impl DerefToPyAny for PyARDRegression
Auto Trait Implementations§
impl Freeze for PyARDRegression
impl RefUnwindSafe for PyARDRegression
impl Send for PyARDRegression
impl Sync for PyARDRegression
impl Unpin for PyARDRegression
impl UnwindSafe for PyARDRegression
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<'py, T> IntoPyObjectExt<'py> for Twhere
T: IntoPyObject<'py>,
impl<'py, T> IntoPyObjectExt<'py> for Twhere
T: IntoPyObject<'py>,
Source§fn into_bound_py_any(self, py: Python<'py>) -> Result<Bound<'py, PyAny>, PyErr>
fn into_bound_py_any(self, py: Python<'py>) -> Result<Bound<'py, PyAny>, PyErr>
self into an owned Python object, dropping type information.