02-11 RANSAC算法线性回归(波斯顿房价预测)

目录

  • RANSAC算法线性回归(波斯顿房价预测)
  • 一、RANSAC算法流程
  • 二、导入模块
  • 三、获取数据
  • 四、训练模型
  • 五、可视化

更新、更全的《机器学习》的更新网站,更有python、go、数据结构与算法、爬虫、人工智能教学等着你:https://www.cnblogs.com/nickchen121/

RANSAC算法线性回归(波斯顿房价预测)

虽然普通线性回归预测结果总体而言还是挺不错的,但是从数据上可以看出数据集中有较多的离群值,因此本节将使用RANSAC算法针对离群值做处理,即根据数据子集(所谓的内点)拟合回归模型。

一、RANSAC算法流程

  1. 随机选择一定数量的样本作为内点拟合模型
  2. 用模型测试其他所有的点,把落在给定范围内的点放入内点集
  3. 调整模型中使用的所有内点
  4. 用内点重新拟合模型
  5. 评估模型预测结果与内点集相比较的误差
  6. 如果性能达到自定义的阈值或指定的迭代次数,则终止,否则返回步骤1

二、导入模块

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
from sklearn.linear_model import RANSACRegressor
from sklearn.linear_model import LinearRegression
%matplotlib inline
font = FontProperties(fname='/Library/Fonts/Heiti.ttc')

三、获取数据

df = pd.read_csv('housing-data.txt', sep='\s+', header=0)
X = df[['RM']].values
y = df['MEDV'].values

四、训练模型

# max_trials=88即最大迭代次数为88次
# min_samples=66即样本最低数量为66个
# loss=‘absolute_loss’即使用均方误差损失函数
# residual_threshold=6即只允许与拟合线垂直距离在6个单位以内的采样点被包括在内点集
ransac = RANSACRegressor(LinearRegression(),
                         max_trials=88,
                         min_samples=66,
                         loss='absolute_loss',
                         residual_threshold=6)
ransac.fit(X, y)

# 获取内点集
inlier_mask = ransac.inlier_mask_
# 获取非内点集
outlier_mask = np.logical_not(inlier_mask)
# 建立回归线
line_X = np.arange(3, 10, 1)
# 由于ransac模型期望数据存储在二维阵列中,因此使用line_X[:, np.newaxis]方法给X增加一个新维度
line_y_ransac = ransac.predict(line_X[:, np.newaxis])

五、可视化

plt.scatter(X[inlier_mask], y[inlier_mask], c='r',
            edgecolor='white', marker='s', label='内点')
plt.scatter(X[outlier_mask], y[outlier_mask], c='g',
            edgecolor='white', marker='o', label='离群点')
plt.plot(line_X, line_y_ransac, color='k')

plt.xlabel('平均房间数目[MEDV]', fontproperties=font)
plt.ylabel('以1000美元为计价单位的房价[RM]', fontproperties=font)
plt.title('波士顿房价预测', fontproperties=font, fontsize=20)
plt.legend(prop=font)
plt.show()
print('RANSAC算法线性回归斜率:{}'.format(ransac.estimator_.coef_[0]))

RANSAC算法线性回归斜率:9.546893365978166

使用RANSAC算法之后可以发现线性回归拟合的线与未用RANSAC算法拟合出来的线的斜率(普通线性回归斜率:9.10210898118031)不同,可以说RANSAC算法降低了离群值潜在的影响,但是这并不能说明这种方法对未来新数据的预测性能是否有良性影响。

原文地址:https://www.cnblogs.com/nickchen121/p/11686791.html

时间: 2024-09-29 18:48:31

02-11 RANSAC算法线性回归(波斯顿房价预测)的相关文章

02-06 普通线性回归(波斯顿房价预测)+特征选择

目录 普通线性回归(波士顿房价预测) 一.导入模块 二.获取数据 2.1 打印数据 三.特征选择 3.1 散点图矩阵 3.2 关联矩阵 四.训练模型 五.可视化 更新.更全的<机器学习>的更新网站,更有python.go.数据结构与算法.爬虫.人工智能教学等着你:https://www.cnblogs.com/nickchen121/ 普通线性回归(波士顿房价预测) 一.导入模块 import pandas as pd import numpy as np import matplotlib.

02-07 多元线性回归(波士顿房价预测)

