参考内容

《机器学习实战》原作者github:https://github.com/ageron/handson-ml

hist参数解读https://bingw.blog.csdn.net/article/details/85075968

《机器学习实战》完整总结https://blog.csdn.net/jh1137921986/article/details/79843700

数据分割https://blog.csdn.net/m0_52974810/article/details/118529320?spm=1001.2014.3001.5501


目录​​​​​​​

一、加载数据

二、快速查看数据结构

三、数据探索及可视化


​​​​​​​​​​​​一、加载数据 

(1)导入本地数据

import pandas as pd
housing = pd.read_csv(r"C:\Users\Hudie\Desktop\dataset\housing.csv")
#housing是自定义变量,housing.csv是文件名
housing

(2)导入在线数据

import pandas as pd
titanic = pd.read_csv('http://biostat.mc.vanderbilt.edu/wiki/pub/Main/DataSets/titanic.txt')

(3)导入sklearn模块自带的数据集

from sklearn.datasets import load_boston,load_digits,fetch_20newsgroups
boston = load_boston()
#查看数据说明(DESCR)
print boston.DESCRdigits = load_digits()
#查看数据规模和特征维度
print digits.data.shape#与之前预存的数据不同,fetch_20newsgroups需要即时从互联网下载数据
news=fetch_20newsgroups(subset='all')
#查验数据规模和细节
print len(news.data)
print news.data[0]

二、快速查看数据结构 

(1)了解各个属性和前五行数据

housing.head()#查看数据前五行

(2)快速获得数据集的简单描述

housing.info()#快速获得数据集的简单描述

可以看到,数据集总共包含20640个实例,需要注意total_bed这个属性只有20433个非空值,有207个缺失值。

(3)查看某个分类属性的各个类别

观察数据集可能会觉得ocean_proximinty这个属性是一个分类属性:

housing["ocean_proximity"].value_counts()
#通过value_counts()方法查看有多少种分类,每种类别下分别有多少个区域。

(4)显示数值属性

housing.describe()#显示数值属性

std显示的是标准差(衡量数值的离散程度);25%、50%和75%显示的是百分位数:百分位数表示一组观测值中给定百分比的观测值都低于该值(housing_median_age的值25%的区域低于18)

也可以通过hist()方法绘制每个属性的直方图。

import matplotlib.pyplot as plt
housing.hist(bins = 50, figsize=(20,15))
plt.show()

hist方法常用的参数如下:

参数名 类型 描述
data DataFrame pandas数据对象,存储数据
column string或者sequence 如果传递了这个参数,则画图时只用到数据的一个子集,具体是谁,由本参数值指定
by object 这就是Group By里的by,会按照分组来绘制直方图
grid boolean 是否显示坐标线
xlabelsize int 如果指定了这个值,则可以改变x-axis的标记尺寸
xrot float 旋转x轴的度数
ylabelsize int 如果指定了这个值,则可以改变y-axis的标记尺寸
yrot float 旋转y轴的度数
ax Matplot axes 指定要绘制直方图的坐标系
sharex boolean 如果axNone则默认为True否则默认为False。在subplots=True时,会共享x轴并将某个x轴设置为不可见;如果ax传递进来了,且sharex=True,会改变所有子图的x轴的标记。
sharey booelan 同理可推导出sharey的功效。
figsize tuple 单位是英寸,表示要创建的图的大小。默认使用在matplotlib.rcParams中定义的数值。
layout tuple (rows, columns),表示绘图有多少行多少列。
bins int或者sequence 默认为10,就是指定显示多少竖条
**kwds 其他的关键词参数可以在这里传递
axes(返回值) 返回一个matplotlib.AxesSubplot或者numpy.ndarray对象

观察分析直方图:

a.观察收入中位数(median_income)的图像可以发现,单位可能不是以美元(USD)在衡量(可以猜测是等比例缩放)。由图可以看出中位数的上限大约是15,下限是0.5,此时需要和负责收集数据的团队核实。在机器学习中,将属性进行预处理是很常见的,但是关键是需要知道处理后的数据是怎么来的。

b.观察各属性的缩放程度。可以看到这个项目各属性的缩放程度是各不相同的。

c.由图可知,房龄中位数(housing_median_age)和房价中位数(median_house_value)(目标属性;标签)被设定了上限(学习到的数据不会超过这个限制)。所以需要和客户进行核实,是否存在问题。如果需要精确的预测值,甚至允许超过限制,则有两种选择:

  • 对那些被设置了上限的地区重新收集标签值;
  • 将超出上限的数据从数据集中移除。

