#coding=UTF-8
#=======================================================================================================================
#文件说明:
# Python数据类库的使用---数据的处理及其Python数据可视化编程的实战
#开发环境:
# Win10+Tensorflow+OpenCv_python3.4+PyCharm5.0.3+Python3.5
#时间地点:
# 陕西师范大学.文津楼 2018.4.16
#作 者:
# 马卫飞
#=======================================================================================================================
#=======================================================================================================================
#文件说明:
# 本节博主将使用Python对【数据的处理】和【数据的可视化】进行简单的介绍,主要学习Python和Python数据可视化方面的内容。
#一 NumPy
# [1]NumPy(https://pypi.python.org/pypi/numpy)是一个非常有名的Python科学计算工具包,其中包含了大量有用的思想,比如:
# [1]数组对象(用来表示向量、矩阵、图像等),以及线性代数函数
# [2]数组对象可以帮你实现【数组】中的重要操作,比如:矩阵的乘积、转置、解方程系统、向量乘积和归一化,这些都为图像的变形、
# 对变形进行建模、图像的分类、图像的聚类提供了基础。
# [2]对于机器学习来说,数据是一切的基础。而一切数据又都不是单一存在的,其构成往往由很多【特征值】决定。
# [3]对于【数据】来说,在进行机器学习之前,需要对【数据】进行基本的【分析】和【处理】;首选,需要知道数据集合中数据的多少和每个数据
# 所拥有的属性的个数,对于程序设计人员和科研人员来说,这些都是很简单的事,但是,对于机器学习的模型来说,这些事必不可少的。
# [4]除此之外,对于【数据集合】来说,【缺失值】的处理也是一个非常重要的过程。最简单的处理方法是对具有【缺失值】数据进行整体的删除。
# 问题在于,机器学习的数据往往来源于社会,因此,可能数据集合中大多数的数据都会有某些属性缺失的问题,而解决的方法往往是采用【均值】
# 或者【目标数据】近似的【数据特征属性】代替。
# [5]下面,从一个小例子开始:首先,我们建立一个包含【数据集合】的【数据矩阵】,之后,使用不同的方法对其进行处理。
#=======================================================================================================================
import numpy as np #【1】导入numpy模块
dataSet = np.mat([[1, 200, 105, 3, False], #【2】使用numpy中的mat()方法,构建一个数据矩阵
[2, 165, 80, 2, False],
[3, 184.5,120, 2, False],
[4, 116, 60.8,1, False],
[5, 270, 150, 4, True]])
rowNum = 0 #【3】rowNum是引入的计算行数的变量
columnNum = 0 #【4】columnNum是引入的,计算列数的变量
for line in dataSet: #【5】使用for循环将dataSet中的数据读入到line中,而Meizu读一行,rowNum变量加1
rowNum += 1
columnNum += 1
print(rowNum)
print(columnNum)
print(dataSet.size) #【6】dataSet.size计算数据集合中全部数据的数据量
#=======================================================================================================================
#文件说明:
# 【1】对NumPy,读者只需要知道,NumPy系统是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵,比Python自身的嵌套
# 列表结构要高效的多。
# 【2】需要说明的是,numpy工具包将所有的【数据】转化成一个【矩阵】的形式进行处理,其中,具体的数据可以通过二元的形式读出,如下所示
#=======================================================================================================================
print(print(dataSet[0,3]))
print(print(dataSet[0,4]))
#=======================================================================================================================
#文件说明:
# 【1】细心的读者可能已经注意到,下标为[0,3]的具体数据对应的是矩阵中第1行第4列的数据,其值为3,而打印的结果为3.0
# 【2】如果需要打印全部的数据,就调用如下的方法
#=======================================================================================================================
print(dataSet)
#coding=UTF-8
#=======================================================================================================================
#文件说明:
# Python数据类库的使用---数据的处理及其Python数据可视化编程的实战
#开发环境:
# Win10+Tensorflow+OpenCv_python3.4+PyCharm5.0.3+Python3.5
#时间地点:
# 陕西师范大学.文津楼 2018.4.16
#作 者:
# 马卫飞
#=======================================================================================================================
#=======================================================================================================================
#模块说明:
# 基于【统计分析】的数据处理
#知识补充:
# 【1】列表:列表是python的内置对象之一,列表是Python中最具灵活性的【有序】集合的【对象类型】
# [1]与【字符串】不同的是,列表可以包含【任何类型的对象】,数字、字符串甚至其他的【列表】
# [2]同样,与【字符串】不同,【列表】都是【可变对象】,它们支持在原位置处的修改操作,可以通过指定的偏移值和分片、列表方法
# 调用、删除等方法来实现
# 【2】除了最基本的数据记录和提取之外,【机器学习】还需要知道一些【基本数据】的【统计量】,例如,每一类型数据的【均值】、【方差】、
# 以及【标准差】等,当然,这些【统计分析】中的【统计量】并不需要你自己去计算,numpy提供了相关的方法。
#=======================================================================================================================
import numpy as np #【1】导入numpy模块
dataSet = np.mat([[1, 200, 105, 3, False], #【2】使用numpy中的mat()方法,构建一个数据矩阵
[2, 165, 80, 2, False],
[3, 184.5,120, 2, False],
[4, 116, 60.8,1, False],
[5, 270, 150, 4, True]])
column1 = [] #【3】定义一个空的列表
for rowNum in dataSet: #【4】使用for循环,每次将dataSet中的一行数据读入到rowNum变量中
column1.append(rowNum[0,1]) #【5】每次将rowNum中的第0行第一列的数据追加到列表变量colnum1中
print(rowNum[0,1])
print(np.sum(column1)) #【6】求取【统计变量】的数据和
print(np.mean(column1)) #【7】求取【统计变量】的数据的【平均值】
print(np.std(column1)) #【8】求取【统计变量】的数据的【标准差】
print(np.var(column1)) #【9】求取【统计变量】的【方差】
#coding=UTF-8
#=======================================================================================================================
#文件说明:
# 图形化数据处理---Matplotlib包的使用
#开发环境:
# Win10+Tensorflow+OpenCv_python3.4+PyCharm5.0.3+Python3.5
#时间地点:
# 陕西师范大学.文津楼 2018.4.16
#作 者:
# 马卫飞
#=======================================================================================================================
#=======================================================================================================================
#模块说明:
# Matplotlib
#知识补充:
# 【1】我们处理【数学运算】、【绘制图表】、或者在【图像上绘制点】、直线和曲线时,Matplotlib是个很好类库。
# 【2】Matplotlib可以绘制出高质量的【图表】
#模块说明:
# 【1】对于单纯的数字来说,仅从【读数据】的角度并不能直观的反应数字的【偏差】和【集中度】,因此,需要采用另外一种方法来更好的分析数
# 据,对于数据来说,没有什么能够比用图形来解释更为形象和直观了。
# 【2】差异的可视化:研究数值差异和异常的方法是绘制数据的【分布程度】,相对于合适的直线或曲线,其差异程度如何,以帮助确定数据的分布
#=======================================================================================================================
import numpy as np #【1】导入numpy类库工具包
import matplotlib as mt #【2】导入matplotlib类库工具包
import pylab #【3】导入pylab类库工具包
import scipy.stats as stats #【4】导入scipython类库工具包
dataSet = np.mat([[1, 200, 105, 3, False], #【1】使用numpy中的mat()方法,构建一个数据矩阵
[2, 165, 80, 2, False],
[3, 184.5,120, 2, False],
[4, 116, 60.8,1, False],
[5, 270, 150, 4, True]])
column1 = [] #【2】定义一个空的列表
for rowNum in dataSet: #【3】使用for循环,每次将dataSet中的一行数据读入到rowNum变量中
column1.append(rowNum[0,1]) #【4】每次将rowNum中的第0行第一列的数据追加到列表变量colnum1中
stats.probplot(column1,plot=pylab)
pylab.show()
#=======================================================================================================================
#模块说明:
# 【1】scipy是专门的【机器学习】的【数据处理包】
# 【2】probplot计算了column数据集合中数据在【正态分布】下的【偏离程度】
#=======================================================================================================================
#=======================================================================================================================
#模块说明:
# 【1】scipy是专门的【机器学习】的【数据处理包】
# 【2】probplot计算了column数据集合中数据在【正态分布】下的【偏离程度】
#=======================================================================================================================
#coding=UTF-8
#=======================================================================================================================
#文件说明:
# 图形化数据处理---Matplotlib、scipy、pylab等包的使用
#开发环境:
# Win10+Tensorflow+OpenCv_python3.4+PyCharm5.0.3+Python3.5
#时间地点:
# 陕西师范大学.文津楼 2018.4.17
#作 者:
# 马卫飞
#=======================================================================================================================
#=======================================================================================================================
#文件说明:
# 坐标图的展示
#详细说明:
# 【1】通过上一个实例对数据可视化的处理可以看出,可视化能够让【数据】更加直观的【展现出来】,同时,可以让【数据的误差】表现的更为
# 直观。
# 【2】一个【坐标图】能够对【数据】进行展示,最基本的要求是可以通过不同的行或者不同的列表现出数据的某些具体价值,不同的标签使用不
# 同的颜色和样式可以展示不同的系统关系。
# 【3】pandas--python data analysis Library:pandas是一个强大的用于【数据分析】、【时间序列】、【统计】的数据结构
# 【4】通过选定【不同目标行中不同的属性】,可以对其进行较好的衡量,比较两个行之间的属性关系以及属性之间的相关性。不同的目标,即使
# 属性千差万别,也可以构建【关系图】。
# 【5】本利中采用的数据较少,随着数据的增加,属性之间一般会呈现一种正态分布。
#=======================================================================================================================
import pandas as pd #【1】导入pandas这个类库工具包
import matplotlib.pyplot as plot #【2】导入matplotlib这个类库中的pyplot模块,记住import导入的是整个模块文件
dataSet = pd.DataFrame([[1, 200, 105, 3, False], #【1】使用numpy中的mat()方法,构建一个数据矩阵
[2, 165, 80, 2, False],
[3, 184.5,120, 2, False],
[4, 116, 60.8,1, False],
[5, 270, 150, 4, True]])
dataRow1 = dataSet.iloc[1,0:3]
dataRow2 = dataSet.iloc[2,0:3]
plot.scatter(dataRow1,dataRow2)
plot.xlabel("Attributel")
plot.ylabel("Attribute2")
plot.show()