python中具有两个特征的二进制类数据集的散点图

数据挖掘 Python 熊猫 绘图 麻木的 matplotlib
2021-10-06 09:11:26

我的数据集具有多个特征,并且基于因变量被定义为 0 或 1。我想得到一个散点图,这样我的所有正例都用“o”标记,负例用“x”标记。我正在使用python,这是开始的代码。

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

# Importing the dataset
dataset = pd.read_csv('/home/Dittu/Desktop/Project/creditcard.csv')

现在我知道如何为两个不同的类制作散点图。

fig = plt.figure()
ax1 = fig.add_subplot(111)

ax1.scatter(x[:4], y[:4], s=10, c='b', marker="s", label='first')
ax1.scatter(x[40:],y[40:], s=10, c='r', marker="o", label='second')
plt.show()

但是如何分离这两类示例并绘制它们或用不同的标记绘制它们而不分离?

3个回答

一种方法是将数据绘制为具有低 alpha 的散点图,这样您就可以看到各个点以及粗略的密度测量。

from sklearn.datasets import load_iris
iris = load_iris()
features = iris.data.T

plt.scatter(features[0], features[1], alpha=0.2,
            s=100*features[3], c=iris.target, cmap='viridis')
plt.xlabel(iris.feature_names[0])
plt.ylabel(iris.feature_names[1]);

示例图像

我们可以看到,这个散点图使我们能够同时探索数据的四个不同维度:

  • 每个点的 (x, y) 位置对应于萼片的长度和宽度,
  • 点的大小与花瓣的宽度有关,并且
  • 颜色与特定的花种有关,即目标变量...

像这样的多色和多特征散点图对于数据的探索和呈现都很有用。

找到了答案。谢谢@Aditya

import seaborn as sns
sns.lmplot('Time', 'Amount', dataset, hue='Class', fit_reg=False)
fig = plt.gcf()
fig.set_size_inches(15, 10)
plt.show()

其中时间和金额是我需要绘制的两个特征。类是具有相关二进制类值的数据集的列。 散点图 这是我按要求得到的情节。

假设您的因变量列的名称是“目标”,并且您已将数据存储在“数据集”变量中。您可以通过以下方式根据目标值分离数据集:

import numpy as np    
idx_1 = np.where(dataset.target == 1)
idx_0 = np.where(dataset.target == 0)

上面的代码带有目标值 0 和 1 的数据集的返回索引。

现在,要显示数据,请使用:

plt.scatter(dataset.iloc[idx_1].x, dataset.iloc[idx_1].y, s=10, c='b', marker="o", label='first')
plt.scatter(dataset.iloc[idx_0].x, dataset.iloc[idx_0].y, s=10, c='r', marker="o", label='second')
plt.ylabel('y')
plt.xlabel('x')
plt.show()