数据挖掘学习(二)——数据探索与清洗

2023-11-07

笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值,找寻数据的秘密,笔者认为,数据的价值不仅仅只体现在企业中,个人也可以体会到数据的魅力,用技术力量探索行为密码,让大数据助跑每一个人,欢迎直筒们关注我的公众号,大家一起讨论数据中的那些有趣的事情。

我的公众号为:livandata

1、数据探索与数据清洗概述:

淘宝零食类数据为分析案例:

如何发现空值、异常值等。

#!/usr/bin/env python
# _*_ UTF-8 _*_


import matplotlib.pylab as pyl
import numpy as npy
import pandas as pda
import pymysql

# 导入数据:
conn = pymysql.connect(host='127.0.0.1',
                      
user='root',
                      
passwd='123456',
                      
db='livan')

sql =
"select * from taob"

data = pda.read_sql(sql, conn)

print(data.describe())
# 数据清洗:
# 1、首先把价格为零的数据变为空值(插补法):
x=0
data["price"][(data["price"]==0)]= None
for
i in data.columns:
   
for j in range(len(data)):
       
if(data[i].isnull())[j]:
            data[i][j]=
"36"
           
x+=1
print(x)

# 2、异常值处理:
# 画散点图(横轴为价格,纵轴为评论数)
# 得到价格
data2 = data.T
price = data2.values[
2]
# 得到评论数:
comt = data2.values[3]
pyl.plot(price
, comt, 'o')
pyl.show()

# 异常值处理
# 评论数异常为>200000;价格异常为>2300
line = len(data.values)
col =
len(data.values)
da = data.values

for i in range(0, line):
   
for i in range(0, col):
       
if(da[i][2]>2300):
            da[i][
2] = "36"
       
if(da[i][3]>"200000"):
            da[i][j] =
"58"

# 查看修正后的数据:
da2 = da.T
price = da2[
2]
comt = da2[
3]
pyl.plot(price
, comt, 'o')
pyl.show()

2、数据分布探索实战:

数据清洗,数据分布式探索,一方面从大范围往小处看你,另一方面从小范围往大处看。探索玩整体趋势后再去探索局部的区域。

#!/usr/bin/env python
# _*_ UTF-8 _*_


import matplotlib.pylab as pyl
import numpy as npy
import pandas as pda
import pymysql

# 导入数据:
conn = pymysql.connect(host='127.0.0.1',
                      
user='root',
                      
passwd='123456',
                       
db='livan')

sql =
"select * from taob"

data = pda.read_sql(sql, conn)

print(data.describe())
# 数据清洗:
# 1、首先把价格为零的数据变为空值(插补法):
x=0
data["price"][(data["price"]==0)]= None
for
i in data.columns:
   
for j in range(len(data)):
       
if(data[i].isnull())[j]:
            data[i][j]=
"36"
           
x+=1
print(x)

# 2、异常值处理:
# 画散点图(横轴为价格,纵轴为评论数)
# 得到价格
data2 = data.T
price = data2.values[
2]
# 得到评论数:
comt = data2.values[3]
pyl.plot(price
, comt, 'o')
pyl.show()


# 异常值处理
# 评论数异常为>200000;价格异常为>2300
line = len(data.values)
col =
len(data.values)
da = data.values

for i in range(0, line):
   
for i in range(0, col):
       
if(int(da[i][2])>200):
            da[i][
2] = "36"
       
if(float(da[i][3])>10000):
            da[i][
3] = "58"

# 查看修正后的数据:
da2 = da.T
price = da2[
2]
comt = da2[
3]
pyl.plot(price
, comt, 'o')
pyl.show()


# 分布分析:
# 极差:最大值-最小值;
# 组距:极差/组数;
pricemax = float(da2[2]).max()
pricemin =
float(da2[2]).min()
commentmax =
float(da2[3]).max()
commentmin =
float(da2[3]).min()

pricerg = pricemax-pricemin
commentrg = commentmax - commentmin

pricedst = pricerg/
12
commentdst = commentrg/12

