MachineLearning入门-7(数据理解)

为了得到更准确的结果,必须理解数据的特征、分布情况,以及需要解决的问题,以便建立和优化算法模型。

  • 简单的查看数据
  • 审查数据的维度
  • 审查数据的类型和属性
  • 总结查看数据分类的分布情况
  • 通过描述性统计分析数据
  • 理解数据属性的相关性
  • 审查数据的分布状态

简单的查看数据

对数据的简单审视,是加强对数据的理解最有效的方法之一。通过对数据的观察,可以发现数据内在关系。

1 from pandas import read_csv
2 #使用pandas导入CSV数据,显示数据的前10行
3 filename=‘/home/aistudio/work/pima_data1.csv‘
4 names=[‘preg‘,‘plas‘,‘pres‘,‘skin‘,‘test‘,‘mass‘,‘pedi‘,‘age‘,‘class‘]
5 data=read_csv(filename,names=names)
6 peak=data.head(10)
7 print(peak)
    preg  plas  pres  skin  test  mass   pedi  age  class
0     6   148    72    35     0  33.6  0.627   50      1
1     1    85    66    29     0  26.6  0.351   31      0
2     8   183    64     0     0  23.3  0.672   32      1
3     1    89    66    23    94  28.1  0.167   21      0
4     0   137    40    35   168  43.1  2.288   33      1
5     5   116    74     0     0  25.6  0.201   30      0
6     3    78    50    32    88  31.0  0.248   26      1
7    10   115     0     0     0  35.3  0.134   29      0
8     2   197    70    45   543  30.5  0.158   53      1
9     8   125    96     0     0   0.0  0.232   54      1

数据的维度

在机器学习中要注意数据的行和列,必须对所有的数据非常了解,要知道有多少行和多少列,这是因为:

太多的行会导致花费大量时间来训练得到模型;太少的数据会导致对算法的训练不充分,得不到合适模型。

如果数据具有太多的特征,会引起某些算法性能低下的问题。

通过DataFrame的shape属性,可以很方便查看数据集中有多少行、列。

1 print(data.shape)
(768, 9)

数据的类型和属性

数据的类型是很重要的一个属性。字符串会被转化为浮点数或整数,以便于计算和分类。可以通过DataFrame的Type属性来查看每一个字段的数据类型。

1 print(data.dtypes)
preg       int64
plas       int64
pres       int64
skin       int64
test       int64
mass     float64
pedi     float64
age        int64
class      int64
dtype: object

描述性统计

描述性统计可以给出一个更加直观、更加清晰的视觉,以加强对数据的理解。可通过DataFrame的describe()方法给我们展示八方面得信息:数据记录数、平均值、标准方差、最小值、下四分位数、中位数、上四分位数、最大值。这些信息主要用来描述数据的分布情况。

1 from pandas import set_option
2 set_option(‘display.width‘,100)
3 #设置数据的精度
4 set_option(‘precision‘,4)
5 print(data.describe())
           preg      plas      pres   ...         pedi       age    class
count  768.0000  768.0000  768.0000   ...     768.0000  768.0000  768.000
mean     3.8451  120.8945   69.1055   ...       0.4719   33.2409    0.349
std      3.3696   31.9726   19.3558   ...       0.3313   11.7602    0.477
min      0.0000    0.0000    0.0000   ...       0.0780   21.0000    0.000
25%      1.0000   99.0000   62.0000   ...       0.2437   24.0000    0.000
50%      3.0000  117.0000   72.0000   ...       0.3725   29.0000    0.000
75%      6.0000  140.2500   80.0000   ...       0.6262   41.0000    1.000
max     17.0000  199.0000  122.0000   ...       2.4200   81.0000    1.000

数据分组分布(适用于分类算法)

在分类算法中,需要知道每个分类的数据大概有多少条记录,以及数据分布是否平衡。如果数据分布的平衡性很差,需要在数据加工阶段进行数据处理,来提高数据分布的平衡性。

1 print(data.groupby(‘class‘).size())
     class
0    500
1    268
dtype: int64

数据属性的相关性

数据属性中的相关性是指数据的两个属性是否互相影响,以及这种影响是什么方式的等。非常通用的计算两个属性的相关性的方法是皮尔森相关系数,皮尔森相关系数是度量两个变量间相关程度的方法。它是一个介于1和-1之间的值,其中,1表示完全正相关,0表示无关,-1表示完全相关。

