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

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算法降低了离群值潜在的影响,但是这并不能说明这种方法对未来新数据的预测性能是否有良性影响。

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

  1. Python之机器学习-波斯顿房价预测

    目录 波士顿房价预测 导入模块 获取数据 打印数据 特征选择 散点图矩阵 关联矩阵 训练模型 可视化 波士顿房价预测 导入模块 import pandas as pd import numpy as ...

  2. 掌握Spark机器学习库-07.14-保序回归算法实现房价预测

    数据集 house.csv 数据集概览 代码 package org.apache.spark.examples.examplesforml import org.apache.spark.ml.cl ...

  3. 机器学习实战二:波士顿房价预测 Boston Housing

    波士顿房价预测 Boston housing 这是一个波士顿房价预测的一个实战,上一次的Titantic是生存预测,其实本质上是一个分类问题,就是根据数据分为1或为0,这次的波士顿房价预测更像是预测一 ...

  4. 使用sklearn进行数据挖掘-房价预测(5)—训练模型

    使用sklearn进行数据挖掘系列文章: 1.使用sklearn进行数据挖掘-房价预测(1) 2.使用sklearn进行数据挖掘-房价预测(2)-划分测试集 3.使用sklearn进行数据挖掘-房价预 ...

  5. Ames房价预测特征工程

    最近学人工智能,讲到了Kaggle上的一个竞赛任务,Ames房价预测.本文将描述一下数据预处理和特征工程所进行的操作,具体代码Click Me. 原始数据集共有特征81个,数值型特征38个,非数值型特 ...

  6. 梯度消失、梯度爆炸以及Kaggle房价预测

    梯度消失.梯度爆炸以及Kaggle房价预测 梯度消失和梯度爆炸 考虑到环境因素的其他问题 Kaggle房价预测 梯度消失和梯度爆炸 深度模型有关数值稳定性的典型问题是消失(vanishing)和爆炸( ...

  7. 使用pmml跨平台部署机器学习模型Demo——房价预测

      基于房价数据,在python中训练得到一个线性回归的模型,在JavaWeb中加载模型完成房价预测的功能. 一. 训练.保存模型 工具:PyCharm-2017.Python-39.sklearn2 ...

  8. RANSAC算法详解

    给定两个点p1与p2的坐标,确定这两点所构成的直线,要求对于输入的任意点p3,都可以判断它是否在该直线上.初中解析几何知识告诉我们,判断一个点在直线上,只需其与直线上任意两点点斜率都相同即可.实际操作 ...

  9. 使用sklearn进行数据挖掘-房价预测(4)—数据预处理

    在使用机器算法之前,我们先把数据做下预处理,先把特征和标签拆分出来 housing = strat_train_set.drop("median_house_value",axis ...

随机推荐

  1. Mysql高手系列 - 第8篇:详解排序和分页(order by & limit),及存在的坑

    这是Mysql系列第8篇. 环境:mysql5.7.25,cmd命令中进行演示. 代码中被[]包含的表示可选,|符号分开的表示可选其一. 本章内容 详解排序查询 详解limit limit存在的坑 分 ...

  2. docker容器内 java应用程序启动慢

    原谅我对JVM 不是很熟悉. 参考http://hongjiang.info/tomcat-startup-slowly-in-docker/ 感谢作者.

  3. math库的使用

    math库简介 math库是Python提供的内置数学内函数库,因为复数类型常用于科学计算,一般计算并不常用,因此math库不支持复数类型,仅支持整数和浮点数运算,math库一共提供4个数学常数和44 ...

  4. FJUT - OJ优先队列专题题解

    题目链接http://120.78.128.11/Contest.jsp?cid=18 题面不贴了 都是英文题,看的我心力憔悴 =7= 一.Ugly Numbers 题目说一个数的质因数只包含2.3或 ...

  5. 50 (OC)* URL Scheme 网页地址协议

    在Xcode 9 下,新建的工程,在plist文件中注册URL Schemes,从safari无法打开问题 1:URL Scheme是什么 2:URL Scheme有什么作用 3:URL Scheme ...

  6. centos 搭建SVN服务器简单流程

    yum -y install subversion mkdir -p /work/svn && cd /work/svn //创建版本库 svnadmin create test -- ...

  7. HashMap浅析

    一.概述 HashMap,基于哈希结构的Map接口的一个实现,无序,允许null键值对,线程不安全的.可以使用集合工具类Collections中的synchronizedMap方法,去创建一个线程安全 ...

  8. 微服务SpringCloud之zipkin链路追踪

    随着业务发展,系统拆分导致系统调用链路愈发复杂一个前端请求可能最终需要调用很多次后端服务才能完成,当整个请求变慢或不可用时,我们是无法得知该请求是由某个或某些后端服务引起的,这时就需要解决如何快读定位 ...

  9. loadrunner12录制手机app

    今天第一次使用LR12录制app,遇到了录制不上的问题,最终解决了,记录一下 我安装的版本是12.02社区版   HP_LoadRunner_12.02_Community_Edition_T7177 ...

  10. Spring boot集成Rabbit MQ使用初体验

    Spring boot集成Rabbit MQ使用初体验 1.rabbit mq基本特性 首先介绍一下rabbitMQ的几个特性 Asynchronous Messaging Supports mult ...