# 画价格的直方图:
pricesty = npy.arange(pricemin, pricemax, pricedst)
pyl.hist(da2[
2], pricesty)
pyl.show()


# 画评论的直方图:
commentsty = npy.arange(commentmin, commentmax, commentdst)
pyl.hist(da2[
3],commentsty)
pyl.show()

数据集成的实战:

#!/usr/bin/env python
# _*_ UTF-8 _*_


import matplotlib.pylab as pyl
import numpy as npy
import pandas as pda
import pymysql

a = npy.array([[
1,5,6],[9,4,3]])

b = npy.array([[
6,36,7],[2,3,39]])

# 数据整合:
c = npy.concatenate((a, b))
print(c)

3、数据变换:

离差:最大值与最小值之间的差;可以消除量纲(即单位)的影响。

#!/usr/bin/env python
# _*_ UTF-8 _*_


import matplotlib.pylab as pyl
import numpy as npy
import pandas as pda
import pymysql

conn = pymysql.connect(
host='127.0.0.1',
                      
user='root',
                      
passwd='123456',
                      
db='livan')

sql =
"select price, comments from taob"

data = pda.read_sql(sql, conn)

# print(data.describe())
#
# #
计算离差标准化:可以消除量纲,消除单位的影响:
# 又被称作:最小-最大标准化。
#
# data2 = (data-data.min())/(data.max()-data.min())
#
# print(data2)

#
标准差标准化:消除量纲等因素影响,同时也可以消除自身数据变异的影响。
# 特性为:平均数为零,标准差为1.
#
又被称作:零-均值标准化

data3 = (data-data.mean())/(data.std())

print(data3)

# 小数定标规范化:消除单位影响。
# 消除量纲(单位)的影响。
# ceil()即进一取整。

k = npy.ceil(npy.log10(data.abs().max()))

data4 = data/
10**(k)

离散化:将一些连续的数据离散化。

等宽离散化:将值放在固定宽度的区间。

等频率离散化:将相同数量的点放在每个区间里面。

一维聚类离散化:

#!/usr/bin/env python

# _*_ UTF-8 _*_

import matplotlib.pylab as pyl
import numpy as npy
import pandas as pda
import pymysql

conn = pymysql.connect(
host='127.0.0.1',
                      
user='root',
                      
passwd='123456',
                      
db='livan')

sql =
"select price, comments from taob"

data = pda.read_sql(sql, conn)

data5 = data[
u"price"].copy()

data6 = data5.T

data7 = data6.values


print(data7)

k =
3

# abc = [1, 5, 7, 8, 10]
#
# #
离散化处理:cut(需要划分的数据, 划分的区间<等分的份数>,标签<每一份代表什么>)
# #
等宽离散化:
# pda.cut(abc, 4, labels=["便宜", "适中", "有点贵", "天价"])
#
# #
非等宽离散化:
# pda.cut(abc, [3, 6, 10, 19], labels=["便宜", "适中", "有点贵"])

c1 = pda.cut(data7, k, labels=["便宜", "适中", "有点贵"])

print(c1)

c2 = pda.cut(data7
,
            
[0, 50, 100, 300, 500, 2000, data7.max()],
            
labels=["非常便宜", "便宜", "适中", "有点贵", "很贵", "非常贵"])

print(c2)

4、属性构造:

#!/usr/bin/env python

# _*_ UTF-8 _*_

import matplotlib.pylab as pyl
import numpy as npy
import pandas as pda
import pymysql

conn = pymysql.connect(
host='127.0.0.1',
                      
user='root',
                      
passwd='123456',
                      
db='livan')

sql =
"select * from myhexun"

data = pda.read_sql(sql, conn)

ch = data[
u"comment"]/data[u"hits"]
# 通过属性之间的关系构造新的属性
data[u"评点比"] = ch

file =
"./hexun.xls"
# 将评点比写在Excel中。
data.to_excel(file, index=False)

print(ch)

5、数据规约(即对数据进行精简):

