TheilSenRegressor#
- class sklearn.linear_model.TheilSenRegressor(*, fit_intercept=True, max_subpopulation=10000.0, n_subsamples=None, max_iter=300, tol=0.001, random_state=None, n_jobs=None, verbose=False)[source]#
Theil-Sen 估算器:鲁棒多元回归模型。
该算法计算X中大小为n_subsamples的子集上的最小二乘解。n_subsamples在特征数和样本数之间的任何值都会导致估计器在鲁棒性和效率之间进行权衡。由于最小二乘解的数量是“n_samples choose n_subsamples”,它可能非常大,因此可以用max_subpopulation来限制。如果达到此限制,则随机选择子集。在最后一步中,计算所有最小二乘解的空间中位数(或 L1 中位数)。
在用户指南中了解更多信息。
- 参数:
- fit_interceptbool, default=True
是否为该模型计算截距。如果设置为false,计算中将不使用截距。
- max_subpopulationint, default=1e4
不是使用基数为“n choose k”的集合进行计算(其中 n 是样本数,k 是子样本数,至少为特征数),如果“n choose k”大于max_subpopulation,则只考虑给定最大大小的随机子总体。对于非小问题大小,如果n_subsamples未更改,此参数将决定内存使用和运行时。请注意,数据类型应为int,但也可以接受1e4之类的浮点数。
- n_subsamplesint, default=None
用于计算参数的样本数。这至少是特征数(如果fit_intercept=True,则加1)和最大样本数。较低的数字会导致较高的击穿点和较低的效率,而较高的数字会导致较低的击穿点和较高的效率。如果为None,则采用导致最大鲁棒性的最小子样本数。如果n_subsamples设置为n_samples,则Theil-Sen与最小二乘法相同。
- max_iterint, default=300
计算空间中位数的最大迭代次数。
- tolfloat, default=1e-3
计算空间中位数时的容差。
- random_stateint, RandomState instance or None, default=None
一个随机数生成器实例,用于定义随机排列生成器的状态。传入一个整数可以在多次函数调用中获得可重现的输出。请参阅词汇表。
- n_jobsint, default=None
Number of CPUs to use during the cross validation.
Nonemeans 1 unless in ajoblib.parallel_backendcontext.-1means using all processors. See Glossary for more details.- verbosebool, default=False
拟合模型时的详细模式。
- 属性:
- coef_ndarray of shape (n_features,)
回归模型的系数(分布的中位数)。
- intercept_float
回归模型的估计截距。
- breakdown_float
近似击穿点。
- n_iter_int
空间中位数所需的迭代次数。
- n_subpopulation_int
从“n choose k”中考虑的组合数,其中 n 是样本数,k 是子样本数。
- n_features_in_int
在 拟合 期间看到的特征数。
0.24 版本新增。
- feature_names_in_shape 为 (
n_features_in_,) 的 ndarray 在 fit 期间看到的特征名称。仅当
X具有全部为字符串的特征名称时才定义。1.0 版本新增。
另请参阅
HuberRegressorLinear regression model that is robust to outliers.
RANSACRegressorRANSAC (RANdom SAmple Consensus) 算法。
SGDRegressor通过最小化正则化经验损失与 SGD 拟合。
References
Theil-Sen Estimators in a Multiple Linear Regression Model, 2009 Xin Dang, Hanxiang Peng, Xueqin Wang and Heping Zhang http://home.olemiss.edu/~xdang/papers/MTSE.pdf
示例
>>> from sklearn.linear_model import TheilSenRegressor >>> from sklearn.datasets import make_regression >>> X, y = make_regression( ... n_samples=200, n_features=2, noise=4.0, random_state=0) >>> reg = TheilSenRegressor(random_state=0).fit(X, y) >>> reg.score(X, y) 0.9884 >>> reg.predict(X[:1,]) array([-31.5871])
- fit(X, y)[source]#
拟合线性模型。
- 参数:
- Xndarray of shape (n_samples, n_features)
训练数据。
- yndarray of shape (n_samples,)
目标值。
- 返回:
- self返回self的一个实例。
拟合的
TheilSenRegressor估计器。
- get_metadata_routing()[source]#
获取此对象的元数据路由。
请查阅 用户指南,了解路由机制如何工作。
- 返回:
- routingMetadataRequest
封装路由信息的
MetadataRequest。
- get_params(deep=True)[source]#
获取此估计器的参数。
- 参数:
- deepbool, default=True
如果为 True,将返回此估计器以及包含的子对象(如果它们是估计器)的参数。
- 返回:
- paramsdict
参数名称映射到其值。
- predict(X)[source]#
使用线性模型进行预测。
- 参数:
- Xarray-like or sparse matrix, shape (n_samples, n_features)
样本。
- 返回:
- Carray, shape (n_samples,)
返回预测值。
- score(X, y, sample_weight=None)[source]#
返回测试数据的 决定系数。
决定系数\(R^2\)定义为\((1 - \frac{u}{v})\),其中\(u\)是残差平方和
((y_true - y_pred)** 2).sum(),\(v\)是总平方和((y_true - y_true.mean()) ** 2).sum()。最好的分数是1.0,它也可以是负数(因为模型可能任意差)。一个始终预测y期望值而不考虑输入特征的常数模型将获得0.0的\(R^2\)分数。- 参数:
- Xshape 为 (n_samples, n_features) 的 array-like
测试样本。对于某些估计器,这可能是一个预先计算的核矩阵或一个通用对象列表,形状为
(n_samples, n_samples_fitted),其中n_samples_fitted是用于估计器拟合的样本数。- yshape 为 (n_samples,) 或 (n_samples, n_outputs) 的 array-like
X的真实值。- sample_weightshape 为 (n_samples,) 的 array-like, default=None
样本权重。
- 返回:
- scorefloat
self.predict(X)相对于y的 \(R^2\)。
注意事项
在版本0.23中,调用回归器的
score方法时使用的\(R^2\)分数使用multioutput='uniform_average',以与r2_score的默认值保持一致。这会影响所有多输出回归器(除了MultiOutputRegressor)的score方法。
- set_params(**params)[source]#
设置此估计器的参数。
此方法适用于简单的估计器以及嵌套对象(如
Pipeline)。后者具有<component>__<parameter>形式的参数,以便可以更新嵌套对象的每个组件。- 参数:
- **paramsdict
估计器参数。
- 返回:
- selfestimator instance
估计器实例。
- set_score_request(*, sample_weight: bool | None | str = '$UNCHANGED$') TheilSenRegressor[source]#
配置是否应请求元数据以传递给
score方法。请注意,此方法仅在以下情况下相关:此估计器用作 元估计器 中的子估计器,并且通过
enable_metadata_routing=True启用了元数据路由(请参阅sklearn.set_config)。请查看 用户指南 以了解路由机制的工作原理。每个参数的选项如下:
True:请求元数据,如果提供则传递给score。如果未提供元数据,则忽略该请求。False:不请求元数据,元估计器不会将其传递给score。None:不请求元数据,如果用户提供元数据,元估计器将引发错误。str:应将元数据以给定别名而不是原始名称传递给元估计器。
默认值 (
sklearn.utils.metadata_routing.UNCHANGED) 保留现有请求。这允许您更改某些参数的请求而不更改其他参数。在版本 1.3 中新增。
- 参数:
- sample_weightstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED
score方法中sample_weight参数的元数据路由。
- 返回:
- selfobject
更新后的对象。