d.许多直方图都有重尾的现象,图形在中位数右侧的延伸比左侧多的多。一般数据直方图呈正态分布(钟形)的情况时会比较容易得到好的结果。


三、数据探索及可视化

注意:这部分探索的数据只有训练集。

如果训练集很大的话,采用抽样的方法建立探索集,现在这个项目不需要。

为了不损害训练集达到随意尝试的目的,我们先创建一个副本:

housing = strat_train_set.copy()

(1)可视化地理数据

根据经纬度绘制散点图

housing.plot(kind = "scatter", x = "longitude", y = "latitude")
plt.show()

上图在高密集的地方特征不太明显,可以通过设置合适的alpha选项进行修改提高。

alpha取值与其对应的图像:

这里选择alpha = 0.1:

housing.plot(kind = "scatter", x = "longitude", y = "latitude", alpha = 0.1)
plt.show()

这样就可以清楚地看到高密度地区。结合地图可以知道,在湾区、洛杉矶和圣地亚哥附近,同时,在中央山谷处有一条高密度长线。

(2)可视化房价

使用jet的预定义颜色表(cmap)来进行可视化,颜色从蓝色(低)到红色(高)。

housing.plot(kind = "scatter", x = "longitude", y = "latitude",alpha = 0.4,s = housing["population"] / 100, label = "population",c = "median_house_value", cmap = plt.get_cmap("jet"), colorbar = True)
plt.legend()
plt.show()

s - 每个圈的半径表示街区的人口;

c - 颜色代表价格。

从图中可以分析出房价和地理位置(比如是否靠海)以及人口密度息息相关。可以使用聚类的算法来检测主要的聚集,然后可以添加一个新的更具代表性的特征值(海洋临近度)。

​​

​​​​​plt.legend()具体用法参考:

https://blog.csdn.net/qq_37710333/article/details/108308155

(3)寻找相关性

  • corr()方法

​​​​​​​适合数据集不大的时候使用该方法来计算每对属性之间的标准相关系数

corr_matrix = housing.corr()
corr_matrix["median_house_value"].sort_values(ascending = False)

DataFrame.sort_value()用来排序;sascending = False表示降序.

​​​​​​​

相关系数的范围是[-1,1],正数表示正相关,负数表示负相关,0表示没有线性相关性,但是要注意可能有非线性关系。

  • scatter_matrix函数

使用scatter_matrix函数绘制出每个数值属性与其他数值属性的相关性。​​​​​​​

由于本项目的属性有11个,会得到11*11=121个图像,所以选择与房价中位数最相关的3个属性"median_income", "total_rooms", "housing_median_age"进行分析:

from pandas.plotting import scatter_matrix
attributes = ["median_house_value", "median_income", "total_rooms","housing_median_age"]
scatter_matrix(housing[attributes], figsize = (12, 8))

忽略对角线(自相关)

仔细观察图像可以发现,收入中位数(median_income)会与房价中位数的相关性会好一点。可以单独被这两者的相关性图打开进行分析:

housing.plot(kind = "scatter",x = "median_income", y = "median_house_value",alpha = 0.1)

可以看到图中出现了几条水平线(50万美元、45、35、28…附近)。为了避免影响算法学习,可以尝试删掉这些相应地区。

(4)试验不同属性的组合median_income

有些特征可能没有实际上的意义,因此我们可以尝试创造组合新的特征。比如说我们可能比较关心的,这套房有几个房间:

housing["bedrooms_per_room"] = housing["total_bedrooms"] / housing["total_rooms"]

接着再用corr()方法看看关联矩阵:

可以发现相关性甚至比房子年龄的相关性还要高。因此我们需要多去尝试新的可能,探索数据的奥秘。

