绘图显示自变量和因变量之间的关系(二进制)

数据挖掘 分类
2022-02-24 14:17:20

我的因变量是二进制的。我的大多数自变量都不是。我现在处于探索阶段。

Y     X1     X2
0     23    0
1     29    1
0     15    1
1     40    0
1     25    1
0     22    1
This is just a portion of my data.

我在想散点图来找出 Y X1 和 X2 之间的关系。我还能做些什么来更清楚地看到这种关系。

2个回答

首先,我们将这些数据加载到 Pandas DataFrame 中

import pandas as pd
df = pd.DataFrame(data = {'Y': [0,1,0,1,1,0], 
                          'X1':[23,29,15,40,25,22],
                          'X2':[0,1,1,0,1,1]})

您想查看哪些变量最能描述您的输出第一步根据你的输出绘制你的特征,看看它们是如何分布的。Y

plt.figure(figsize=(14,5))

plt.subplot(1,2,1)
plt.scatter(df['X1'], df['Y'])
plt.ylabel('Feature Y')
plt.xlabel('Feature X1')

plt.subplot(1,2,2)
plt.scatter(df['X2'], df['Y'])
plt.ylabel('Feature Y')
plt.xlabel('Feature X2')

plt.show()

在此处输入图像描述

然后,您可以根据输出拆分数据并查看输出分布的可分离性。这将为您提供有关每个特征对于构建分类器的重要性的信息。

plt.figure(figsize=(14,5))

plt.subplot(1,2,1)
plt.hist(df['X1'][df['Y'] == 0], bins=3, alpha = 0.7, label = 'Y = 0')
plt.hist(df['X1'][df['Y'] == 1], bins=3, alpha = 0.7, label = 'Y = 1')
plt.ylabel('Distribution')
plt.xlabel('Feature X1')
plt.legend()

plt.subplot(1,2,2)
plt.hist(df['X2'][df['Y'] == 0], bins=3, alpha = 0.7, label = 'Y = 0')
plt.hist(df['X2'][df['Y'] == 1], bins=3, alpha = 0.7, label = 'Y = 1')
plt.ylabel('Distribution')
plt.xlabel('Feature X2')
plt.legend()

plt.show()

在此处输入图像描述

从这一点我们可以看出,单独的特征 X2 对 Y 进行分类是没有用的。但是,当我们在输出上同时考虑 X1 和 X2 时,我们可以看到 X2 可以帮助我们更好地预测 Y。我们可以看到线性分离器会做这个数据的伎俩。

plt.scatter(df['X1'], df['X2'], c = df['Y'], cmap = 'autumn')
plt.ylabel('Feature X2')
plt.xlabel('Feature X1')
plt.colorbar()
plt.show()

在此处输入图像描述

在 R/Python 中有一个名为Boruta的包。这也称为预测变量重要性测试。用于选择重要的变量。

这个包的用途:

Boruta 是一种特征选择算法。准确地说,它作为随机森林的包装算法工作。这个包裹的名字来源于斯拉夫神话中居住在松树林中的恶魔。

我们知道特征选择是预测建模的关键步骤。当为模型构建提供由多个变量组成的数据集时,该技术具有至高无上的重要性。

Boruta 可以成为您处理此类数据集的首选算法。特别是当人们有兴趣了解与感兴趣的变量相关的机制时,而不是仅仅建立一个具有良好预测精度的黑盒预测模型。

结果将是一个箱须图,它们对目标变量的重要性。您不必担心分类变量和连续变量。您只需要在将数据传递给算法之前正确地转换它们。

您可以通过此链接更好地了解其包和实现。

这是示例图: 样本图 如果您需要任何其他信息,请告诉我。