我的因变量是二进制的。我的大多数自变量都不是。我现在处于探索阶段。
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 之间的关系。我还能做些什么来更清楚地看到这种关系。
我的因变量是二进制的。我的大多数自变量都不是。我现在处于探索阶段。
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 之间的关系。我还能做些什么来更清楚地看到这种关系。
首先,我们将这些数据加载到 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]})
您想查看哪些变量最能描述您的输出。第一步根据你的输出绘制你的特征,看看它们是如何分布的。
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 可以成为您处理此类数据集的首选算法。特别是当人们有兴趣了解与感兴趣的变量相关的机制时,而不是仅仅建立一个具有良好预测精度的黑盒预测模型。
结果将是一个箱须图,它们对目标变量的重要性。您不必担心分类变量和连续变量。您只需要在将数据传递给算法之前正确地转换它们。
您可以通过此链接更好地了解其包和实现。