2017-07-26 67 views
0

我已经设置像这样火车带文本的,估计拥有

X = [tag, design_version, runtime, error_msg], Y = 'PASS'/'FAIL' 
'tag' = string 
'design_version' = string 
'runtime' = number 
'error_msg' = string 

还有更多的功能(字符串,数字),我可以访问,但没有列在这里为简便起见标记的训练数据。数据实际上是一组用于模拟的属性,标签是模拟通过还是失败。我想用这些输入来训练一个估计器;并使其在一组新属性上预测“通过”或“失败”。

我一直在阅读Working with Text Data with sklearn。但是,如何使用文本和数字特征的组合来适合估算人员并不十分清楚。什么算法使用等

任何指针会真的很有帮助!

回答

1

scikit-learn提供了一个很好的实用工具类FeatureUnion,它允许组合几个特征提取方法(即连接它们产生的特征向量)。有关如何组合不同功能类型的tutorial。基本上,你可以这样做:

fe = FeatureUnion([ 
    ('tag', Pipeline([ 
     ('selector', ItemSelector(key='tag')), 
     ('tfidf', TfidfVectorizer(ngram_range=(3,5), analyzer='char'))), 
    ])), 
    ('runtime', # ...transformer for runtime feature 
    # ... etc 
]) 

(ItemSelector是在教程中定义的自定义类)。

+1

这几乎是我希望找到的!虽然它可能需要我花一些时间才能真正尝试并实现它,但我确信这就是我需要的。谢谢大家! – shikhanshu

0

您必须将字符串类型数据转换为数字。这有不同的方法,比如单热编码,标签编码,tf-idf等。这些方法取决于你的数据是如何工作的,但首先你可以二值化你的Y值,所以如果通过它1,并且如果你失败它是0.

+0

对于某些属性,编码方案很容易实现。但是,这不是一个可以用于数学计算的连续数字。我的意思是,房屋面积是一个连续的价值(面积越多,它增加的重量越多);但编码值不能直接关联到标签的数字权利?我可以将我的标签编码为0,1,2(说)。但是这并不表示“随着标签数量的增加,更多的标签被认为是失败”或其他。 – shikhanshu

+0

适用于某些属性,可以标注它的标称属性。如果你已经有了持续的价值观,那么就像那样。您需要将名义属性更改为您的模型可以训练的序数。 –

+0

“改变名义属性为序号” - 这是什么意思?我正在考虑使用k-NN方法。由于k-NN查看特征之间的距离,我可以使用字符串属性的字符串距离度量。如果这可行,我甚至不需要将字符串特征转换为数字,也不需要。 – shikhanshu