如何根据百分比正确生成训练数据?
How to correctly generate training data based on percentages?
我有一个问题。
我目前正在为我的贝叶斯网络生成训练数据,如下所示:
(也作为下面的代码)
->infected代表被感染的人(0=未感染,1=感染)
-> p_tests 是测试结果(0= 测试阴性,1= 测试阳性)
TP、FN、FP、TN中是否有0或1是这样决定的:
data = np.random.randint(2, size=(10, 2))
columns = ['infected', 'p_tests']
df = pd.DataFrame(data=data, columns=columns)
df["TP"] = ((df['infected'] == 1) & (df['p_tests'] == 1)).astype(int)
df["FN"] = ((df['infected'] == 1) & (df['p_tests'] == 0)).astype(int)
df["FP"] = ((df['infected'] == 0) & (df['p_tests'] == 1)).astype(int)
df["TN"] = ((df['infected'] == 0) & (df['p_tests'] == 0)).astype(int)
print(df)
这样 运行 很好。
我现在的问题是,我该如何决定,例如。根据我的概率,感染组的 1 和 0。
被感染的几率是 10%。我如何对数据进行编程,以便我的集合中有 10% 的值为 1(表明 10% 已被感染)?
同样是TP(80%),TN(98%),FP(2%),FN(20%)的概率
有没有人有关于如何解决这个问题的想法?
以设定的概率随机分配值,例如P(infected) = 0.9,可以这样进行:
在 (0, 1.0)
范围内随机选择 floating-point 个值 r
df['r'] = np.random.uniform(0, 1.0, size=df.shape[0])
根据概率阈值设置infected
的值:
df['infected'] = (df['r'] >= 0.9).astype(int)
我有一个问题。
我目前正在为我的贝叶斯网络生成训练数据,如下所示: (也作为下面的代码)
->infected代表被感染的人(0=未感染,1=感染) -> p_tests 是测试结果(0= 测试阴性,1= 测试阳性)
TP、FN、FP、TN中是否有0或1是这样决定的:
data = np.random.randint(2, size=(10, 2))
columns = ['infected', 'p_tests']
df = pd.DataFrame(data=data, columns=columns)
df["TP"] = ((df['infected'] == 1) & (df['p_tests'] == 1)).astype(int)
df["FN"] = ((df['infected'] == 1) & (df['p_tests'] == 0)).astype(int)
df["FP"] = ((df['infected'] == 0) & (df['p_tests'] == 1)).astype(int)
df["TN"] = ((df['infected'] == 0) & (df['p_tests'] == 0)).astype(int)
print(df)
这样 运行 很好。
我现在的问题是,我该如何决定,例如。根据我的概率,感染组的 1 和 0。
被感染的几率是 10%。我如何对数据进行编程,以便我的集合中有 10% 的值为 1(表明 10% 已被感染)?
同样是TP(80%),TN(98%),FP(2%),FN(20%)的概率
有没有人有关于如何解决这个问题的想法?
以设定的概率随机分配值,例如P(infected) = 0.9,可以这样进行:
在
范围内随机选择 floating-point 个值(0, 1.0)
r
df['r'] = np.random.uniform(0, 1.0, size=df.shape[0])
根据概率阈值设置
infected
的值:df['infected'] = (df['r'] >= 0.9).astype(int)