Seaborn/matplotlib自定义3D(三维)绘图,使用不同颜色区分不同数据类别:商用数据可视化

对于低维度数据集,或者高维度数据集在使用pca等方法降维后,有时需要根据标签画出3维图,不同类别标签使用不同颜色。

如下图所示,x,y,z为数据特征,根据类别使用不同颜色。

Seaborn/matplotlib自定义3D(三维)绘图,使用不同颜色区分不同数据类别:商用数据可视化_第1张图片

可见,特征混叠严重,需要更换降维方法。以下,将以 kaggle中Instant Gratification数据集(二分类数据集)为例,在使用pca降维后,根据类别使用不同颜色画图。

一.数据集

Instant Gratification数据集(二分类数据集)有256维特征,目标类别为target。

import pandas as pd
import numpy as np

def get_data(path):
    df = pd.read_csv(path, index_col=['id'])
    # df.head()
    x = df.drop('target', axis = 1)
    # X_train.head()
    y = df['target']
    return x, y

x, y = get_data('/kaggle/input/instant-gratification/train.csv')
x.head()

Seaborn/matplotlib自定义3D(三维)绘图,使用不同颜色区分不同数据类别:商用数据可视化_第2张图片

 二.选取部分数据并降维

# 截取片段
x = x[:1000]
y = y[:1000]

# pca降维
from sklearn.decomposition import PCA
pca = PCA(n_components = 3)
x_pca = pca.fit_transform(x)
x_pca

# 融合为新表
pca_df = pd.concat([pd.DataFrame(x_pca, index = x.index, columns = ['n_1', 'n_2', 'n_3']), y], axis = 1)
pca_df.head()

Seaborn/matplotlib自定义3D(三维)绘图,使用不同颜色区分不同数据类别:商用数据可视化_第3张图片 

其中,n_1到n_3为pca结果,target为类别标签。

此处也可以选择pca后使用归一化,画图更加合理。

三.Seaborn/matplotlib画图

# 指定不同类别的RBG
color = [[1, 0, 0] if element == 0 else [0, 0, 1] for element in y]
color = np.array(color)

# 画图
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np

%matplotlib inline

seaborn.set_style("darkgrid")

plt.figure(figsize=(10,8))

axes = plt.axes(projection='3d')
axes.set_xlabel('x')
axes.set_ylabel('y')
axes.set_zlabel('z')

axes.scatter3D(xs = 'n_1', ys = 'n_2', zs = 'n_3', data = pca_df, c = color)

plt.show() 

得到

Seaborn/matplotlib自定义3D(三维)绘图,使用不同颜色区分不同数据类别:商用数据可视化_第4张图片

等等,标题好像加(doge)

plt.title('看了那么多,喜欢就点个赞吧')

你可能感兴趣的:(商业可视化,pandas,seaborn,信息可视化,matplotlib,python,sklearn)