数据挖掘于分析实例解析——数据规范化处理
发布日期:2021-05-07 05:53:26 浏览次数:18 分类:原创文章

本文共 3377 字,大约阅读时间需要 11 分钟。

数据规范化的处理对于基于聚力的算法尤为的重要:1最小-最大规范化 20-均值规范化3小数标定规范化。

# -*- coding: utf-8 -*-"""Created on Thu Jan 18 16:14:38 2018@author: xjl规范化:归一化"""import pandas as pdimport numpy as npdatafile = './data/normalization_data.xls'data = pd.read_excel(datafile, header = None)data_n1 = (data - data.min())/(data.max() - data.min())    #最小-最大规范化data_n2 = (data - data.mean())/data.std()                  #零-均值规范化data_n3 = data/10**np.ceil(np.log10(data.abs().max()))    #小数定标规范化print(data_n1)print(data_n2)print(data_n3)结果: 0         1         2         30  0.074380  0.937291  0.923520  1.0000001  0.619835  0.000000  0.000000  0.8509412  0.214876  0.119565  0.813322  0.0000003  0.000000  1.000000  1.000000  0.5636764  1.000000  0.942308  0.996711  0.8041495  0.264463  0.838629  0.814967  0.9093106  0.636364  0.846990  0.786184  0.929571          0         1         2         30 -0.905383  0.635863  0.464531  0.7981491  0.604678 -1.587675 -2.193167  0.3693902 -0.516428 -1.304030  0.147406 -2.0782793 -1.111301  0.784628  0.684625 -0.4569064  1.657146  0.647765  0.675159  0.2347965 -0.379150  0.401807  0.152139  0.5372866  0.650438  0.421642  0.069308  0.595564       0      1      2       30  0.078  0.521  0.602  0.28631  0.144 -0.600 -0.521  0.22452  0.095 -0.457  0.468 -0.12833  0.069  0.596  0.695  0.10544  0.190  0.527  0.691  0.20515  0.101  0.403  0.470  0.24876  0.146  0.413  0.435  0.2571

连续数据属性离散化:常用的离散的方法是:等宽法 等频法 基于聚类的分析方法

# -*- coding: utf-8 -*-"""Created on Thu Jan 21 15:35:38 2018@author: xjl"""# 数据离散化import pandas as pdDATA_FILE = './data/discretization_data.xls'  # 参数初始化DATA = pd.read_excel(DATA_FILE)  # 读取数据DATA = DATA.loc[:, u'肝气郁结证型系数']k = 5 #表示类别# 等宽离散化d1 = pd.cut(DATA, k, labels=range(k))# 等频率离散化w = [1.0 * i / k for i in range(k + 1)]# m = DATA.describe()# n = DATA.describe(percentiles=w)w = DATA.describe(percentiles=w)[4:(4 + k + 1)]w[0] = w[0] * (1 - 1e-10)d2 = pd.cut(DATA, w, labels=range(k))from sklearn.cluster import KMeans  # 引入KMeans# 一维聚类离散化kmodel = KMeans(n_clusters=k, n_jobs=2)  # 建立模型kmodel.fit(DATA.reshape((len(DATA), 1)))  #训练模型c = pd.DataFrame(kmodel.cluster_centers_).sort(0)   #输出聚类中心,并且排序w = pd.rolling_mean(c, 2).iloc[1:] #相邻两项求中点,作为边界点w = [0] + list(w[0]) + [DATA.max()] #把首末边界点加上d3 = pd.cut(DATA, w, labels=range(k))# 自定义作图函数来显示聚类结果def cluster_plot(d, k):    import matplotlib.pyplot as plt    plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签    plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号    plt.figure(figsize=(8, 3))    for j in range(0, k):        plt.plot(DATA[d == j], [j for i in d[d == j]], 'o')    plt.ylim(-0.5, k - 0.5)    return pltcluster_plot(d1, k).show()cluster_plot(d2, k).show()cluster_plot(d3, k).show()

 

 

PCA主成分分析:

# -*- coding: utf-8 -*-"""Created on Sun Jan 21 19:19:29 2018@author: Amos"""#主成分分析 降维import pandas as pd#参数初始化inputfile = './data/principal_component.xls'outputfile = './tmp/dimention_reducted.xls' #降维后的数据data = pd.read_excel(inputfile, header = None) #读入数据from sklearn.decomposition import PCApca = PCA()pca.fit(data)print('模型向量=',pca.components_ )#返回模型的各个特征向量print('返回各个成分各自的方差百分比',pca.explained_variance_ratio_)#返回各个成分各自的方差百分比# low_d = pca.transform(data) #降低维度# pd.DataFrame(low_d).to_excel(outputfile)# pca.inverse_transform(low_d)    #复原数据

分别计算在每个成分在的贡献率:

print('返回各个成分各自的方差百分比',pca.explained_variance_ratio_)#返回各个成分各自的方差百分比

当选择的几个成分是时候贡献率就已经超过在一定的时候就可以进行PCA分析。减少运算量。

上一篇:数据挖掘于分析实例解析——汽车偷税漏税的项目详解以及利用LM神经网络算法自动识别窃电用户
下一篇:数据挖掘于分析实例解析——异常值处理(插值补齐的方法)

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2025年03月26日 01时35分11秒