机器学习(二) -- 数据预处理(1)

系列文章目录

机器学习(一) -- 概述

机器学习(二) -- 数据预处理(1-3)

未完待续……


目录

系列文章目录

前言

一、概述

二、数据获取

三、数据分布与趋势探查

1、散点图

2、折线图

3、频率分布直方表、图

4、柱状图

5、饼图

6、数据的统计信息

7、***复杂折线图

8、***分段绘图

9、***帕累托图(Pareto chart)


机器学习(二) -- 数据预处理(2)

机器学习(二) -- 数据预处理(3)


前言

tips:这里只是总结,不是教程哈。本章开始会用到numpy,pandas以及matplotlib,这些就不在这讲了哈。

“***”开头的是给好奇心重的宝宝看的,其实不太重要可以跳过。

此处以下所有内容均为暂定,因为我还没找到一个好的,让小白(我自己)也能容易理解(更系统、嗯应该是宏观)的讲解顺序与方式。

第一文主要简述了一下机器学习大致有哪些东西(当然远远不止这些),对大体框架有了一定了解。接着我们根据机器学习的流程一步步来学习吧,掐掉其他不太用得上我们的步骤,精练起来就4步(数据预处理,特征工程,训练模型,模型评估),其中训练模型则是我们的重头戏,基本上所有算法也都是这一步,so,这个最后写,先把其他三个讲了,然后,在结合这三步来进行算法的学习,兴许会好点(个人拙见)。


一、概述

还是先拿出咱们的老朋友,机器学习的流程图。

咱们这主要将数据预处理,而要进行机器学习首先需要数据,然后才能对数据进行预处理。

实际一点讲:数据清理、数据集成、数据变换、数据规约都是数据预处理的主要步骤,但是这四个没有严格意义上的先后顺序,在实际应用时并非全部会被使用(可能一个也不用,比如后面我们直接调用官方的iris包,但在实际自己获得的数据集中就会有各种各样的问题,视情况而定)

二、数据获取

获取数据途径多种多样,(括号内为废话:按理来讲,当今世界数据就是财富,一般而言别人的数据是不可能透露给你的,如果你和我一样还是个学生,可能可以从老师那里拿到数据),我们学习一般使用的是公开的数据集,如下为sklearn数据集(也是需要先安装sklearn库的哈)

(iris为例)(load*与fetch*的差别是,fetch还需要从网上下载,而load已经在datasets中了,也就是安装好sklearn就可以直接使用)

from sklearn.datasets import load_iris
iris = load_iris()

这样就获取到一个数据集了,但是我们还不知道这个数据集的其他性质。load*函数和feth*函数返回的数据类型是 datasets.base.Bunch,本质上是一个 dict,它的键值对可用通过对象的属性方式访问。(我用IDE的是Jupyter Notebook)

主要包含以下属性:

DESCR数据描述
feature_names特征名
target_names标签名
data特征数据数组
target标签数组
filename真实的文件地址
frame特殊返回值

1、DESCR

print(data.DESCR)  

从数据集描述中我们可以得到大量信息,150条数据,4个属性,分为3类等等

2、feature_names

print(iris.feature_names)

4个属性(特征)分别是花萼长度、花萼宽度、花瓣长度和花瓣宽度。

3、target_names

print(iris.target_names)

3种分类为三鸢尾、变色鸢尾、维吉尼亚鸢尾(好吧,这个不重要)

4、data

print(iris.data)

5、target

print(iris.target)

(刚好150条,你们快数数,坏笑QvQ)

6、***filename

导入的数据的绝对路径文件名

7、***frame

特殊返回值,其实用不到。

三、数据分布与趋势探查

想要查看数据分布,无疑通过数据可视化展示是最直观的,所以我们需要根据不同数据,分别绘制不同的图。

1、散点图

plt.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, verts=<deprecated parameter>, edgecolors=None, *, plotnonfinite=False, data=None, **kwargs)

常用:
plt.scatter(x,y,s=area,c='r',marker='.',alpha=0.5)

x:横坐标,
y:纵坐标,
s:标记的面积。控制每个点大小的列表,
c:标记的颜色。
marker:标记样式,
alpha:数据点透明度,0-1之间
sale = pd.read_excel('./data/sale.xlsx')
sale = np.array(sale)

