python数据挖掘与分析

1、数据挖掘的基本任务

数据挖掘就是借助机器学习、深度学习、大数据等技术,从数据中分析出所需的价值,主要涉及的任务有分类、预测、回归、关联分析、时间序列、聚类分析等。

2、数据挖掘建模的流程

  • 目标定义:任务理解、指标确定
  • 数据采集:建模抽样、质量把控、实时采集
  • 数据整理:数据探索、数据清洗、数据变化表
  • 构建模型:算法选择、模型搭建、模型验证
  • 模型评价:模型评价指标选择、模型优化
  • 模型发布:模型部署、模型运行监测

3、数据挖掘采用工具

语言:Python、anaconda

工具:pandas、pytorch、sklearn、keras、numpy、gensim

3.1、箱型图原理

python数据挖掘与分析_第1张图片

箱型图分析:箱型图涉及中位数(排序后最中间数)、均值、上四分位(数据中有四分之一大于该值)、下四分位(数据中有四分之一小于该值)、上界(获取上四分位与下四分位的差值,该值加上上四分位 得到上界)、下界(获取上四分位与下四分位的差值,下四分位减去 该值得到下界)

3.1、相关系数计算原理

python数据挖掘与分析_第2张图片

#计算相关系数
file_path_1='../data/catering_sale_all.xls'
data_1=pd.read_excel(file_path_1,index_col='日期')
print(data_1)
data_corr=data_1.corr()[u'百合酱蒸凤爪'] #获取其他菜品和该菜品相关性,不加该菜品将表示两两之间相关性
print(data_corr)
print('*'*30)

3.3、pandas主要统计特征函数

python数据挖掘与分析_第3张图片

说明:以上函数可以直接对于DataFrame进行操作,DataFrame.sum()表示对于DataFrame 中每一列进行求和,最终获得每一列的和,上面表中的函数都是按照这个逻辑进行计算的。如果只想知道某一列的DataFrame['列名'].sum()。

data.sum

data['列名'].sum()

4、数据预处理

4.1、数据清洗

数据清洗主要涉及删除无关信息、去重复值、缺失值处理、异常值处理等。

缺失值处理方法:

    • 均值、中位数、最大值最小值填充;
    • 临近值填充
    • 回归方法填充
    • 插值法:拉格朗日插值法、牛顿插值法

异常值处理方法:

    • 直接删除
    • 视为缺失值
    • 平均修正
    • 不处理,直接建模

数据归一化操作:

最大-最小值规范化:缺点是当数据比较集中,也就是方差很小时,存在一个很大的异常值,将导致归一化后的值都是近似零的。

零-均值归一化:目前最长用的,归一化后的值偏向于均值为0,方差为1的分布。

#归一化操作
file_path_2='../data/normalization_data.xls'
data_2=pd.read_excel(file_path_2,header=None)
print(data_2)
#最大-最小值归一化
data_min_max=(data_2-data_2.min())/(data_2.max()-data_2.min())
print(data_min_max)
#零-均值归一化
data_zero_mean=(data_2-data_2.mean())/data_2.std()
print(data_zero_mean)

4.3、连续数据离散化

数据离散化主要有3三种方法:

      • 等宽法:将数据按照一定距离进行切割,给与每个切割区间一个标签,缺点,对于临近切割点的点不能很好的表达其类别,另外对于异常值比较敏感,容易造成标签内部有些多,有些少的问题,对于模型训练存在一定问题。
      • 等频法:将数据按照总量和类别数进行平均划分,这样解决了以上问题,但是对于类别内部相同的数据可能存在不能分在一个类别中的问题。
      • 聚类方法:将数据进行聚类,根据聚类中心进行打标签。
'''
等距离散化参数:
data:必须是一维数组
k:分成几类
labels:每一类的标签
'''
d1=pd.cut(data,k,labels=['1','2','3','4'])
print(pd.DataFrame(d1))

4.4、属性规约

属性规约主要是对于特征进行剔除,保证每个特征工程最简洁,提升模型性能。

主成分分析:

# #主成分分析
# from sklearn.decomposition import PCA
# pca=PCA(3)
# pca.fit(data)
# data_tzxl=pca.components_ #返回模型中特征向量
# data_bfb=pca.explained_variance_ratio_ #返回各个成分各自的方差百分比
# print('特征向量',data_tzxl)
# print("各个成分各自方差百分比",data_bfb) #可以看到前4个向量的贡献度已经达到97%
#
# low_d=pca.transform(data)
# print(low_d)
# print(pca.inverse_transform(low_d))

5、挖掘建模

python数据挖掘与分析_第4张图片

python数据挖掘与分析_第5张图片

逻辑回归进行特征提取:

'''
构建逻辑回归,采用随机逻辑回归进行特征筛选,然后构建模型
'''
import pandas as pd

filename='../data/bankloan.xls'
data=pd.read_excel(filename)
print(data)
x_train=data.iloc[:,:8]
y_train=data.iloc[:,8]
print(x_train)
print(y_train)
#构建模型
from sklearn.linear_model import LogisticRegression as LR
from sklearn.linear_model import RandomizedLogisticRegression as RLR

#利用随机逻辑回归进行特征筛选,方便进行特征提取
rlr=RLR()
rlr.fit(x_train,y_train)
print(rlr.get_support()) #获取特征筛选结果
print(rlr.scores_) #获取特征筛选结果的得分

##计算与预测目标的相关性,进行特征筛选
corr=data.corr()['违约'] 
print(corr)

说明:将逻辑回归进行特征提取获得的结果和相关性分析提取的特征进行试验对比,两者获取的结果相同,说明不管用那种推荐度特征提取方法,结果大致都相同。

你可能感兴趣的:(机器学习,数据挖掘,python)