python - 如何将 Snorkel 应用于数值数据?
问题描述
我有一个未标记的训练数据集,我试图使用它来标记,Snorkel
以最终获得每个数据行的分数并执行回归分类(或获取多标签分类的标签)。它是具有基因行和数字数据列的生物数据。由于Snorkel
我做错了什么,所以我label_function
的做法不对,而且我不确定如何让它适用于我的数据类型。
这是我尝试使用的代码:
import numpy as np
import pandas as pd
import snorkel
from snorkel.labeling import labeling_function
from snorkel.labeling.model import LabelModel
from snorkel.labeling import LFAnalysis
from snorkel.labeling import PandasLFApplier
dataset = pd.read_csv("training_data.txt", header=0, sep='\t')
data = dataset.fillna(0) #removing the few NAs just to get Snorkel working
@labeling_function()
def lf1(df_row):
m = df_row.col1 >= 3
return 1 if m else 0
@labeling_function()
def lf2(df_row):
m = df_row.col2 >= 1
return 1 if m else 0
@labeling_function()
def lf3(df_row):
m = df_row.col3 < 3
return 0.75 if m else 0
@labeling_function()
def lf4(df_row):
m = df_row.col4 >= 1
return 0.75 if m else 0
@labeling_function()
def lf5(df_row):
m = df_row.col5 < 1
return 0.75 if m else 0
@labeling_function()
def lf6(df_row):
m = df_row.col6 == 1
return 0.1 if m else 0
lfs = [lfl, lf2, lf3, lf4, lf5, lf6]
applier = PandasLFApplier(lfs=lfs)
L_train = applier.apply(df=data)
这运行没有错误,但L_train
似乎只为我的前 2 个标签函数提供标签,但我知道我的数据集中有一些行实际上满足了我的 6 个标签函数要求中的任何/全部 - 我错过了什么?
例如,此代码的输出是:
L_train
#output:
array([[0, 1, 0, 0, 0, 0],
[1, 0, 0, 0, 0, 0],
[1, 1, 0, 0, 0, 0],
...,
[0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0]])
LFAnalysis(L=L_train, lfs=lfs).lf_summary()
#output:
j Polarity Coverage Overlaps Conflicts
lf1 0 [0, 1] 1.0 1.0 0.173333
lf2 1 [0, 1] 1.0 1.0 0.173333
lf3 2 [0] 1.0 1.0 0.173333
lf4 3 [0] 1.0 1.0 0.173333
lf5 4 [0] 1.0 1.0 0.173333
lf6 5 [0] 1.0 1.0 0.173333
我无法分享我的实际数据集,但它本质上只是 100 列纯数字数据,我的领域知识涉及使用几列来制作上面的标签函数。从理论上讲,我还可以添加带有字符串数据的文本列并使用它们来制作标签,但我也不确定是否可以使用Snorkel
涉及数字规则和文本规则的规则来制定规则?只是试图让任何标签首先工作。
解决方案
推荐阅读
- javascript - 我想要实现的是过滤所有订单以获取每个卖家出售的所有产品
- for-loop - Robot Framework,如何从 Range 中获取奇数行表的值
- pine-script - 如何将指标转化为策略?
- python - 使用 Bearer 令牌从 API 请求数据
- angular - Angular 2+ iframe 视频播放器点击事件
- javascript - 将两个图像与每个图像的两个点与html5画布结合起来
- mapbox-gl-js - MapboxGL:使用两个锚创建可调整大小的可拖动矩形
- javascript - 运行 build-installer (ElectronJS) 后 Puppeteer 不工作
- visual-studio-2019 - VS2019远程调试无法从VMware Workstation虚拟串口命名管道
- ibm-mq - IBM MQ - 如何独立地将消息出列并提交?