git源码:https://github.com/xuman-Amy/Regression-Analysis
【运用RANSAC 训练强化的回归模型】
RANdom SAmple Consensus (RANSAC),随机样本一致性算法,将回归模型与数据的子集相匹配,即局内点
【基本步骤】
(1)选择一个随机数量的样本作为局内点,来fit一个模型
(2)用除去(1)中之外的所有点对抗这个模型,将在给定容忍值内的点添加进局内点
(3)用所有局内点重新 fit 模型
(4)通过比较局内点来估计模型的错误率
(5)如果模型性能达到了某个设定的阈值或者达到了一定数量的迭代,终止算法;否则返回(1)
【sklearn 实现RANSAC】
# random sample consensus
from sklearn.linear_model import RANSACRegressor,LinearRegression
# 参数说明:base_estimator 仅限于回归估计,默然LinearRegression
# min_samples 每次随机采样的最小数量样本
# residual_threshold 残差临界值,样本被划分为局内点的最小残差值,临界值指与目标值y偏差的中位值
# max_trials 最大迭代次数
#loss 误差。absolute_loss 绝对误差 当绝对误差大于临界值 归为局外点
ransac = RANSACRegressor(base_estimator = LinearRegression(),
min_samples = 50,
residual_threshold = 5.0,
max_trials = 100,
loss = 'absolute_loss',
random_state = 0)
ransac.fit(X,y)
【画出得到的局内点和局外点】
# obtain inliers and outliers
inlier_mask = ransac.inlier_mask_
outlier_mask = np.logical_not(inlier_mask)
line_X = np.arange(3, 10, 1)
line_y_ransac = ransac.predict(line_X[:, np.newaxis])
plt.scatter(X[in