python机器学习入门到实践—day01(笔记)

主要内容:

1.在python中使用均值、中位数和众数

(1)使用 NumPy 包计算均值
NumPy 可以非常容易地计算均值、中位数和众数。我们直接使用 import numpy as np,这意味着导入以后可以使用 np 作为 numpy的简写。使用 np.random.normal 函数创建一个名为 incomes 的数值列表。
np.random.normal 函数的 3 个参数的意义是,创建的数据集中在 27 000 附近,标准差为15 000,列表中有 10 000 个数据点。

import numpy as np

incomes=np.random.normal(27000,15000,10000)
#求平均值
print(np.mean(incomes))   #26715.907596870416

使用 matplotlib 进行数据可视化

import numpy as np
import matplotlib.pyplot as plt
incomes=np.random.normal(27000,15000,10000)
#求平均值
print(np.mean(incomes))   #26715.907596870416
plt.hist(incomes,50)
plt.show()

在这里插入图片描述
(2)使用 NumPy 包计算中位数

import numpy as np
incomes=np.random.normal(27000,15000,10000)
x=np.median(incomes)
print(x)   #27082.117137121946

(3)使用 SciPy 包计算众数
将生成 500 个随机整数,范围从 18 到 90。这段代码中,众数为 68,这是数组中出现次数最多的数,它出现了 15 次。

import numpy as np
from scipy import stats
ages=np.random.randint(18,90,size=500)
x=stats.mode(ages)
print(x)   #ModeResult(mode=array([68]), count=array([15]))

2.标准差和方差

(1)总体方差:总体方差通常表示为西格玛的平方(σ2),西格玛(σ)是标准差。用每个数据点 X 减去均值 μ,对差进行平方,再进行求和,然后除以数据点的个数 N,就可以算出总体方差。可以用下面的公式表示:
在这里插入图片描述
 X 表示每个数据点;
 μ 表示均值;
 N 表示数据点的个数。
(2)样本方差:样本方差用 S2表示,公式如下:
在这里插入图片描述
 X 表示每个数据点;
 M 表示均值;
 N – 1 表示数据点的个数减 1。
(3)使用 std 来计算标准差。

import numpy as np

incomes=np.random.normal(100,20,500)
x=incomes.std()
print(x)   #20.095087108660174

(4)使用 var 函数计算方差。

import numpy as np

incomes=np.random.normal(100,20,500)
x=incomes.var()
print(x)   #402.36828829119344

3.概率密度函数和概率质量函数

概率密度函数实际上表示的是一个特定范围的值发生的概率,这就是概率密度函数的意义。如果你处理的是离散型数据,那么其处理方法会和连续型数据有所不同,这时要使用概率质
量函数,概率质量函数就是离散型数据发生概率的具体表示,它看上去很像直方图,实际上也就是个直方图。概率密度函数是一条曲线,描述了某个范围内的连续型数据出现的概率。概率质量函数是某个离散值出现在数据集中的概率。
在这里插入图片描述
在这里插入图片描述

4.各种类型的数据分布

(1)均匀分布:均匀分布意味着在给定范围内,数值出现的概率是一条水平固定的直线。使用 NumPy 的 random.uniform 函数,可以创建一个均匀分布。代码的含义是,生成一组服从均匀分布的随机值,取值范围从–10 到 10,数量为 5000 个。

import numpy as np
import matplotlib.pyplot as plt

values=np.random.uniform(-10,10,5000)
plt.hist(values,50)
plt.show()

在这里插入图片描述
(2)正态分布或高斯分布:正态分布又称高斯分布,Python 的 scipy.stats.norm 包有一个 pdf(probability density function)函数,可以对其进行可视化。
使用函数 arange 创建了一个列表 x 用来绘制图形,列表的值在–3 和 3 之间,增量为 0.001。在图形中,x 轴使用的就是这些列表值,y 轴是一个正态分布函数 norm.pdf,也就是 x 值对应的正态分布概率密度函数值。

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm

x=np.arange(-3,3,0.001)
#norm.pdf(x)正态分布函数或概率密度函数
plt.plot(x,norm.pdf(x)) 
plt.show()

在这里插入图片描述
(3)指数概率分布与指数定律:另一个常见的分布函数是指数概率分布函数,其函数值以指数方式下降。说起指数下降,是指一条曲线上在 0 附近的值发生的概率很高,但当远离 0 时,值会急速下降。自然界中很多事物都符合这种情况。在 Python 中,scipy.stats 包中既有 norm.pdf 函数,也有 expon.pdf 函数,后者就是Python 中的指数概率分布函数。和正态分布的语法一样,可以在代码中使用指数分布:

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import expon   #指数概率函数