fig = plt.figure()
plt.scatter(np.arange(len(sale)),sale,c='r',marker='.')
plt.xlabel('第x个数')
plt.ylabel('销售量')
plt.title('销售量情况')
plt.show()

最常用的就是散点图了,一般的数据都可以用散点图画出来(高维的选其中某一个特征即可)。 

 通过散点图,就可以大致清楚其数据分布,(这里只是一列销售量的数据哈,如果把x看成日期,我就可以看到每天销售量的情况,这种通过折线图更好展示。所以看下面的折线图。)

2、折线图

plot其实超牛的,而且也是可以画散点图的,还有更多plot小妙招等你发现。

#单条线:
plot(x, y, [format_string], **kwargs)
 
#多条线
plot(x, y, [format_string], x2, y2, [format_string], ..., **kwargs)


x:横坐标,
y:纵坐标,
format_string:控制曲线的格式字串,由颜色,标记和线条样式组成

eg:plot(x, y,'r*-', **kwargs)
红色,星形数据点,直线


也可以不用简写
eg:plot(data,'o',ms=20,mfc=k,mec=r)
data:没看错,他可以直接把一个合适格式的数据直接传进去,不一定非要x、y
'o':圆形标记
ms:标记大小
mfc:内部颜色
mec:边框颜色

等等……
fig = plt.figure()
plt.plot(np.arange(len(sale)),sale,'ro-')
plt.xlabel('第x个数')
plt.ylabel('销售量')
plt.title('销售量情况')
plt.show()

3、频率分布直方表、图

好,现在我们想了解每个销售端的数据分布情况,就可以画频率分布直方图。
我们需要一步一步计算(这也就是喜欢用jupyter的原因,可以一步一步写容易找到自己那里有问题),
这里的思路是:
要先计算极差,然后根据极差和组距确定组数,再用np.linspace()对数据进行切片,也就是确定每组之间的“分割点”,最后确定最终组距。
也可以有其他思路:
比如先确定组数,在算组距。再比如觉得这个区间范围的数字不好看,想取整数,也是可以的……(等等。可自由发挥)
这个表呢,看个人,想要就绘制一个吧,但一般没必要。
好,上面一大堆讲完了,其他那是用画柱状图的方式来画直方图,可以直接使用hist能得到相似(不完全一样哈)效果。
plt.hist(data,num)

num:组数(分成几组)

# 还有些高级操作,但意义不大哈,用到时,我们再来看
plt.hist(sale,8)
plt.xlabel('分布区间')
plt.ylabel('频率')
plt.title('频率分布直方图')
plt.show()

4、柱状图

其实直方图就是柱状图(柱形图)的一种啦,所以和上面没啥本质差别。
plt.bar(x, y, width=0.8, bottom=None, *, align='center', data=None, **kwargs)

x:
y:
width:柱子的宽度,默认0.8
bottom:柱子的基准高度,默认0
align:柱子在x轴上的对齐方式。字符串,取值范围为{'center', 'edge'},默认为'center'。
    'center':x位于柱子的中心位置。
    'edge':x位于柱子的左侧。如果想让x位于柱子右侧,需要同时设置负width 以及align='edge'。
# 绘制柱形图
fig = plt.figure()
plt.bar(greens.loc[:, '菜品名'], greens.loc[:, '盈利'])
plt.title('10种菜品盈利分布(柱形图)')
plt.xlabel('菜品名')
plt.ylabel('盈利/元')
plt.show()

5、饼图

饼图查看占比是更好用。
plt.pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=0, radius=1, counterclock=True, wedgeprops=None, textprops=None, center=0, 0, frame=False, rotatelabels=False, *, normalize=None, data=None)

常用:
plt.pie(x, labels=None, colors=None, autopct=None)

x:
labels:每个饼块的标签。字符串列表。
colors:每个饼的颜色。
autopct:饼块内标签。
# 绘制饼图
fig = plt.figure()
plt.pie(greens.loc[:, '盈利'], labels = greens.loc[:, '菜品名'], autopct='%1.2f%%')
plt.title('10种菜品盈利分布(饼图)')
plt.show()

6、数据的统计信息

