02-11 RANSAC算法线性回归(波斯顿房价预测)
更新、更全的《机器学习》的更新网站,更有python、go、数据结构与算法、爬虫、人工智能教学等着你:https://www.cnblogs.com/nickchen121/p/11686958.html
RANSAC算法线性回归(波斯顿房价预测)
虽然普通线性回归预测结果总体而言还是挺不错的,但是从数据上可以看出数据集中有较多的离群值,因此本节将使用RANSAC算法针对离群值做处理,即根据数据子集(所谓的内点)拟合回归模型。
一、RANSAC算法流程
- 随机选择一定数量的样本作为内点拟合模型
- 用模型测试其他所有的点,把落在给定范围内的点放入内点集
- 调整模型中使用的所有内点
- 用内点重新拟合模型
- 评估模型预测结果与内点集相比较的误差
- 如果性能达到自定义的阈值或指定的迭代次数,则终止,否则返回步骤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]))
_11_0.png?x-oss-process=style/watermark)
RANSAC算法线性回归斜率:9.546893365978166
使用RANSAC算法之后可以发现线性回归拟合的线与未用RANSAC算法拟合出来的线的斜率(普通线性回归斜率:9.10210898118031)不同,可以说RANSAC算法降低了离群值潜在的影响,但是这并不能说明这种方法对未来新数据的预测性能是否有良性影响。
02-11 RANSAC算法线性回归(波斯顿房价预测)的更多相关文章
- Python之机器学习-波斯顿房价预测
目录 波士顿房价预测 导入模块 获取数据 打印数据 特征选择 散点图矩阵 关联矩阵 训练模型 可视化 波士顿房价预测 导入模块 import pandas as pd import numpy as ...
- 掌握Spark机器学习库-07.14-保序回归算法实现房价预测
数据集 house.csv 数据集概览 代码 package org.apache.spark.examples.examplesforml import org.apache.spark.ml.cl ...
- 机器学习实战二:波士顿房价预测 Boston Housing
波士顿房价预测 Boston housing 这是一个波士顿房价预测的一个实战,上一次的Titantic是生存预测,其实本质上是一个分类问题,就是根据数据分为1或为0,这次的波士顿房价预测更像是预测一 ...
- 使用sklearn进行数据挖掘-房价预测(5)—训练模型
使用sklearn进行数据挖掘系列文章: 1.使用sklearn进行数据挖掘-房价预测(1) 2.使用sklearn进行数据挖掘-房价预测(2)-划分测试集 3.使用sklearn进行数据挖掘-房价预 ...
- Ames房价预测特征工程
最近学人工智能,讲到了Kaggle上的一个竞赛任务,Ames房价预测.本文将描述一下数据预处理和特征工程所进行的操作,具体代码Click Me. 原始数据集共有特征81个,数值型特征38个,非数值型特 ...
- 梯度消失、梯度爆炸以及Kaggle房价预测
梯度消失.梯度爆炸以及Kaggle房价预测 梯度消失和梯度爆炸 考虑到环境因素的其他问题 Kaggle房价预测 梯度消失和梯度爆炸 深度模型有关数值稳定性的典型问题是消失(vanishing)和爆炸( ...
- 使用pmml跨平台部署机器学习模型Demo——房价预测
基于房价数据,在python中训练得到一个线性回归的模型,在JavaWeb中加载模型完成房价预测的功能. 一. 训练.保存模型 工具:PyCharm-2017.Python-39.sklearn2 ...
- RANSAC算法详解
给定两个点p1与p2的坐标,确定这两点所构成的直线,要求对于输入的任意点p3,都可以判断它是否在该直线上.初中解析几何知识告诉我们,判断一个点在直线上,只需其与直线上任意两点点斜率都相同即可.实际操作 ...
- 使用sklearn进行数据挖掘-房价预测(4)—数据预处理
在使用机器算法之前,我们先把数据做下预处理,先把特征和标签拆分出来 housing = strat_train_set.drop("median_house_value",axis ...
随机推荐
- CopyOnWriteArrayList实现原理以及源码解析
1.CopyOnWrite容器(并发容器) Copy-On-Write简称COW,是一种用于程序设计中的优化策略.其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正 ...
- spring boot项目后台运行
spring boot项目后台运行 Spring Boot应用的几种运行方式: (1)运行Spring Boot的应用主类 (2)使用Maven的Spring Boot插件mvn spring-boo ...
- 什么是Json,Json如何使用
JavaScript Object Notation:javascript的对象表示法. 这是一种能传递对象的语法,可以是键值对,数组,以及其他对象. 轻量级的数据传输方法. json格式: { ke ...
- 一文轻松搞懂Vuex
概念: Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式(官网地址:https://vuex.vuejs.org/zh/).它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状 ...
- jmeter性能分析
1.硬件要求:包括客户端和服务端的cpu,mem,network,disk等,这些硬件设备必须满足性能测试的前提下,才能进行性能测试,否则得到的各项指标不一定是正确的 2.场景分析: 测试前的准备工作 ...
- 基于LeNet的手写汉字识别(caffe)
我假设已经成功编译caffe,如果没有,请参考http://caffe.berkeleyvision.org/installation.html 在本教程中,我假设你的caffe安装目录是CAFFE_ ...
- 三、SpringBoot 整合mybatis 多数据源以及分库分表
前言 说实话,这章本来不打算讲的,因为配置多数据源的网上有很多类似的教程.但是最近因为项目要用到分库分表,所以让我研究一下看怎么实现.我想着上一篇博客讲了多环境的配置,不同的环境调用不同的数据库,那接 ...
- PTA A1009&A1010
第五天 A1009 Product of Polynomials (25 分) 题目内容 This time, you are supposed to find A×B where A and B a ...
- logback配置方法
logback是一个通用可靠.快速灵活的日志框架,它替代了log4j,和slf4j组成新的日志系统. slf4j是一个日志门面,为其他各种日志框架提供了统一的接口,代码中使用slf4j可以避免对某一种 ...
- mysql集群基于docker 在centos上
新博客https://blog.koreyoshi.work/ mysql集群(PXC)基于docker 在centos上 常用设计方案 Replication(复制) 速度快 弱一致性 低价值 场景 ...