属性规约:对属性进行精简,主成分分析等;

数值规约:对重复数值等进行精简,以方便处理,离散化处理可以简单的划分为数值规约。

1)数据降维

    对于现在维数比较多的数据,我们首先需要做的就是对其进行降维操作。降维,简单来说就是说在尽量保证数据本质的前提下将数据中的维数降低。降维的操作可以理解为一种映射关系,例如函数 ,即由原来的二维转换成了一维。处理降维的技术有很多种,如前面的SVD奇异值分解,主成分分析(PCA),因子分析(FA),独立成分分析(ICA)等等。

2)PCA的概念

    PCA是一种较为常用的降维技术,PCA的思想是将 维特征映射到 维上,这 维是全新的正交特征。这 维特征称为主元,是重新构造出来的 维特征。在PCA中,数据从原来的坐标系转换到新的坐标系下,新的坐标系的选择与数据本身是密切相关的。其中,第一个新坐标轴选择的是原始数据中方差最大的方向,第二个新坐标轴选取的是与第一个坐标轴正交且具有最大方差的方向,依次类推,我们可以取到这样的 个坐标轴。

3)PCA的操作过程

    3.1)PCA的操作流程大致如下:

去平均值,即每一位特征减去各自的平均值

计算协方差矩阵

计算协方差矩阵的特征值与特征向量

对特征值从大到小排序

保留最大的 个特征向量

将数据转换到 个特征向量构建的新空间中

    3.2)具体的例子

假设二维数据为:


取平均值:我们计算每一维特征的平均值,并去除平均值,我们计算出均值为:


去除均值后的矩阵为:


计算的协方差矩阵

计算的特征值与特征向量

其中,特征值为

特征向量为

对特征值进行排序,显然就两个特征值

选择最大的那个特征值对应的特征向量

转换到新的空间:

3.3)实验的仿真:

我们队一个数据集进行了测试:

#!/usr/bin/env python

# _*_ UTF-8 _*_

import matplotlib.pylab as pyl
import numpy as npy
import pandas as pda
import pymysql
from sklearn.decomposition import PCA

# 主成分分析:
conn = pymysql.connect(host='127.0.0.1',
                      
user='root',
                      
passwd='123456',
                      
db='livan')

sql =
"select hits, comment from myhexun"

data = pda.read_sql(sql, conn)

ch = data[
u"comment"]/data[u"hits"]

data[
u"hits"] = ch
# 主成分分析进行中:
pca1 = PCA()

pca1.fit(data)

#返回模型中的各个特征量:
characteristic = pca1.components_

print(characteristic)

# 返回各个成分中各自方差的百分比,贡献率:
rate = pca1.explained_variance_ratio_

print(rate)

# 降维操作:
# pca中的参数为希望的维数:
pca2 = PCA(2)

pca2.fit(data)

reduction = pca2.transform(data)

characteristic2 = pca2.components_


print(characteristic2)

print(reduction)

# 对降维数据进行恢复:
recovery = pca2.inverse_transform(reduction)