对于dataframe类型数据pd提供info()和describe(),可以回去数据的基本信息和统计信息。
info()可以看出来这个数据集具有91条数据,行为时间格式,从2014-04-01到2014-06-30。共一列数据即销售额(元),91个非空,这个函数后面数据清洗也会用到。
describe()包含的统计信息分别是:总数(count),平均值(mean),标准差(std),后5个位四分位数:最小值(min),下分位数(25%),中位数(50%),上分位数(75%),最大值(max),
还可以自己添加一些信息,如:

7、***复杂折线图

饼图查看占比是更好用。

8、***分段绘图

9、***帕累托图(Pareto chart)

欲知后事如何,且看:机器学习(二) -- 数据预处理(2)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/285883.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SpringMVC框架

SpringMVC 三层架构MVC模式SpringMVC入门案例总结 三层架构 表现层&#xff08;web&#xff09; 页面数据的收集&#xff0c;产出页面 业务逻辑层&#xff08;service&#xff09; 业务处理 数据访问层&#xff08;Dao&#xff09; 数据持久化 MVC模式 SpringMVC 基于Java…

BOSS直聘上算法岗位的薪资分析

目录 一、数据介绍及预处理 1、数据介绍 2、数据预处理 二、数据分析 1、缺失值统计 2、岗位数量、薪资水平统计 3、企业维度岗位数量 4、top薪资岗位 三、划重点 少走10年弯路 元旦抽空爬取了一下BOSS直聘上base北京的算法岗位的相关数据&#xff0c;本文简单分析拿…

Linux 系统拉取 Github项目

一、安装Git 在Linux上拉取GitHub项目可以使用Git命令。首先确保已经安装了Git。如果没有安装&#xff0c;可以通过包管理器&#xff08;比如apt、yum&#xff09;来进行安装。 sudo yum install git #查看安装版本 git -version二、关联GitHub 配置本地账户和邮箱 >>…

HarmonyOS4.0系统性深入开发08服务卡片架构

服务卡片概述 服务卡片&#xff08;以下简称“卡片”&#xff09;是一种界面展示形式&#xff0c;可以将应用的重要信息或操作前置到卡片&#xff0c;以达到服务直达、减少体验层级的目的。卡片常用于嵌入到其他应用&#xff08;当前卡片使用方只支持系统应用&#xff0c;如桌…

《师兄啊师兄》:以“稳健”诠释修仙,反套路喜剧动画赢麻了!

在众多动画题材中&#xff0c;修仙动画一直以其独特的东方神秘色彩和热血的打斗场景深受观众喜爱&#xff0c;可以说是国漫中最具本土特色的题材之一。近年来&#xff0c;大量的修仙题材爆款IP被改编成动画&#xff0c;整体反响非常热烈。动画男主角们通过不断地修炼&#xff0…

深度学习——PIL和OpenCV

PIL 官方文档 格式互转 opencv cv2.imread() 参数&#xff1a; filepath&#xff1a;读入imge的完整路径 flags&#xff1a;标志位&#xff0c;{cv2.IMREAD_COLOR&#xff0c;cv2.IMREAD_GRAYSCALE&#xff0c;cv2.IMREAD_UNCHANGED} cv2.IMREAD_COLOR&#xff1a;默认参数&…

Cypress安装与使用教程(3)—— 软测大玩家

&#x1f60f;作者简介&#xff1a;博主是一位测试管理者&#xff0c;同时也是一名对外企业兼职讲师。 &#x1f4e1;主页地址&#xff1a;【Austin_zhai】 &#x1f646;目的与景愿&#xff1a;旨在于能帮助更多的测试行业人员提升软硬技能&#xff0c;分享行业相关最新信息。…

计算商场优惠

#include<stdio.h> #include<string.h> #include<math.h> double amount(double list[], int n, double min) {int i;double sum 0, cheap list[0];for (i 0; i < n; i){sum sum list[i];if (list[i] < cheap) //找出最小的cheap list[i];}if (n…

Rust赋值语句和数字类型

赋值语句 在Rust中&#xff0c;使用let关键字定义变量。格式是let 变量名:变量类型 变量值;&#xff0c;下边是个例子&#xff1a; let age:i32 18;这就是定义一个有符号32位的数字变量age&#xff0c;而其中的值是18。 而在C语言定义变量的语句格式是类型 变量名 变量值。…

Tinker 环境下数据表的用法

