找到每个变量的范围,这些变量给出了最大数量的解决方案



我不确定是否有这种进程的名称。我有一个包含许多输入变量的条目的数据集,每个条目的输出为0或1。我正试图找到一种很好的方法来查找每个变量的范围,这样所有具有这些范围的条目的输出都为1。找到输出为1的条目数最多的范围的最佳方法是什么?

现在,我想到的过程是按每个变量排序,然后收紧变量的范围,该范围在该变量的最大值/最小值附近具有最低百分比1s。

例如(3个输入,第4列输出(:

[1.2, 6.0, -9.2, 0]
[1.4, 3.6,  3.2, 1]
[1.7, 3.8, -4.2, 0]
[2.2, 7.0, -3.3, 1]
[4.7, 3.4, -8.9, 1]
[4.9, 3.4, -8.9, 1]

最好的范围是A(2.2到4.9(B(3.4到7.0(C(-8.9到-3.3(,它有三个条目。根据第一个变量排序,可以删除值小于2.2的条目,以便最终只得到输出为1的条目。(实际上会有更多的变量和条目(

这种类型的流程有名字吗?有更好的方法吗?非常感谢。

按照以下代码获取min&每个变量的最大值,其中输出=1;如果需要的话,需要检查大量数据以获得更多的信心。。。

import pandas as pd
lst=[[1.2, 6.0, -9.2, 0],
[1.4, 3.6,  3.2, 1],
[1.7, 3.8, -4.2, 0],
[2.2, 7.0, -3.3, 1],
[4.7, 3.4, -8.9, 1],
[4.9, 3.4, -8.9, 1]]
df = pd.DataFrame(lst,columns=list('ABC')+["Output"])
df0 = df[df["Output"] == 0]
df1 = df[df["Output"] == 1]
lst_min_value,lst_max_value=[],[]
df2 = df.copy()
for col in df.columns[:-1]:
max_0 = df0[col].max()
min_1 = df1[col].min()
min_val = max(max_0,min_1)

min_value = df[df[col] > min_val][col].min()
max_value = df1[col].max()
df2 = df2[(df2[col] >= min_value) & (df2[col] <= max_value)]
for col in df2.columns[:-1]:
print("Range for",col,":",df2[col].min(),df2[col].min())
# Output;
Range for A : 2.2 2.2
Range for B : 7.0 7.0
Range for C : -3.3 -3.3

希望这能帮助。。。

相关内容

最新更新