加州房价预测项目详细笔记(Regression)——(1)研究数据获得灵感相关推荐

  1. kaggle—HousePrice房价预测项目实战

    房价预测是kaggle官网的一个竞赛项目,算是机器学习的一个入门项目.kaggle官网链接: link. 关于kaggle竞赛项目的操作流程可以参看这篇博客: link. 一.kaggle介绍 kag ...

  2. 机器学习:房价预测项目实战

    作为机器学习刚入门门都没入的小白,学了理论总有一种有力使不出的赶脚,就想拿一些项目去练练手,而房价预测作为kaggle入门级别的项目,又是最经典的项目,于是就拿来试试啦. 注:本文的数据集链接来源于k ...

  3. 基于线性回归算法的房价预测项目

    1. 查看数据的基本信息 import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn a ...

  4. 机器学习入门实例-加州房价预测-1(数据准备与可视化)

    问题描述 数据来源:California Housing Prices dataset from the StatLib repository,1990年加州的统计数据. 要求:预测任意一个街区的房价 ...

  5. 完整的机器学习_加州房价预测

    机器学习的主要步骤 将问题框架化并且关注重点. 获取并探索数据以洞悉数据. 准备数据以更好地将基础数据模式暴露给机器学习算法. 探索多种不同的模型并列出最好的那些. 微调模型并将它们组合成一个很好的解 ...

  6. VIBE:3D人体姿态预测项目复现笔记

    VIBE是一个的3D人体姿态预测开源项目,需要基于该项目作一些开发,首先需要能够搭建和是的环境成功复现它. 不过,这个项目的复现的,真的不是一星半点的艰难. 1.系统选择 之前一直用的Windows, ...

  7. TouTiao开源项目 分析笔记7 加载数据的过程

    1.以新闻页中的段子数据显示为例 1.1.首先执行InitApp==>SplashActivity. 因为在AndroidManifest.xml中定义了一个<intent-filter& ...

  8. php+sql创建本地项目详细步骤1——创建数据库数据表,数据库连接

    一.我们使用wamp,首先保证wamp打开,服务打开状态 二.创建数据库,创建表 要注意这里的数据集要选择utf8,否则插入数据会乱码 创建表选择高级属性,也要设置数据集 可以设置id为主键并且自增长 ...

  9. 【机器学习实用指南】加州房价中位数预测

    加州房价预测 # 同时支持python2和python3 from __future__ import division,print_function,unicode_literals# 常用库 im ...

  10. 基于xgboost+GridSearchCV的波士顿房价预测

    xgboost中文叫做极致梯度提升模型,官方文档链接:https://xgboost.readthedocs.io/en/latest/tutorials/model.html GridSearchC ...

最新文章

  1. 探究被Win7保留的100MB活动分区
  2. 目录 文件 链接管理命令总结
  3. 超详细面经:无论文、无实习拿下腾讯CV算法岗
  4. 【原创】jquery常见的条件判断类型
  5. android intent action 介绍大全
  6. 《版式设计——日本平面设计师参考手册》—第1章应用对象样式
  7. [react] 如何给非控组件设置默认的值?
  8. C++课程上 有关“指针” 的小结
  9. php读写分离是什么意思,php mysql读写分离
  10. open cv python_open cv——图像阈值处理(python文档)
  11. ArcGIS入门 (一)
  12. H5py数据集的制作
  13. python 找图 找字_使用按键精灵找点找图找字的方法
  14. 转:罗永浩写给俞敏洪的求职信
  15. Java多线程系列--“JUC集合”10之 ConcurrentLinkedQueue
  16. 网易邮箱注册HTML+CSS
  17. Windows安装Dolby Vision 杜比视界插件
  18. android 截屏 简书,Android 内置应用截屏方法
  19. ​​​​Convolutional Neural Networks on Graphswith Fast Localized Spectral Filtering
  20. 细说汽车电子通信总线之CAN 2.0 总线协议详解

热门文章

  1. 高等代数 :1 线性方程组的解法
  2. Kubernetes基础:使用rollout对Deployment进行控制
  3. 爆料!滴滴或于4-5月开启第二轮裁员,内部员工透露细节:或无赔偿!
  4. 单片机循迹车c语言程序,基于单片机控制的简易自动循迹小车仿真与程序源码...
  5. U盘图标自定义时不能修改图标?
  6. 学习笔记-应用光学 典型光学系统
  7. lambda表达式写法
  8. 离散数学----组合数学:由二项式定理展开式中考察某一项的结构的来推广得到多项式展开式。
  9. 查询服务器时显示failbyOEM,java - 使用 Weblogic 12c,给出警告警告日志管理 BEA-170011 该服务器上的 LogBroadcaster 失败 - 堆栈内存溢出...
  10. 【paddlepaddle安装报错系列】Installing collected packages :OpenCV-python ERROR :After october 2020 you…