print(recovery)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据挖掘学习(二)——数据探索与清洗 的相关文章

  • 数据分析36计(22):分析师入门常见错误 "幸存者偏差",如何用匹配和加权法规避...

    在日常功能迭代分析中 一般会直接看使用该功能和未使用该功能的用户在成功指标上的表现 将两组数据求个差异值就得出功能的效果结论 但是有敏锐的分析师会发现 功能大部分情况下有筛选效应 即使用该功能的用户可能本身质量比较高 活跃比较频繁 用以上的
  • Matlab 中的高效分类

    我有一张尺寸为 RGB 的图像uint8 576 720 3 我想将每个像素分类为一组颜色 我已经使用rgb2lab从RGB空间到LAB空间 然后删除L层 所以现在是double 576 720 2 由AB组成 现在 我想将其分类为我在另一
  • GraphPad Prism 9:最强大的数据分析软件,助您轻松解析复杂数据!

    您是否正在寻找一个功能强大 易于使用的数据分析软件 GraphPad Prism 9是您的最佳选择 作为全球领先的科学数据分析工具 Prism 9提供了广泛的功能和先进的统计分析方法 帮助您轻松解析和可视化复杂的数据 Prism 9不仅具备
  • 拼多多商品价格监控自动化API接口获取拼多多商品详情数据API接口

    随着电子商务的飞速发展 越来越多的人选择在网上购物 在这个充满竞争的市场中 拼多多以其独特的商业模式和创新的营销手段 迅速崛起成为中国领先的电商平台之一 为了更好地满足消费者的需求 拼多多提供了丰富的API接口 使得开发者可以方便地获取商品
  • 数据仓库与数据挖掘复习资料

    一 题型与考点 第一种 1 解释基本概念 中英互译 解释简单的含义 2 简答题 每个10分有两个一定要记住 考时间序列Time series 第六章 的基本概念含义 解释 作用 序列模式挖掘的作用 考聚类 第五章 重点考密度聚类的定义描述
  • Python数据分析学习路线详细版总结

    数据分析人人都有必要掌握一点 哪怕只是思维也行 下面探讨Python数据分析需要学习的知识范畴 结合自己的经历和理解 总结的 学习大纲 有些章节带有解释 有些没有 当然 关于学习范畴 可能每个人的理解都不太一样 以下仅供参考 1 数据分析思
  • Python-一键爬取图片、音频、视频资源

    前言 使用Python爬取任意网页的资源文件 比如图片 音频 视频 一般常用的做法就是把网页的HTML请求下来通过XPath或者正则来获取自己想要的资源 这里我做了一个爬虫工具软件 可以一键爬取资源 媒体文件 但是需要说明的是 这里爬取资源
  • 探索关系:Python中的Statsmodels库进阶

    目录 写在开头 1 多元线性回归 场景介绍 2 Logistic回归 2 1 Logistic回归的概念 2 2 应用案例 2 2 1 建立模型和预测
  • 深入挖掘:Python中的Statsmodels库高级应用

    写在开头 随着数据科学的发展 解决更为复杂问题的关键往往在于深入了解数据并采用更高级的分析工具 本文将带您深入探讨Python中的Statsmodels库 并引入一些高级功能 为更深入的数据挖掘奠定基础 1 方差分析 1 1 方差分析概念
  • 如何在 K - 均值算法中优化 K [重复]

    这个问题在这里已经有答案了 可能的重复 使用 k 均值聚类时如何确定 k https stackoverflow com questions 1793532 how do i determine k when using k means c
  • 航空港务数据大屏为航空港的可持续发展提供有力支撑!

    随着经济的发展 不断加建与扩建民用机场 空港行业规模不断扩大 在不断引进和消化发达国家先进技术的同时 中国深入开展了对新技术和新材料的研究 极大地丰富和发展了中国的机场建设技术 且各项机场建设计划均已落实推进 行业在经济发展的推动下欣欣向荣
  • 电商API的探索之旅:从请求示例到高并发挑战

    在数字化时代 电商系统已成为商业领域不可或缺的一环 电商API作为电商系统的重要组成部分 承担着连接前端和后端的桥梁角色 其重要性不言而喻 本文将深入探讨电商API的核心技术 从请求示例到高并发处理 为您揭示电商API的探索之旅 一 电商A
  • 振弦采集仪在地基沉降监测中的应用研究

    振弦采集仪在地基沉降监测中的应用研究 振弦采集仪是一种专门用于测量地基沉降的仪器 它采用振弦原理来测量地基的沉降情况 振弦采集仪通过在地基上安装一根细长的弹性振弦 并测量振弦的变形来获得地基沉降的数据 在地基沉降监测中 振弦采集仪可以提供精
  • 天猫数据分析工具推荐(天猫第三方数据平台)

    在电商迅速发展的大背景下 做好天猫数据分析能够在多方面帮助品牌商家更好地运营店铺 塑造品牌 如通过数据分析了解消费者的需求 购买偏好 这有利于品牌商家及时调整商品结构 产品推广 商品宣传等等 灵活制定品牌的销售策略 那么 天猫平台行业 品牌
  • 【状态估计】电力系统状态估计中的异常检测与分类(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码及详细文
  • Weka 的主成分分析

    我刚刚在训练集上计算了 PCA Weka 返回了新属性及其选择和计算方式 现在 我想使用这些数据构建一个模型 然后在测试集上使用该模型 不知道有没有办法根据新的属性类型自动修改测试集 您是否需要主成分进行分析或仅将其输入分类器 如果不是 只
  • 如何使用Weka预测结果

    我是 Weka 新手 对该工具感到困惑 我有一个关于水果价格和相关属性的数据集 我正在尝试使用数据集预测具体的水果价格 由于我是 Weka 新手 我不知道如何完成这项任务 请帮助我或指导我了解有关如何进行预测以及此任务的最佳方法或算法是什么
  • 如何分析稀疏邻接矩阵?

    我正在研究稀疏邻接矩阵 其中大多数单元格为零 有些单元格为零 两个单元格之间的每个关系都有一个可能很长的多项式描述 并且手动分析它们非常耗时 我的老师建议使用纯代数方法格罗布纳基地 http pastebin com jwVMxbM2但在继
  • 梯度下降和牛顿梯度下降有什么区别?

    我明白梯度下降的作用 基本上 它试图通过缓慢地沿着曲线移动来走向局部最优解 我想了解普通梯度下降法和牛顿法之间的实际区别是什么 我从维基百科上读到了这样一句话 牛顿方法使用曲率信息来采取更直接的路线 这直观上意味着什么 在局部最小值 或最大
  • TFIDF 计算混淆

    我在网上找到了以下计算TFIDF的代码 https github com timtrueman tf idf blob master tf idf py 我在函数 def idf word documentList 中添加了 1 这样我就不

随机推荐

  • Java_集合之Stack类的使用

    一 认识Stack 顾名思义 Stack代表是栈 栈是一种常用的数据结构 只能栈头插入元素 也只能从栈头出栈 遵循先进后出原则 栈好比手枪上弹夹的过程 最开始上的子弹会被压在最下面 最晚上的子弹反而最先被打出去 二 Stack类的使用 我们
  • 刷脸支付选择有软件开发能力的公司

    目前来说支付方式再次发生改变 从原本的扫码支付开始向着刷脸支付转变 因此作为企业商家就需要委托刷脸付款设备公司来定制优秀的刷脸支付系统和设备 而今天就请掌优技说说该如何选择这类公司 现在有很多刷脸付款设备公司 企业商家在选择时应该先把技术和
  • bwlabel函数的C语言实现及用法解析

    bwlabel函数的C语言实现及用法解析 在图像处理的领域中 连通区域标记是一项非常重要的技术 在C语言中 我们可以使用bwlabel函数来实现这个功能 本文将介绍bwlabel函数的实现原理和用法 并通过示例代码来演示其功能 bwlabe
  • 虚函数表详解

    一 概述 为了实现C 的多态 C 使用了一种动态绑定的技术 这个技术的核心是虚函数表 下文简称虚表 本文介绍虚函数表是如何实现动态绑定的 二 类的虚表 每个包含了虚函数的类都包含一个虚表 我们知道 当一个类 A 继承另一个类 B 时 类A会
  • 机器视觉软件工程师的生活是怎样的?

    大家好 本人是刚刚入职的视觉工程师 现在已经一年了 也给大家分享一下在这一段时间里 我做了什么 以及学到了什么 对了 虽然我只做了两个月的视觉工程师 但是我已经连续写了12年的日记了 我想把这个好习惯一直延续下去 也算是做个记录 可能没有人
  • c++多态及虚函数表内部原理实战详解

    1 多态实现方式 c 的多态机制主要是靠虚函数来实现 具体来说 就是用父类的指针指向子类的实例 然后通过父类指针调用子类对象中的成员函数 这样 就实现了父类指针的 多态 想了解虚函数实现机制 就必须先了解对象的存储方式 2 类的存储方式 我
  • python span标签的text属性_python + selenium 获取标签文本的为空解决办法

    一 确定元素是否被隐藏 link driver find element By xx value is displayed print link 如果输出结果为False 说明元素被隐藏了 二 解决方法 1 修改当前定位元素方式方法 修改定
  • 使react组件重新渲染的三种方式

    1 setState 2 props发生变化 3 forceUpdate
  • 目前最大的人像抠图数据集P3M-10k开源了!助力隐私保护的人像抠图研究

    点击下方卡片 关注 CVer 公众号 AI CV重磅干货 第一时间送达 点击进入 gt CV 微信技术交流群 转载自 京东探索研究院 人像抠图 是指从人物图像中提取人物前景 是计算机视觉领域的基础研究问题之一 1 2 3 4 8 在下游任务
  • 基于vmdk文件创建虚拟机

    基于vmdk文件创建虚拟机 1 准备vmdk文件 下载地址如下 链接 https pan baidu com s 1coQuZw8cgg5oU5bSegsS7Q pwd 5mv0 提取码 5mv0 账号 密码 root sinzuo 2 创
  • react 函数组件和class组件的区别

    一 组件的定义 1 class组件 继承React Component 且需要创建render方法来返回元素 class Welcome extends React Component render return h1 Hello this
  • 使用gdb调试多进程和多线程

    GDB调试多进程 1 默认设置下 在调试多进程程序时GDB只会调试主进程 但是GDB gt V7 0 支持多进程的分别以及同时调试 换句话说 GDB可以同时调试多个程序 只需要设置follow fork mode 默认值 parent 和d
  • 查看pcie总线上的设备ID以及带宽计算

    1 获取设备在pcie总线上的ID lspci 00 00 0 Class 0600 Device 8086 190f rev 07 00 01 0 Class 0604 Device 8086 1901 rev 07 00 01 1 Cl
  • 用python解“计算工资”题

    7 10 计算工资 某公司员工的工资计算方法如下 一周内工作时间不超过40小时 按正常工作时间计酬 超出40小时的工作时间部分 按正常工作时间报酬的1 5倍计酬 员工按进公司时间分为新职工和老职工 进公司不少于5年的员工为老职工 5年以下的
  • v-show和v-if有何异同?

    v show 用于根据条件展示元素 带有 v show 指令的元素始终会被渲染并保留在 DOM 中 v show 只是简单地切换元素的 CSS property display 注意 v show 不支持
  • SQL Server(三)-查询数据(3)

    多表连接查询和子查询 两表连接查询 多表连接查询 左外 右外 全外连接查询 组合查询 子查询 在SSMS的查询设计器中设计查询1 连接查询 1 使用无连接规则连接两表 不设置WHERE子句 所谓无连接规则连接 就是指连接两表的SELECT语
  • PPT怎么切换不同的母版

    首先选中要改变母版的PPT 右击鼠标出现菜单栏 选择版式 版式里面有所有的幻灯片母版可供选择
  • STM32------PWM

    文章目录 前言 一 PWM概述 二 库函数 1 GPIO引脚映射 2 定时器通道1配置 3 定时器通道1比较值 三 PWM1和PWM2模式 1 定义 2 示例 四 dc调光与pwm调光区别 五 呼吸灯源码下载 总结 前言 STM32 PWM
  • centos7防火墙配置详细

    一 条件防火墙是开启的 systemctl start firewalld 1 查看防火墙的配置 firewall cmd state firewall cmd list all 2 开放80端口 firewall cmd permanen
  • 数据挖掘学习(二)——数据探索与清洗

    笔者是一个痴迷于挖掘数据中的价值的学习人 希望在平日的工作学习中 挖掘数据的价值 找寻数据的秘密 笔者认为 数据的价值不仅仅只体现在企业中 个人也可以体会到数据的魅力 用技术力量探索行为密码 让大数据助跑每一个人 欢迎直筒们关注我的公众号