在自然科学领域,该系数广泛用于度量两个变量之间的相关程度。

在机器学习中,当数据的关联程度比较高时,有些算法(如linear,逻辑回归等)的性能会降低,所以在开始训练前,查看一下算法的关联性是一个很好的方法。当数据特征的相关性比较高时,应该考虑对特征进行降维处理。

下面通过使用DataFrame的corr()方法来计算数据集中数据属性之间的关联关系矩阵。

1 print(data.corr(method=‘pearson‘))
        preg    plas    pres    skin   ...      mass    pedi     age   class
preg   1.0000  0.1295  0.1413 -0.0817   ...    0.0177 -0.0335  0.5443  0.2219
plas   0.1295  1.0000  0.1526  0.0573   ...    0.2211  0.1373  0.2635  0.4666
pres   0.1413  0.1526  1.0000  0.2074   ...    0.2818  0.0413  0.2395  0.0651
skin  -0.0817  0.0573  0.2074  1.0000   ...    0.3926  0.1839 -0.1140  0.0748
test  -0.0735  0.3314  0.0889  0.4368   ...    0.1979  0.1851 -0.0422  0.1305
mass   0.0177  0.2211  0.2818  0.3926   ...    1.0000  0.1406  0.0362  0.2927
pedi  -0.0335  0.1373  0.0413  0.1839   ...    0.1406  1.0000  0.0336  0.1738
age    0.5443  0.2635  0.2395 -0.1140   ...    0.0362  0.0336  1.0000  0.2384
class  0.2219  0.4666  0.0651  0.0748   ...    0.2927  0.1738  0.2384  1.0000

[9 rows x 9 columns]上面就是执行之后会得到一个每个属性相互影响的矩阵

数据的分布分析

通过分析数据的高斯分布情况来确认数据的偏离情况。高斯分布又叫正态分布,是在数据、物理及工程等领域都非常重要的概率分布,在统计学的许多方面有着重大的影响。高斯分布的曲线呈钟形,两头低,中间高,左右对称。

在高斯分布图中,y轴两点之间的面积是发生的概率。在很多机器学习算法中都会假定数据遵循高斯分布,先计算数据的高斯偏离状况,再根据偏离状况准备数据。

我们可以使用DataFrame的skew()方法来计算所有数据属性的高斯分布偏离情况。

1 print(data.skew())
preg     0.9017
plas     0.1738
pres    -1.8436
skin     0.1094
test     2.2723
mass    -0.4290
pedi     1.9199
age      1.1296
class    0.6350
dtype: float64shew()函数的结果显示数据分布是左偏还是右偏。当数据接近0时,表示数据的偏差非常小。

原文地址:https://www.cnblogs.com/yuzaihuan/p/12288409.html

时间: 2024-10-07 03:55:21

MachineLearning入门-7(数据理解)的相关文章

教你零基础如何快速入门大数据技巧

现在是大数据时代,很多人都想要学习大数据,因为不管是就业前景还是薪资都非常的不错,不少人纷纷从其他行业转型到大数据行业,那么零基础的人也想要学习大数据怎么办呢?下面一起探讨下零基础如何快速入门大数据技巧吧. 很多人都需要学习大数据是需要有一定的基础的,编程语言就是必备的条件之一,编程语言目前热门的有:Java.Python.PHP.C/C++等等,无论是学习哪一门编程语言,总之要精细掌握一门语言是非常必须的,我们先拿应用广泛的Java说起哦. .在入门学习大数据的过程当中有遇见学习,行业,缺乏系

新手入门大数据,这有一条最完整的学习路径

本文的目的是希望给所有大数据初学者规划一条比较清晰的学习路线,帮助它们开启大数据学习之旅.鉴于大数据领域内的技术绚丽繁复,每位大数据初学者都应该根据自己的实际情况制定专属的学习路径. 要说当下IT行业什么最火?ABC无出其右.所谓ABC者,AI + Big Data + Cloud也,即人工智能.大数据和云计算(云平台).每个领域目前都有行业领袖在引领前行,今天我们来讨论下大数据这个方向. 新手入门大数据,这有一条最完整的学习路径大数据概念 角色 以我的愚见,当下大数据行业有两类角色: 大数据工

【第二篇】ASP.NET MVC快速入门之数据注解(MVC5+EF6)

