IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 使用Python对数据进行描述性统计(机器学习) -> 正文阅读

[人工智能]使用Python对数据进行描述性统计(机器学习)

使用Python对数据进行描述性统计

数据集:diabetes.csv
参考书:《Machine Learning Mastery With Python Understand Your Data, Create Accurate Models and work Projects End-to-End》
获取链接:https://github.com/aoyinke/ML_learner

Additional Knowledge

  1. 当两个变量相关时,用于评估它们因相关而产生的对应变量的影响。
    当多个变量独立时,用方差来评估这种影响的差异。
    当多个变量相关时,用协方差来评估这种影响的差异。

总览

  1. 一些常见的指标,例如维度,前多少行数据等
  2. 皮尔逊相关系数和偏度分别观察多变量和单变量
  3. 直方图,密度图,箱线图的代码演示和讲解
  4. 多变量的可视化

一些常见的指标

from pandas import read_csv

path = "diabetes.csv"
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(path,names=names,skiprows=1)

# 观察数据的前5行
print(data.head())
# 观察数据的维度
print(data.shape)
"""
   preg  plas  pres  skin  test  mass   pedi  age  class
0     6   148    72    35     0  33.6  0.627   50      1
1     1    85    66    29     0  26.6  0.351   31      0
2     8   183    64     0     0  23.3  0.672   32      1
3     1    89    66    23    94  28.1  0.167   21      0
4     0   137    40    35   168  43.1  2.288   33      1

(768, 9) 768行,9列

"""
# 观测每种数据的类型
print(types)

"""
preg int64
plas int64
pres int64
skin int64
test int64
mass float64
pedi float64
age int64
class int64

"""

使用Pandas进行描述性统计

from pandas import set_option
set_option('display.width', 100)
set_option('precision', 3)
description = data.describe()
print(description)

请添加图片描述

  • count:计算的是对应属性下,所有非null数据的条数
  • mean,max,min分别是该属性下所有数据的平均值,最大值和最小值
  • std:观测值的标准差
  • 注意,对于不同类型的数据会有不同的统计项目,例如对于对象类型的数据,返回的就是: count, unique, top, and freq这几个指标
  • 可以参考官方文档:pandas.DataFrame.describe

Class Distribution(仅限于classfication问题)

class_counts = data.groupby('class').size()
print(class_counts)
"""
   class
0   500
1   268
"""

Correlation between attributes(属性之间的关系)

  • 对于线性回归和逻辑回归等机器学习算法来说,如果属性之间的相关程度过高,会导致比较糟糕的performance
  • Pearson’s Correlation Coefficient(皮尔逊积矩相关系数) 常用于计算属性之间的相关程度,它假设所涉及的属性呈正态分布
  • 皮尔逊相关系数是两个变量的协方差除以其标准差的乘积
  • 0表示不相关,相关因子分布在-1-1之间,正数表示相关,负数表示无关
  • 举个简单的栗子,可以预期高中青少年样本的年龄和身高的 Pearson 相关系数显着大于 0,但小于 1(因为 1 表示不切实际的完美相关)

请添加图片描述

from pandas import set_option,read_csv
data = read_csv(filename, names=names)
set_option('display.width', 100)
set_option('precision', 3)
correlations = data.corr(method='pearson')
print(correlations)

请添加图片描述

Skew of Univariate Distributions(单变量分布的偏度)

请添加图片描述

公式中,Sk——偏度;E——期望;μ——平均值;μ3——3阶中心矩;σ——标准差。 在一般情形下,当统计数据为右偏分布时,Sk>0,且Sk值越大,右偏程度越高;
当统计数据为左偏分布时,Sk< 0,且Sk值越小,左偏程度越高。当统计数据为对称分布时,显然有Sk= 0。
在这里插入图片描述
所以我们应该注意处理skew较大(绝对值)的变量

skew = data.skew()
print(skew)

"""
preg 0.901674
plas 0.173754
pres -1.843608
skin 0.109372
test 2.272251
mass -0.428982
pedi 1.919911
age 1.129597
class 0.635017
"""

Univariate Plots (单变量可视化观察数据)


Histograms(直方图)

# Univariate Histograms
from matplotlib.pyplot as plt
from pandas import read_csv
path = "diabetes.csv"
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(path , names=names,skiprows=1)
data.hist()
plt.show()

请添加图片描述

  • age, pedi and test呈现指数分布(exponential distribution)
  • mass and pres and plas呈现或近似高斯(正态)分布(Gaussian Distribution)
  • 许多机器学习算法假定输入为正态分布,但是我们可以看到实际并不是这样(需要进行standardlization进一步处理)

Density Plots(密度图)

密度图是快速了解每个属性分布的另一种方法

data.plot(kind=?density?, subplots=True, layout=(3,3), sharex=False)
plt.show()

请添加图片描述

Box and Whisker Plots(箱线图)

在这里插入图片描述

  • 中位数(Q2 / 50th百分位数):数据集的中间值;
  • 第一个四分位数(Q1 / 25百分位数):最小数(不是“最小值”)和数据集的中位数之间的中间数;
  • 第三四分位数(Q3 / 75th Percentile):数据集的中位数和最大值之间的中间值(不是“最大值”);
  • 四分位间距(IQR):第25至第75个百分点的距离;
  • 晶须(蓝色显示)
  • 离群值(显示为绿色圆圈)
  • “最大”:Q3 + 1.5 * IQR
  • “最低”:Q1 -1.5 * IQR

总结:

  • 箱线图是针对连续型变量的,解读时候重点关注平均水平、波动程度和异常值。
  • 当箱子被压得很扁,或者有很多异常的时候,试着做对数变换。
  • 当只有一个连续型变量时,并不适合画箱线图,直方图是更常见的选择。
  • 箱线图最有效的使用途径是作比较,配合一个或者多个定性数据,画分组箱线图
data.plot(kind='box', subplots=True, layout=(3,3), sharex=False, sharey=False)
plt.show()

请添加图片描述

Multivariate Plots(多变量观察)


Correlation Matrix Plot(皮尔逊相关系数,变量之间的关系)

import matplotlib.pyplot as plt
import numpy as np
from pandas import read_csv

path = "diabetes.csv"
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(filename, names=names)
correlations = data.corr(method='pearson') # 得到皮尔逊相关系数
# plot correlation matrix
fig = plt.figure() # 相当于拿到一张画布
ax = fig.add_subplot(1,1,1) # 创建一个一行一列的子图
cax = ax.matshow(correlations, vmin=-1, vmax=1)
fig.colorbar(cax) # 将色彩变化条(右边那一竖着的)添加到图中
ticks = np.arange(0,9,1)
# ticks = [0 1 2 3 4 5 6 7 8] 构造一个0-8,step=1的np数组
ax.set_xticks(ticks)
ax.set_yticks(ticks)
ax.set_xticklabels(names) # 打上index,默认采用数字
ax.set_yticklabels(names)
plt.show()

请添加图片描述

Scatter Plot Matrix(散点矩阵)

from matplotlib.pyplot as plt
from pandas import read_csv
from pandas.tools.plotting import scatter_matrix
path = "diabetes.csv"
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(filename, names=names)
scatter_matrix(data)
plt.show()

请添加图片描述
Summary:

  • 对角线显示每个属性的直方图。
  • 散点图对于发现变量之间的结构化关系很有用,比如您是否可以用一条直线来总结两个变量之间的关系。具有结构化关系的属性也可能是相关的,可以从数据集中删除。

写在最后


Stay hugry, stay foolish.
在这里插入图片描述

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-02-26 11:31:25  更:2022-02-26 11:35:19 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 19:54:50-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码