Deep Learning 3 数据可视化之EDA
[TOC]
数据可视化–categorical data 离散数据
直方图类型 [单个属性]:
根据不同的种类来区分颜色的【通过利用plotly=>histogram】
import plotly.express as px
fig = px.histogram(data, x='attr', color='attr')
fig.show()
直接画出数量,不用区分种类颜色的【直接利用matplotlib.pyplot=>bar】import matplotlib.pyplot as plt
eg1:
plt.bar(data.attr.value_counts().index, data.attr.value_counts().values)
eg2:
df['Attr'].value_counts().plot.bar()
直方图类型 [单个属性+多个图] :
通过把不同图放在一个图中
# value str length
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(10, 5))
# get lens list
tweet_len_1 = tweet[tweet['target'] == 1]['text'].str.len() # get list1
ax1.hist(tweet_len_1, color='green')
tweet_len_0 = tweet[tweet['target'] == 0]['text'].str.len() # get list2
ax2.hist(tweet_len_0, color='red')
直方图类型 [多个属性]:
import plotly.express as px
fig = px.histogram(data, x='attr1', color='attr2')
饼状图 [单个属性]
import plotly.express as px
fig = px.pie(data, name='attr')
数据可视化–numerical data连续数据
数据可视化–Correlation 相关性图[heatmap]
f, (ax1, ax2) = plt.subplots(2, 1, figsize=(24,20))
# Entire DataFrame
corr = df.corr()
sns.heatmap(corr, cmap='coolwarm_r', annot_kws={'size':20}, ax=ax1)
ax1.set_title("Imbalanced Correlation Matrix \n (don't use for reference)", fontsize=14)
sub_sample_corr = new_df.corr()
sns.heatmap(sub_sample_corr, cmap='coolwarm_r', annot_kws={'size':20}, ax=ax2)
ax2.set_title('SubSample Correlation Matrix \n (use for reference)', fontsize=14)
plt.show()
数据可视化–Correlation 相关性图[Box图]
# preparation
colors = ["#0101DF", "#DF0101"]
f, axes = plt.subplots(ncols=4, figsize=(20,4))
sns.boxplot(x="Class", y="V17", data=new_df, palette=colors, ax=axes[0])
axes[0].set_title('V17 vs Class Negative Correlation')
sns.boxplot(x="Class", y="V14", data=new_df, palette=colors, ax=axes[1])
axes[1].set_title('V14 vs Class Negative Correlation')
数据可视化–Boxplot
作用:查看是否有离群的点,如果有离群的点(outlier)的话,就删去,防止在训练的时候受到(outlier)影响
数据可视化 [NLP] –WordCloud
词云:利用matplotlib进行可视化,然后把wordcloud嵌套进去,最后进行plt.show()
来可视化出来。
from wordcloud import WordCloud
import matplotlib.pyplot import plt
过程:首先产生一个语料库,然后通过wordcloud来generate语料库。
# generate corpus
corpus_wordcloud = create_corpus(data)
# plot wordcloud
plt.figure(figsize=(12, 8))
word_cloud = WordCloud(
background_color='black',
max_font_size=80
).generate(' '.join(corpus_wordcloud))
# first image show (imshow)
plt.imshow(word_cloud)
plt.show()
总结
首先关于plot的显示:
plt.legend() # 显示图同时显示图例
plt.show() # 显示图
-
plot method
- hist – histogram 柱状图 [单个属性
attr
传入然后绘图即可]
plt.hist(data['attr'])
- scatter – 散点图 [两个属性传入,然后每个点的横纵坐标代表在两个属性中的区别] => 两个numerical type
plt.scatter(data['attr1'], data['attr2'])
- catplot – 种类图 [两个属性传入] => 一个numerical type,一个cateogrical type
sns.catplot(x='attr1', y='attr2', data=data)
- boxplot – 箱型图 [两个属性传入] => 一个numerical,一个cateogrical type ==>
sns.boxplot(x='attr1', y='attr2', data=data)
- violinplot – 小提琴图
- 补充作用:用于显示数据分布及其概率密度
sns.violinplot(x='attr1', y='attr2', data=data)
- hist – histogram 柱状图 [单个属性
-
plot image
one images and some points(which is represent with coordinate in keypoints list)
def plot_image(image, keypoints, axis=None, title): image = image.reshape(96, 96) axis.imshow(image) axis.scatter(keypoints[0::2], keypoints[1::2], marker='x', s=20) plt.title(title)
def plot_image(image, keypoints, axis=None): if axis is None: fig, axis = plt.subplots() axis.scatter(keypoints) axis.imshow(keypoints[0::2], keypoints[1::2], s=10)
关于一行中画多个图
1、仅用plt做图,然后画在一行中的情况
- 利用subplot来进行约束位置【是单数,只需要一个】
- 利用plt来画各种各样的图
plt.figure(figsize=(16, 8))
# 做第一个图
plt.subplot(1, 2, 1)
plt.scatter(data['attr1'], data['attr2'])
# 做第二个图
plt.subplot(1, 2, 2)
plt.hist(data['attr'])
同样原理,如果是一行三个的话
plt.subplot(1, 3, 1)
plt.subplot(1, 3, 2)
plt.subplot(1, 3, 3)
2、用循环来做图
- 利用
axes
来存储做图数组 - 利用
subplots
来约束位置【注意,多个的时候是subplots,是定义很多】,并且在sns
每一次画图的时候通过ax来进行约束
f, axes = subplot(3, 5, figsize=(24, 18))
for i, e in enumerate([col for col in data.columns]):
sns.violinplot(x=e, y='attr', data=data, ax=axes[i // 5][i % 5])