知识点
-
数据属性分布分析(概率密度分析/是否呈现正态分布)
-
数据属性与Target之间的相关性(correlation协方差:值域[-1,1],映射到余弦相似度cos距离)
-
缺失属性相关性分析--进行合理的填充
-
构造属性和构造属性的相关性分析
阶段 1
train2 = pd.read_csv('./train.csv')
01.相关函数
-
pd.get_dummies 函数
默认对category and object 进行one-hot 编码。也可以对指定列进行编码。eg:pd.get_dummies(train2,columns=['col']#指定列 pd.get_dumnies(train2)
-
train2.get_dtype_counts() 查看数据的类型统计
float64 3 int64 35 object 43 dtype: int64
-
统计数据每列为空的数据个数的统计
tmp = train2.isnull().sum() tmp[tmp> 0]
输出:
LotFrontage 259 Alley 1369 MasVnrType 8 MasVnrArea 8 BsmtQual 37 BsmtCond 37 BsmtExposure 38 BsmtFinType1 37 BsmtFinType2 38 Electrical 1 FireplaceQu 690 GarageType 81 GarageYrBlt 81 GarageFinish 81 GarageQual 81 GarageCond 81 PoolQC 1453 Fence 1179 MiscFeature 1406 dtype: int64
02.相关性(协方差矩阵推出的相关系数矩阵【Pearson correlation coefficient】)
值域:【-1,1】
|r| >= 0.95 显著关系 (显著的关系需要概率 该特征是否与目标有很强的关联关系)(报价和成交价,这样的话可能考虑去掉,否则影响判断)
|r| >= 0.8 强相关
|r| >= 0.5 中度相关
0.5 >=|r| >= 0.3 弱相关 (部分数据与该特征可能存在较强的相关性)(草率的 可以去掉,待挖掘)(楼房屋顶和顶楼的成交价)
|r| < 0.3 极弱相关
-
获取相关系数矩阵
train.corr()#相关系数矩阵
-
获取指定列的相关系数矩阵
corr = train.corr()["SalePrice"]#与房价的标签 相关性 corr[corr>0.5].sort_values() #corr[corr<0]
-
相关性可视化
#导入包: import seaborn as sns import matplotlib.pyplot as plt %matplotlib inline #功能是可以内嵌绘图,并且可以省略掉plt.show()这一步 #绘图 plt.figure(figsize=(30,30)) sns.heatmap(train2.corr(),linewidth=0.01,square=True,cmap='viridis',annot=True)
输出:
*seaborn.heatmap解析*
```
seaborn.heatmap(
data,
vmin=None,
vmax=None,
cmap=None,
center=None,
robust=False,
annot=None,
fmt='.2g',
annot_kws=None,
linewidths=0,
linecolor='white',
cbar=True,
cbar_kws=None,
cbar_ax=None,
square=False,
xticklabels='auto',
yticklabels='auto',
mask=None,
ax=None,
**kwargs)
```
参数名称 | 描述 | 值域/示例 |
---|---|---|
data | 要显示的数据 | ax=sns.heatmap(data) |
vmin,vmax | 显示数据值的最大和最小范围 | ax=sns.heatmap(data,vmin=0,vmax=1 |
cmap | matplotlib颜色表名称或对象,或颜色列表,可选从数据值到色彩空间的银蛇,如果没有提供,默认设置 | ax = sns.heatmap(data,vmin=0, vmax=1, cmap = 'GnBu') |
center | 指定色彩的中心值 | ax = sns.heatmap(data,vmin=0, vmax=1, cmap = 'GnBu', center=0.7) |
annot | 如果为True,则将数据值写入每个单元格中 | ax = sns.heatmap(data,vmin=0, vmax=1, cmap = 'GnBu', center=0.5,robust=False,annot=True) #Set1 |
robust | 如果“True”和“vmin”或者“vmax"不存在,则使用强分位数计算颜色映射范围,而不是极值 | ax = sns.heatmap(data,vmin=0, vmax=1, cmap = 'GnBu', center=0.5, robust=False) #Set1 |
fmt | 表格里显示数据的类型 | fmt ='.0%'#显示百分比;fmt ='f' 显示完整数字 = fmt ='g';fmt ='.3'显示小数的位数 = fmt ='.3f' = fmt ='.3g' |
annot_kws | 未知 | 未知 |
linewidths | 划分每个单元格的线条宽度 | ** 0.01 |
linecolor | 划分每个单元格的线的颜色 | ** |
cbar | 是否绘制颜色条:colorbar | 默认绘制 |
square | 为‘True’时,整个网格为一个正方形 | True |
xticklabels, yticklabels | 可以以字符串进行命名,也可以调节编号的间隔,也可以不显示坐标 | 1)ax = sns.heatmap(uniform_data,cmap = 'RdBu', center=0,cbar = True, square=False,xticklabels =['12','22'])#字符串命名;2)ax = sns.heatmap(uniform_data,cmap = 'RdBu', center=0,cbar = True, square = False,xticklabels =2)#编号间隔为2;3)ax = sns.heatmap(uniform_data,cmap = 'RdBu', center=0,cbar = True, square = False,xticklabels =False)#不显示坐标 |
mask | boolean array or DataFrame, optionalIf passed, data will not be shown in cells where mask is True. Cells with missing values are automatically masked. | >>>mask = np.zeros_like(corr)>>>mask[np.triu_indices_from(mask)] = Truewith>>>sns.axes_style("white"):>>>ax = sns.heatmap(corr, mask=mask, vmax=.3, square=True) |
示例代码:
import numpy as np;
np.random.seed(0)
import seaborn as sns; sns.set()
import matplotlib.pyplot as plt
data = np.random.rand(10, 12)
f, ax = plt.subplots(figsize=(8,5))
ax = sns.heatmap(data,cmap = 'RdBu',ax=ax,vmin=0, vmax=1,annot=True,fmt ='0.1g')
#设置坐标字体方向
label_y = ax.get_yticklabels()
plt.setp(label_y, rotation=45, horizontalalignment='right')
label_x = ax.get_xticklabels()
plt.setp(label_x, rotation=45, horizontalalignment='right')
plt.xlabel('x.num')#设置坐标名称
plt.ylabel('y.num')
plt.title('Plotting')#标题
plt.show()
网友评论