使用 Pandas 和 Seaborn 进行 KDE 绘图可视化
KDE Plot 描述为Kernel Density Estimate ,用于可视化连续变量的概率密度。它描述了连续变量中不同值的概率密度。我们还可以为多个样本绘制一个图表,这有助于更有效地数据可视化。
在本文中,我们将使用 Iris Dataset 和 KDE Plot 来可视化数据集的洞察力。
关于 Iris 数据集–
- 属性:Petal_Length (cm), Petal_Width (cm), Sepal_Length (cm), Sepal_Width(cm)
- 目标:Iris_Virginica、Iris_Setosa、Iris_Vercicolor
- 实例数:150
一维 KDE 图:
我们可以可视化样本针对单个连续属性的概率分布。
# importing the required libraries
from sklearn import datasets
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline
# Setting up the Data Frame
iris = datasets.load_iris()
iris_df = pd.DataFrame(iris.data, columns=['Sepal_Length',
'Sepal_Width', 'Patal_Length', 'Petal_Width'])
iris_df['Target'] = iris.target
iris_df['Target'].replace([0], 'Iris_Setosa', inplace=True)
iris_df['Target'].replace([1], 'Iris_Vercicolor', inplace=True)
iris_df['Target'].replace([2], 'Iris_Virginica', inplace=True)
# Plotting the KDE Plot
sns.kdeplot(iris_df.loc[(iris_df['Target']=='Iris_Virginica'),
'Sepal_Length'], color='b', shade=True, Label='Iris_Virginica')
# Setting the X and Y Label
plt.xlabel('Sepal Length')
plt.ylabel('Probability Density')
输出:
我们还可以在单个图中可视化多个样本的概率分布。
# Plotting the KDE Plot
sns.kdeplot(iris_df.loc[(iris_df['Target']=='Iris_Setosa'),
'Sepal_Length'], color='r', shade=True, Label='Iris_Setosa')
sns.kdeplot(iris_df.loc[(iris_df['Target']=='Iris_Virginica'),
'Sepal_Length'], color='b', shade=True, Label='Iris_Virginica')
plt.xlabel('Sepal Length')
plt.ylabel('Probability Density')
输出:
二维 KDE 图:
我们可以可视化样本针对多个连续属性的概率分布。
# Setting up the samples
iris_setosa = iris_df.query("Target=='Iris_Setosa'")
iris_virginica = iris_df.query("Target=='Iris_Virginica'")
# Plotting the KDE Plot
sns.kdeplot(iris_setosa['Sepal_Length'],
iris_setosa['Sepal_Width'],
color='r', shade=True, Label='Iris_Setosa',
cmap="Reds", shade_lowest=False)
输出:
我们还可以在单个图中可视化多个样本的概率分布。
# Plotting the KDE Plot
sns.kdeplot(iris_setosa['Sepal_Length'],
iris_setosa['Sepal_Width'],
color='r', shade=True, Label='Iris_Setosa',
cmap="Reds", shade_lowest=False)
sns.kdeplot(iris_virginica['Sepal_Length'],
iris_virginica['Sepal_Width'], color='b',
shade=True, Label='Iris_Virginica',
cmap="Blues", shade_lowest=False)
输出: