最近在学习kaggle预测房价的大神代码。其中有很多地方涉及到了我的知识盲区。。。慢慢来吧,先做好知识储备,再去系统再现代码。本文主要讲的是待预测值的分布。而且我觉得对于回归问题,研究预测值的分布是很有必要的,因此做一个记录。
先看代码:
# !/usr/bin/python3
# -*-coding:UTF-8-*-
# By WILL
import pandas as pd
import numpy as np
import seaborn as sns
import pylab as plt #或者import matplotlib.pyplot as plt一样的
#假设data是我们要预测的值
plt.style.use("ggplot") #图像美化
data = np.random.randn(1000)#生成1000个标准正态分布的点
data = pd.DataFrame(data)
sns.distplot(data)#看下方红字描述
plt.show()
print(data.describe())#该列的描述:列的均值 方差 标准差 四分位数 最值等信息
print("data的skewness:",data.skew())
print("data的peakedness:",data.kurt())
输出:
0#因为是DataFrame,所以肯定有一个column。
count 1000.000000
mean 0.050196#1000样本点比较少,理论上为0
std 0.963622#理论值为1
min -2.765893
25% -0.581325#1/4分位点
50% 0.041425#1/2分位点
75% 0.733161#3/4分位点
max 3.162707
data的skewness: 0 -0.00365
dtype: float64
data的peakedness: 0 -0.149678
dtype: float64
分析
1. seaborn是对matplolib的一个补充,而不是取代,要二者相结合。使用方式:
import seaborn as sns
安装方式:pip install seaborn
2. displot()集合了matplotlib的hist()与核函数估计kdeplot的功能,增加了rugplot分布观测条显示与利用scipy库fit拟合参数分布的新颖用途。
上面意思就是:displot不仅有直方图的功能,还有kdeplot(seaborn的一个核函数估计画图函数)的功能。
3.关于plt.style.use(“ggplot”)
若不加这一句,图片是这样的。所以这句话的意思就是美观。
4.关于斜度与峰度
详细请见:
偏度(skewness)和峰度(kurtosis)
我这里简单总结一下:
skewness就是三阶中心距,kurotosis就是4阶的。
sk表示的是左偏还是右偏(>0,右偏)(<0左偏)。=0就是正态分布
ku是尾巴的胖瘦或者高低。峰度包括正态分布(峰度值=3),厚尾(峰度值>3),瘦尾(峰度值<3)