如果我们要自己手动创建一个模型文件&#xff0c;最简单的方式是通过 make:model 来创建。 php artisan make:model Article 删除模型文件 rm app/Models/Article.php 创建模型的同时顺便创建数据库迁移 php artisan make:model Article -m Eloquent 表命名约定 在该文件中&am…

【软件工程】设计概念

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a; 软件工程 ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 软件工程中的设计概念 概念&#xff1a; 结语 我的其他博客 前言 在数字时代的浪潮中&#xff0c;软件工程设计成为塑造创新…

钡铼案例 污水处理远程监控系统的应用介绍

背景 这几年以来&#xff0c;随着国家对环保方面的重视&#xff0c;各地纷纷建立了自己的污水处理站。如何才能保护水资源让其循环利用达到节能减排&#xff0c;是目前急需解决的&#xff0c;正是污水处理项目对水资源的改善以及人民生活水平的提高有着重大的意义。 污水处理…

AC——对HTTPS数据进行行为审计时的解密方式

目录 SSL中间人解密 客户端代理解密&#xff08;准入插件解密&#xff09; 深信服的AC提供两种SSL解密技术用于对https行为进行解密 中间人解密和准入插件解密 SSL中间人解密 解密工作原理 当内网PC端发起SSL连接请求的时候&#xff0c;AC会以代理服务器的身份&#xff0…

vba抓取网页数据

哈喽&#xff0c;哈喽&#xff0c;大家好&#xff01;大家2024发大财啦&#xff01; 不知道&#xff0c;平时大家爱不爱看电影呢&#xff1f;从今年的贺岁档的拍片来看&#xff0c;今年的电影还挺多&#xff0c;而且国产优秀电影居多&#xff0c;元旦假期期间我也去看了部喜剧…

【数据库原理】(4)数据模型介绍

在数据库中&#xff0c;数据不仅包含数据本身的内容&#xff0c;还包括数据之间的关系。这是因为计算机无法直接处理现实世界中的具体事物&#xff0c;因此必须将这些事物抽象成数据模型&#xff0c;以便计算机处理。 数据处理的三个领域 数据从现实世界到数据库里的具体表示…

【C++学习】:命名空间、输入输出和缺省参数全面解析

&#x1f3a5; 屿小夏 &#xff1a; 个人主页 &#x1f525;个人专栏 &#xff1a; C入门到进阶 &#x1f304; 莫道桑榆晚&#xff0c;为霞尚满天&#xff01; 文章目录 &#x1f4d1;前言一. 命名空间1.1 为什么需要命名空间&#xff1f;1.2 命名空间的定义1.3 命名空间特性1…

3个值得推荐的WPF UI组件库

WPF介绍 WPF 是一个强大的桌面应用程序框架&#xff0c;用于构建具有丰富用户界面的 Windows 应用。它提供了灵活的布局、数据绑定、样式和模板、动画效果等功能&#xff0c;让开发者可以创建出吸引人且交互性强的应用程序。 HandyControl HandyControl是一套WPF控件库&…

图像分割实战-系列教程9:U2NET显著性检测实战1

&#x1f341;&#x1f341;&#x1f341;图像分割实战-系列教程 总目录 有任何问题欢迎在下面留言 本篇文章的代码运行界面均在Pycharm中进行 本篇文章配套的代码资源已经上传 U2NET显著性检测实战1 1、任务概述

如何本地快速部署Apache服务器并使用内网穿透工具实现公网访问内网服务

文章目录 前言1.Apache服务安装配置1.1 进入官网下载安装包1.2 Apache服务配置 2.安装cpolar内网穿透2.1 注册cpolar账号2.2 下载cpolar客户端 3. 获取远程桌面公网地址3.1 登录cpolar web ui管理界面3.2 创建公网地址 4. 固定公网地址 前言 Apache作为全球使用较高的Web服务器…

深度学习|2.4 梯度下降

如上图&#xff0c; J ( w , b ) J(w,b) J(w,b)是由w和b两个参数共同控制的损失函数&#xff0c;损失是不好的东西&#xff0c;所以应该求取合适的w和b使得损失最小化。 为了简单考虑&#xff0c;可以先忽略参数b。 斜率可以理解成在朝着x正方向移动单位距离所形成的损失值的变…