目录 多元线性回归(波士顿房价预测) 一.导入模块 二.获取数据 三.训练模型 四.可视化 五.均方误差测试 更新.更全的<机器学习>的更新网站,更有python.go.数据结构与算法.爬虫.人工智能教学等着你:https://www.cnblogs.com/nickchen121/ 多元线性回归(波士顿房价预测) 一.导入模块 import pandas as pd import matplotlib.pyplot as plt from matplotlib.font_manager im

【Python数据挖掘课程】五.线性回归知识及预测糖尿病实例

今天主要讲述的内容是关于一元线性回归的知识,Python实现,包括以下内容:        1.机器学习常用数据集介绍        2.什么是线性回顾        3.LinearRegression使用方法        4.线性回归判断糖尿病        前文推荐:       [Python数据挖掘课程]一.安装Python及爬虫入门介绍       [Python数据挖掘课程]二.Kmeans聚类数据分析及Anaconda介绍       [Python数据挖掘课程]三.Kmean

02-08 多项式回归(波士顿房价预测)

目录 多项式回归(波士顿房价预测) 一.导入模块 二.获取数据 三.训练模型 3.1 报告决定系数 四.可视化 更新.更全的<机器学习>的更新网站,更有python.go.数据结构与算法.爬虫.人工智能教学等着你:https://www.cnblogs.com/nickchen121/ 多项式回归(波士顿房价预测) 一.导入模块 import pandas as pd import numpy as np import matplotlib.pyplot as plt from matplot

sklearn线性回归实现房价预测模型

目录 题目要求 单特征线性回归 方案一 方案二 多特征线性回归 两份数据 ex1data1.txt ex1data2.txt 题目要求 建立房价预测模型:利用ex1data1.txt(单特征)和ex1data2.txt(多特征)中的数据,进行线性回归和预测. 作散点图可知,数据大致符合线性关系,故暂不研究其他形式的回归. 两份数据放在最后. 单特征线性回归 ex1data1.txt中的数据是单特征,作一个简单的线性回归即可:\(y=ax+b\). 根据是否分割数据,产生两种方案:方案一,所有样本

RANSAC算法详解

原帖地址:http://grunt1223.iteye.com/blog/961063 另参考:http://www.cnblogs.com/xrwang/archive/2011/03/09/ransac-1.html 给定两个点p1与p2的坐标,确定这两点所构成的直线,要求对于输入的任意点p3,都可以判断它是否在该直线上.初中解析几何知识告诉我们,判断一个点在直线上,只需其与直线上任意两点点斜率都相同即可.实际操作当中,往往会先根据已知的两点算出直线的表达式(点斜式.截距式等等),然后通过向

利用RANSAC算法筛选SIFT特征匹配

关于RANSAC算法的基本思想,可从网上搜索找到,这里只是RANSAC用于SIFT特征匹配筛选时的一些说明. RANSAC算法在SIFT特征筛选中的主要流程是: (1) 从样本集中随机抽选一个RANSAC样本,即4个匹配点对 (2) 根据这4个匹配点对计算变换矩阵M (3) 根据样本集,变换矩阵M,和误差度量函数计算满足当前变换矩阵的一致集consensus,并返回一致集中元素个数 (4) 根据当前一致集中元素个数判断是否最优(最大)一致集,若是则更新当前最优一致集 (5) 更新当前错误概率p,

Python——决策树实战:california房价预测

Python--决策树实战:california房价预测 编译环境:Anaconda.Jupyter Notebook 首先,导入模块: 1 import pandas as pd 2 import matplotlib.pyplot as plt 3 %matplotlib inline 接下来导入数据集: 1 from sklearn.datasets.california_housing import fetch_california_housing 2 housing = fetch_c

动手学深度学习17-kaggle竞赛实践小项目房价预测

kaggle竞赛 获取和读取数据集 数据预处理 找出所有数值型的特征,然后标准化 处理离散值特征 转化为DNArray后续训练 训练模型 k折交叉验证 预测样本,并提交结果 kaggle竞赛 本节将动手操作实践一个kaggle比赛,房价预测. 可以先将未经优化的数据的预处理,模型的设计和超参的选择,可以动手操作,观察实现的过程以及结果, 获取和读取数据集 比赛的数据分为训练数据集和测试数据集.两个数据集都包括每栋房子的特征,如阶段类型,建造年份,房顶类型,地下室状况等特征值.这些特征值有连续的数