一、数据集探索性分析
import pandas as pd import numpy as np import seaborn as sns data = pd.read_csv("abalone_dataset.csv") data.head()
#查看数据集中样本数量和特征数量 data.shape #查看数据信息,检查是否有缺失值 data.info()
data.describe()
数据集一共有4177个样本,每个样本有9个特征。其中rings为鲍鱼环数,加上1.5等于鲍鱼年龄,是预测变量。除了sex为离散特征,其余都为连续变量。
#观察sex列的取值分布情况 import numpy as np import matplotlib.pyplot as plt %matplotlib inline sns.countplot(x='sex',data=data) data['sex'].value_counts()
对于连续特征,可以使用seaborn的distplot函数绘制直方图观察特征取值情况。我们将8个连续特征的直方图绘制在一个4行2列的子图布局中。
i=1 plt.figure(figsize=(16,8)) for col in data.columns[1:]: plt.subplot(4,2,i) i=i+1 sns.distplot(data[col]) plt.tight_layout()
sns.pairplot()官网 seaborn.pairplot — seaborn 0.12.2 documentation
默认情况下,此函数将创建一个轴网格,这样数据中的每个数字变量将在单行的y轴和单列的x轴上共享。对角图的处理方式不同:绘制单变量分布图以显示每列数据的边际分布。也可以显示变量的子集或在行和列上绘制不同的变量。
#连续特征之间的散点图 sns.pairplot(data,hue='sex')
* 1.第一行观察得出:length和diameter、height存在明显的线性关系
* 2.最后一行观察得出:rings与各个特征均存在正相关性,其中与height的线性关系最为直观
* 3.对角线观察得出:sex“I”在各个特征取值明显小于成年鲍鱼
#计算特征之间的相关系数矩阵 corr_df = data.corr() corr_df
fig,ax =plt.subplots(figsize=(12,12)) #绘制热力图 ax = sns.heatmap(corr_df,linewidths=5, cmap='Greens', annot=True, xticklabels=corr_df.columns, yticklabels=corr_df.index) ax.xaxis.set_label_position('top') ax.xaxis.tick_top()