Python程序设计与大数据-第8章-数据挖掘.pptx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《Python程序设计与大数据-第8章-数据挖掘.pptx》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Python 程序设计 数据 挖掘
- 资源描述:
-
1、8.1Python常用数据分析工具8.2数据预处理8.3分类与预测8.5实战:信用评估习题8.4聚类分析of5618.6实战:影片推荐系统第八章数据挖掘8.1 Python常用数据分析工具第八章 数据挖掘of3128.1.1 NumpyNumPy提供了真正的数组功能,以及对数据进行快速处理的函数。NumPy 安装:方式一:pip install numpy 方式二:python setup.py installNumPy基本操作:#-*-coding:utf-8-*import numpy as np#一般以np作为 numpy 的别名a=np.arra y(2,8,5,7)#创建数组prin
2、t(a)#输出数组print(a:3)#引用前三个数字(切片)print(a.min()#输出a的最小值a.sort()#将a的元素从小到大排序,此操作直接修改a,因此这时候a为2,5,7,8b=np.array(1,2,3,4,5,6 )#创建二维数组print(b*b)#输出数组的平方阵,即(1,4,9),(16,25,36)8.1 Python常用数据分析工具第八章 数据挖掘of3138.1.2 ScipyScipy 提供了真正的矩阵,以及大量基于矩阵运算的对象与函数。Scipy依赖于NumPy,安装它之前得先安装NumPy。安装好Scipy后,可以通过以下命令进行简单测试。用Scipy
3、求解非线性方程组和数值积分:#-*-coding:utf-8-*#求解非线性方程组 2x1-x22=1,x12-x2=2from scipy.optimize import fsolve#导入求解方程组的函数#定义要求解的方程组def f(x):x1=x0 x2=x1 return 2*x1-x2*2-1,x1*2-x2-2 result=fsolve(f,1,1)#输入初值1,1并求解print(result)#输出结果:array(1.91963957,1.68501606)#数值积分from scipy import integrate#导入积分函数def g(x):#定义被积函数 re
4、turn(1-x*2)*0.5pi_2,err=integrate.quad(g,-1,1)#积分结果和误差print(pi_2*2)#由微积分知识可知,积分结果为圆周率pi的一半8.1 Python常用数据分析工具第八章 数据挖掘of3148.1.3 PandasPandas是Python中强大的数据分析和探索工具,它包含高级的数据结构和精巧的工具,使得在Python中处理数据非常快速和简单。Pandas的功能非常强大,支持类似SQL Server数据库的数据增、删、查、改操作,并且带有丰富的数据处理函数;支持时间序列分析;支持灵活处理缺失数据等。Pandas的安装过程跟普通的第三方库一样,
5、但如果需要读取和写入Excel数据,还需要安装xlrd库(读)和xlwt库(写)。其安装方法如下:pip install xlrd 为Python添加读取Excel数据的功能 pip install xlwt 为Python添加写入Excel数据的功能8.1 Python常用数据分析工具第八章 数据挖掘of3158.1.3 PandasPandas基本的数据结构是Series和DataFrame。Series是序列,类似一维数组;DataFrame相当于一张二维的表格,类似二维数组,它的每一列都是一个Series。为了定位Series中的元素,pandas 提供了Index对象,每个Serie
6、s都会有一个对应的Index,用来标记不同的元素。Index的内容不一定是数字,也可以是字母、汉字等。类似地,DataFrame相当于多个有同样Index的Series 的组合,每个Series都有唯一的表头,用来标识不同的Series。Pandas简例:#-*-coding:utf-8-*import pandas as pd#通常用pd作为pandas 的别名。s=pd.Series(1,2,3,index=a,b,c)#创建一个序列sd=pd.DataFrame(1,2,3,4,5,6,columns=a,b,c)#创建一个表d2=pd.DataFrame(s)#也可以用已有的序列来创建
7、表格d.head()#预览前5行数据d.describe()#数据基本统计量#读取文件,注意文件的存储路径不能有中文,否则,读取可能出错pd.read_excel(data.xls)#读取Excel文件,创建DataFrame pd.read_csv(data.csv,encoding=utf-8)#读文本格式数据,encoding指定编码8.1 Python常用数据分析工具第八章 数据挖掘of3168.1.4 Scikit-LearnScikit-Learn是Python中强大的机器学习工具包,它提供了完善的机器学习工具箱,包括数据预处理、分类、回归、聚类、预测和模型分析等。Scikit-L
8、earn依赖于NumPy、Scipy和Matplotlib,安装方法与普通第三方库的安装类似。创建一个机器学习模型:#-*-coding:utf-8-*from sklearn.linear_model import LinearRegression#导入线性回归模型model=LinearRegression()#建立线性回归模型print(model)1)所有模型提供的接口model.fit():训练模型,对于监督模型是fit(X,y),对于非监督模型是fit(X)。2)监督模型提供的接口model.predict(X_new):预测新样本。model.predict_proba(X_ne
9、w):预测概率,仅对某些模型有用(如LR)。model.score():得分越高,拟合越好。3)非监督模型提供的接口model.transform():从数据中学到新的“基空间”。model.fit_transform():从数据中学到新的基并将这个数据按照这组“基”进行转换。8.1 Python常用数据分析工具第八章 数据挖掘of3178.1.4 Scikit-LearnScikit-Learn本身提供了一些实例数据,比较常见的有安德森莺尾花卉数据集、手写图像数据集等。Scikit-Learn简例:#-*-coding:utf-8-*from sklearn import datasets#
10、导入数据集iris=datasets.load_iris()#加载数据集print(iris.data.shape)#查看数据集大小from sklearn import svm#导入SVM模型clf=svm.LinearSVC()#建立线性SVM分类器clf.fit(iris.data,iris.target)#用数据训练模型clf.predict(3.6,5.9,1.4,2.35)#训练好模型之后,输入新的数据进行预测clf.coef_#查看训练好模型的参数8.1Python常用数据分析工具8.2数据预处理8.3分类与预测8.5实战:信用评估习题8.4聚类分析of5688.6实战:影片推荐
11、系统第八章数据挖掘8.2 数据预处理第八章 数据挖掘of319在实际的数据挖掘中,海量的原始数据中存在大量信息不完整(有缺失值)、信息表达不一致、有异常(受噪声影响)的数据,无法直接进行数据挖掘,或挖掘结果差强人意。为了提高数据挖掘的质量,产生了数据预处理(Data Preprocessing)技术。统计发现,在数据挖掘的过程中,数据预处理工作量占到了整个过程的60%。数据预处理有多种方法:数据清理(Data Cleaning)、数据集成(Data Integration)、数据变换(Data Transformation)等。这些数据预处理技术在数据挖掘之前使用,大大提高了数据挖掘模式的质量
12、,降低了实际挖掘所需要的时间。8.2 数据预处理第八章 数据挖掘of31108.2.1 数据清洗数据清理是进行数据预处理的首要方法,它通过识别或删除离群点来光滑噪声数据,并填补缺失值,从而“清理”数据。数据清理的主要任务是处理缺失值、光滑噪声数据。1.处理缺失值处理缺失值通常包括以下几类方法:(1)删除元组(2)人工填写缺失值(3)中心度量填补(4)多重填补(5)使用最可能的值填补8.2 数据预处理第八章 数据挖掘of31118.2.1 数据清洗 2.光滑噪声数据光滑噪声数据主要有以下几种方法:(1)分箱。其主要思想为每一个数据与它的“近邻”数据应该是相似的,因此将数据用其近邻(“箱”或“桶”
13、)替代,这样既可以光滑有序数据值,还能在一定程度上保持数据的独有特点。(2)回归。回归技术是通过一个映像或函数拟合多个属性数据,从而达到光滑数据的效果。线性回归是寻找一条“最佳”直线来拟合多个属性,从而使用其中的某些属性预测其他属性。(3)离群点分析。聚类可以将相似的值归为同一“簇”,因此主要使用聚类等技术来检测离群点。聚类技术将在8.3节展开讨论。8.2 数据预处理第八章 数据挖掘of31128.2.2 数据集成数据挖掘需要的数据往往分布在不同的数据源中,数据集成就是将多个数据源合并存放在一个一致的数据存储(如数据仓库)中的过程。在实际应用中,数据集成解决3类问题:实体识别、冗余和相关分析,
14、以及数值冲突的检测与处理。1.实体识别实体识别是指从不同数据源识别现实世界的实体,它的任务是统一不同源数据的矛盾之处。例如,一个数据库中的属性名student_id与另一个数据库中的属性名student_number表示的含义是否相同。每个属性的元数据包括属性名、现实含义、数据类型、取值范围,以及处理零或空白时的空值规则。元数据的统一设计不仅可以有效避免模式集成的错误,还能在变换数据时起到一定的作用。8.2 数据预处理第八章 数据挖掘of31138.2.2 数据集成2.冗余和相关分析数据集成往往导致数据冗余,分析冗余有很多种方法。首先,可以将数据进行可视化处理,将数据点绘制成图表后趋势和关联会
15、变得清晰起来。除此之外,冗余还可以通过相关性分析方法检验。对于标称数据,可以使用卡方检验;对于数值属性,可以用相关系数度量一个属性在多大程度上蕴含另一个属性,通过相关性分析来删除冗余数据。3.数值冲突的检测与处理对于现实世界的同一实体,由于表达方式、尺度标准或编码的不同常导致元数据的巨大差异。例如,在大学的课程评分系统中,有的学校采用A+F对成绩进行评分,而有的则采用数值1100评分。于是在对这两所学校进行数据库合并时,应该将两个系统的评分制度做统一处理,以便进行进一步的数据挖掘。8.2 数据预处理第八章 数据挖掘of31148.2.3 数据交换在进行数据挖掘前,须对数据集进行相应的数据变换。
16、常用的变换策略如下。1.数据规范化数据规范化的目的是将数据按比例缩放,使得属性之间的权值适合数据挖掘。例如,统计身高信息的度量单位是不同的,若在数据挖掘中把height属性的度量单位从米变成英寸,则可能导致完全不同的结果。常见的数据规范化方法包括最小-最大规范化、z-score分数规范化、小数定标规范化等。2.数据离散化数据离散化是将数值属性的原始值用区间标签或概念标签替换的过程,它可以将连续属性值离散化。连续属性离散化的实质是将连续属性值转换成少数有限的区间,从而有效地提高数据挖掘工作的计算效率。8.2 数据预处理第八章 数据挖掘of31158.2.3 数据交换3.概念分层概念分层的主要思想
17、是将低层概念的集合映射到高层概念的集合,它广泛应用于标称数据的转换。如现有某个数据库需要对关于地理位置location的属性集进行概念分层,其中属性内容包括街道street、国家country、城市city和省份province_or_state。首先,对每个属性不同值的个数进行统计分析,并将其按照升序进行排列。其次,根据排列好的属性顺序,自顶向下进行分层。根据大家的常规认识,对属性的全序排列结果为街道street城市city省份province_or_state国家country,即街道street属性在最顶层,国家country属性在最底层。最后,用户根据产生的分层,选择合适的属性代替该属
18、性集。8.2 数据预处理第八章 数据挖掘of31168.2.4 Python数据预处理下面结合kaggle比赛HousePrices来介绍数据预处理。1.加载数据houseprice=pd.read_csv(./input/train.csv)#加载后放入DataFrame里all_data=pd.read_csv(train.csv,header=0,parse_dates=time,usecols=time,LotArea,price)#可选择加载哪几列houseprice.head()#显示前5行数据houseprice.info()#查看各字段信息houseprice.shape#查看
19、数据集行列分布houseprice.describe()#查看数据大体情况,可获得某一列的基本统计特征8.2 数据预处理第八章 数据挖掘of31178.2.4 Python数据预处理2.分析缺失数据houseprice.isnull()#元素级别的判断,把对应的所有元素的位置都列出来,元素为空值或NA就显示True;否则,显示Falsehouseprice.isnull().any()#列级别的判断,只要该列有为空值或NA的元素,就为True;否则,为Falsemissing=houseprice.columnshouseprice.isnull().any().tolist()#将为空值或N
20、A的列找出来housepricemissing.isnull().sum()#将列中为空值或NA的元素个数统计出来#将某一列中缺失元素的值,用value值进行填补。处理缺失数据时,如该列都是字符串,不是数值,则可以用出现次数最多的字符串来填补缺失值def cat_imputation(column,value):houseprice.lochousepricecolumn.isnull(),column=valuehousepriceLotFrontage,AlleyhousepriceAlley.isnull()=True#从LotFrontage 和Alley列中选择行,选择Alley中数
21、据为空值的行。主要用来看两个列的关联程度,看它们是不是大多同时为空值。housepriceFireplaceshousepriceFireplaceQu.isnull()=True.describe()#对筛选出来的数据进行描述,比如一共多少行、均值、方差、最小值、最大值,等等8.2 数据预处理第八章 数据挖掘of31188.2.4 Python数据预处理3.统计分析housepriceMSSubClass.value_counts()#统计某一列中各个元素值出现的次数print(Skewness:%f%housepriceMSSubClass.skew()#列出数据的偏斜度print(Kur
22、tosis:%f%housepriceMSSubClass.kurt()#列出数据的峰度housepriceLotFrontage.corr(housepriceLotArea)#计算两个列的相关度housepriceSqrtLotArea=np.sqrt(housepriceLotArea)#将列的数值求根,并赋予一个新列housepriceMSSubClass,LotFrontage.groupby(MSSubClass,as_index=False).mean()#对MSSubClass进行分组,并求分组后的平均值8.2 数据预处理第八章 数据挖掘of31198.2.4 Python数据
23、预处理4.数据处理1)删除相关del housepriceSqrtLotArea#删除列housepriceLotFrontage.dropna()#去掉为空值或NA的元素houseprice.drop(Alley,axis=1)#去掉Alley列,不管空值与否df.drop(df.columns0,1,axis=1,inplace=True)#删除第1、2列,inplace=True表示直接在内存中替换,不用二次赋值生效houseprice.dropna(axis=0)#删除有空值的行houseprice.dropna(axis=1)#删除有空值的列2)缺失值填补处理housepriceLo
24、tFrontage=housepriceLotFrontage.fillna(0)#将该列中的空值或NA填补为0all_data.product_typeall_data.product_type.isnull()=all_data.product_type.dropna().mode().values#如果该列是字符串,就将该列中出现次数最多的字符串赋予空值,mode()函数是取出现次数最多的元素housepriceLotFrontage.fillna(method=pad)#使用前一个数值替代空值或NA,就是用NA前面最近的非空数值替换housepriceLotFrontage.filln
25、a(method=bfill,limit=1)#使用后一个数值替代空值或NA,limit=1是限制如果有几个连续的空值,只有最近的一个空值可以被填补housepriceLotFrontage.fillna(housepriceLotFrontage.mean()#使用平均值进行填补housepriceLotFrontage.interpolate()#使用插值来估计NaN。如果index是数字,可以设置参数method=value;如果是时间,可以设置method=timehouseprice=houseprice.fillna(houseprice.mean()#将缺失值全部用该列的平均值代
展开阅读全文