x=np.arange(0,10,0.001)
plt.plot(x,expon.pdf(x))
plt.show()

在这里插入图片描述
(4)二项式概率质量函数:
我们也可以对概率质量函数进行可视化,比如二项式概率质量函数。这次不使用 expon 或 norm,而是使用 binom。注意:概率质量函数处理的是离散数据。 binom.pmf 函数中,我们使用两个参数 n 和 p 来设定数据的形状。在这个代码中,n 和 p 分别是 10 和 0.5。

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import binom

x=np.arange(0,10,0.001)
plt.plot(x,binom.pmf(x,10,0.5))
plt.show()

在这里插入图片描述
(5)泊松概率质量函数:
这是个比较特殊的分布,与正态分布非常像,但有一点不同。如果你知道了在给定时间段内某个事情发生的平均次数,那么就可以使用泊松概率质量函数来预测未来某个时段这个事情发生另一个次数的概率。
在这个代码中,平均数 mu 是 500。创建一个列表 x,值从 400 到 600,间隔为 0.5。使用poisson.pmf 函数绘制这些数据。可以使用这个图形找出不是 500 的某个值发生的概率。
某一天有 550 个访客的概率是 0.002,即 0.2%。

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import poisson

x=np.arange(400,600,0.5)
mu=500
plt.plot(x,poisson.pmf(x,mu))
plt.show()

在这里插入图片描述

5.百分位数和矩

什么是百分位数?一般来说,如果将数据集中所有数据排好顺序,那么第 x 个百分位数就是这样一个点:数据集中 x%的数据都小于它。例如:设我们在讨论美国所有人的收入,并对收入进行了排序,那么第99 个百分位数就是 99%的美国人的收入都小于它的那个数。
(1) 四分位数:
在一个分布中,常用的百分位数又称四分位数。第一个四分位数(Q1)和第三个四分位数(Q3)
之间包含的点正好是 50%的数据点,所以中位数左侧有 25%的数据点,右侧也有 25%的数据点。本例中的中位数恰好与均值非常接近。例如,四分位距(InterQuartile Range,IQR)就是分布中间包含 50%数据的那块面积。
在这里插入图片描述
(2)在 Python 中计算百分位数:
NumPy 提供了一个非常方便的百分位数函数,可以计算分布中百分位数的值。我们已经使用 np.random.normal 函数创建了一个列表 vals,调用 np.percentile 函数就可以找出第
90 个百分位数的值,90%的数据都小于这个值。代码如下:

import numpy as np

values=np.random.normal(0,0.5,10000)
x=np.percentile(values,90)
print(x)  #0.6374509963913575

(3)矩:
矩就是用在概率密度函数中描述数据分布形状的一个指标参数,它有一个非常棒的数学定义:
在这里插入图片描述
一阶矩是均值,二阶矩是方差,三阶矩是偏度,四阶矩是峰度。我们已经知道了什么是均值和方差。偏度表示数据的偏斜程度,即数据的尾部偏向哪一侧。峰度表示数据分布有多尖锐,即从两侧向中间被挤压的程度。
1)三阶矩是偏度,要计算这个指标需要使用 SciPy包,而不是 NumPy。在很多科学计算包中,都有这个扩展包,比如 Enthought Canopy或 Anaconda。如果你导入了 SciPy,那么函数调用非常简单。 vals 列表调用函数 sp.skew,就可以求出峰度值。因为这个值非常接近于 0,所以数据应该是 0 偏的。如果加入一些随机变动,数据会变得略微左偏。实际上,在图中的表现就是形状有些抖动,就像是向负方向拉扯了一下。

import numpy as np
import scipy.stats as sp

values=np.random.normal(0,0.5,10000)
x=sp.skew(values)
print(x)  #-0.009862010417180718

2)四阶矩是峰度,描述了数据尾部的形状。
峰度揭示了数据分布互相联系的两个特征:尾部的形状以及顶部的尖锐程度。如果将分布的尾部压得更扁,就会使得顶部更加尖锐。同样,如果将分布的顶部压下去一些,就会使尾部更加肥大,顶部更加平坦。这就是峰度的作用。

import numpy as np
import scipy.stats as sp

values=np.random.normal(0,0.5,10000)
x=sp.kurtosis(values)   #峰度
print(x)  #-0.00876087807733228
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值