目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策略(MVC5+EF6) [第四篇]ASP.NET MVC快速入门之完整示例(MVC5+EF6) [番外篇]ASP.NET MVC快速入门之免费jQuery控件库(MVC5+EF6) 请关注三石的博客:http://cnblogs.com/sanshi 数据库连接字符串 上一篇文章中,我们使用MVC的

八年一线架构师,带你0基础入门大数据

在职八年老司机带你0基础入门大数据 ,教你如何从小白变成行业精英 ,让高薪变的简单! 孙老师太阁孙老师具备8年从业经验,4年大数据经验,4年培训讲师经验,精通java python 和大数据生态圈,曾担任清华大学JAVA技术研究与开发联合实验室研究员,设计过滴滴大数据架构,以及国家级项目,对于数据的处理和分析有独到的见解,对于教学能够如浅入深,有丰富的软件设计,软件研发,软件管理,流程控制经验点击进入课程 官方网址:www.tigerlab.net太阁博客:blog.tigerlab.net官方

入门大数据领域需要哪些技能|大数据工程师学习之路

入门大数据领域需要哪些技能?大数据学习之路. 大数据是当时时代下一门炙热的IT学科,行情十分火爆,不论是阿里巴巴.百度这样的大公司,还是中小企业都很重视,甚至是第一个纳入国家战略的技术,政府扶持力度大,支持甚多!面对这样的大环境下,大数据相关岗位薪水高,就业前景好.因此也吸引了一大批有志之士,想学习并从事大数据相关工作.那么,大数据应该如何学习呢? 互联网科技发展蓬勃兴起,人工智能时代来临,抓住下一个风口.为帮助那些往想互联网方向转行想学习,却因为 时间不够,资源不足而放弃的人.我自己整理的一份

入门大数据,可以先自学哪些内容?

现在网上的学习资源很多,免费付费的都有,很多人提升自己的方法会选择自学.零基础小白想入门大数据,前期打基础的部分是可以自学的. 1.英语基础 对于大数据技术文章,比较先进的是外文较多,编程也需要能看懂代码,必须要有一定的英语能力. 2.统计学 主要是大数据分析.数据挖掘方向的工作需要. 重点学习:基本的统计量.概率分布.置信区间与假设检验.相关性与回归分析等. 推荐书籍: <赤裸裸的统计学>.<深入浅出统计学> .在入门学习大数据的过程当中有遇见学习,行业,缺乏系统学习路线,系统学

MachineLearning入门-8(数据可视化)

为了生成最优化的算法模型,必须对数据进行理解.最快.最有效的方式是通过数据的可视化来加强对数据的理解. 接下来将通过matplotlib对数据可视化,以加强对原始数据集的理解. 单一图表 直方图(Histogram)又称质量分布图,是一种统计报告图,由一系列高度不等的纵向条纹或线段表示数据的分布情况.一般用横轴表示数据类型,纵轴表示分布情况.直方图可以非常直观展示每个属性的分布情况.通过图表可以很直观地看到数据是高斯分布.指数分布还是偏态分布.代码如下 1 from pandas import

新手入门大数据,理清学习路线是关键

学习大数据,首先我们要学习Java语言和Linux操作系统,这两个是学习大数据的基础,学习的顺序不分前后.Java:大家都知道Java的方向有JavaSE.JavaEE.JavaME,学习大数据要学习那个方向呢?只需要学习Java的标准版JavaSE就可以了,像Servlet.JSP.Tomcat.Struts.Spring.Hibernate,Mybatis都是JavaEE方向的技术在大数据技术里用到的并不多,只需要了解就可以了,当然Java怎么连接数据库还是要知道的,像JDBC一定要掌握一下

SQL server从入门精通---- 数据基础知识

数据库入门: 数据库的发展:人工管理阶段-----文件管理阶段-----数据库系统阶段 数据系统的组成: 1.数据库(数据)db 2.数据管理系统(软件)dbms 3.数据库管理人员  dba 4.硬件平台   5.软件平台        数据库的3级模式 模式   外模式   内模式   简单点说 模式就是表 外模式就是视图 内模式是物理结构和存储方式一般你是用不到的   3级模式之间的2级映射 模式/外模式映射(逻辑独立性) 外模式/内模式映射(物理独立性) 数据模型 层次模型   网状模型