
数据挖掘于分析实例解析——数据规范化处理
发布日期: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分析。减少运算量。
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2025年03月26日 01时35分11秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
DSP开发板准备
2019-03-05
测试基本
2019-03-05
5.redo undo
2019-03-05
《JVM的内存》
2019-03-05
c++中istringstream及ostringstream超详细说明
2019-03-05
c++中ifstream及ofstream超详细说明
2019-03-05
c++中endl操作符以及它的兄弟们
2019-03-05
c++中explicit和mutable关键字探究
2019-03-05
c语言结构体字节对齐详解
2019-03-05
linux c/c++面试知识点整理(八)
2019-03-05
epoll的基本使用
2019-03-05
linux网络编程系列(十二)--滑动窗口、拥塞控制、断线重连机制
2019-03-05
c++11&14-编译
2019-03-05
Deep residual learning for image recognition
2019-03-05
IO控制方式
2019-03-05
IO控制器
2019-03-05
Java 异常
2019-03-05
BP神经网络学习--MATLAB源码详细注释
2019-03-05
LeetCode122.买卖股票的最佳时机2Golang版
2019-03-05
还在花冤枉钱找人做电子签名?看这儿,教你制作纯手写电子签名
2019-03-05