我正在实现"人体检测的定向梯度直方图"中的"定向梯度直方图"功能,我希望将结果可视化.有关这些功能的所有论文都使用标准可视化,但我找不到有关如何生成这些功能的任何描述.我要感谢解释或有用的链接.
我正在阅读有关scfit -learn的TfidfVectorizer 实现,我不明白该方法的输出,例如:
new_docs = ['He watches basketball and baseball', 'Julie likes to play basketball', 'Jane loves to play baseball']
new_term_freq_matrix = tfidf_vectorizer.transform(new_docs)
print tfidf_vectorizer.vocabulary_
print new_term_freq_matrix.todense()
Run Code Online (Sandbox Code Playgroud)
输出:
{u'me': 8, u'basketball': 1, u'julie': 4, u'baseball': 0, u'likes': 5, u'loves': 7, u'jane': 3, u'linda': 6, u'more': 9, u'than': 10, u'he': 2}
[[ 0.57735027 0.57735027 0.57735027 0. 0. 0. 0.
0. 0. 0. 0. ]
[ 0. 0.68091856 0. 0. 0.51785612 0.51785612
0. 0. 0. 0. 0. ]
[ 0.62276601 0. …Run Code Online (Sandbox Code Playgroud) nlp machine-learning feature-extraction document-classification scikit-learn
我正在使用sklearn.pipeline.Pipeline链接特征提取器和分类器.有没有办法sklearn.feature_selection.text并行组合多个特征选择类(例如来自哪些)并加入它们的输出?
我的代码现在看起来如下:
pipeline = Pipeline([
('vect', CountVectorizer()),
('tfidf', TfidfTransformer()),
('clf', SGDClassifier())])
Run Code Online (Sandbox Code Playgroud)
它导致以下结果:
vect -> tfidf -> clf
Run Code Online (Sandbox Code Playgroud)
我希望能够指定一个如下所示的管道:
vect1 -> tfidf1 \
-> clf
vect2 -> tfidf2 /
Run Code Online (Sandbox Code Playgroud) 我正在使用FeatureUnion来加入从事件标题和描述中找到的功能:
union = FeatureUnion(
transformer_list=[
# Pipeline for pulling features from the event's title
('title', Pipeline([
('selector', TextSelector(key='title')),
('count', CountVectorizer(stop_words='english')),
])),
# Pipeline for standard bag-of-words model for description
('description', Pipeline([
('selector', TextSelector(key='description_snippet')),
('count', TfidfVectorizer(stop_words='english')),
])),
],
transformer_weights ={
'title': 1.0,
'description': 0.2
},
)
Run Code Online (Sandbox Code Playgroud)
但是,调用union.get_feature_names()给我一个错误:"变换器标题(类型管道)不提供get_feature_names." 我想看看我的不同矢量化器生成的一些功能.我该怎么做呢?
我试图通过PCA阅读并发现目标是最大化方差.我不太明白为什么.任何有关其他相关主题的解释/指示都会有所帮助
我已经看到OpenCV提供了一个基于LBP 直方图的分类器:
但我希望能够访问LBP直方图本身.例如:
histogram = calculate_LBP_Histogram( image )
Run Code Online (Sandbox Code Playgroud)
是否有任何功能在OpenCV中执行此操作?
我试图在动词对之间实现关系提取.我想使用从一个动词到另一个动词的依赖路径作为我的分类器的一个特征(预测关系X是否存在).但我不确定如何将依赖路径编码为一个功能.以下是一些示例依赖路径,作为与StanfordCoreNLP Collapsed Dependencies的空格分隔关系注释:
nsubj acl nmod:from acl nmod:by conj:and
nsubj nmod:into
nsubj acl:relcl advmod nmod:of
Run Code Online (Sandbox Code Playgroud)
重要的是要记住,这些路径长度可变,并且可以不受任何限制地重新出现这种关系.
我想到的两种对这种功能进行编码的折衷方法是:
1)忽略序列,每个关系只有一个特征,其值是它在路径中出现的次数
2)具有长度为n的滑动窗口,并且对于每个可能的关系对具有一个特征,其值是这两个关系连续出现的次数.我想这是编码n-gram的方式.但是,可能关系的数量是50,这意味着我不能真正采用这种方法.
欢迎任何建议.
nlp machine-learning feature-extraction information-extraction stanford-nlp
我偶然发现了TSfresh库,以期使时间序列数据趋于完美。该文档非常棒,似乎非常适合我正在从事的项目。
我想实现以下在TFresh文档的快速入门部分中共享的代码。而且看起来很简单。
from tsfresh import extract_relevant_features
feature_filtered_direct=extract_relevant_features(result,y,column_id=0,column_sort=1)
Run Code Online (Sandbox Code Playgroud)
我的数据包括40万行传感器数据,每个传感器有6个传感器,分别用于15个不同的ID。我开始运行代码,但是17个小时后它仍然没有完成。我认为这个数据集可能太大,无法通过相关的特征提取器运行,因此我将其缩减为3000,然后进一步缩减为300。这些动作都没有使代码在一个小时内运行,而我刚结束在一小时左右的等待后关闭它。我也尝试了标准特征提取器
extracted_features = extract_features(timeseries, column_id="id", column_sort="time")
Run Code Online (Sandbox Code Playgroud)
尝试TSfresh在其快速入门部分介绍的示例数据集。其中包括一个非常类似于我的原始数据的数据集,其中数据点的数量与我减少到的数据量大致相同。
有人对此代码有经验吗?您将如何使其更快地工作?我正在将Anaconda用于python 2.7。
更新 似乎与多处理有关。因为我在Windows上,所以使用多进程代码需要受到保护
if __name__ == "__main__":
main()
Run Code Online (Sandbox Code Playgroud)
一旦我添加
if __name__ == "__main__":
extracted_features = extract_features(timeseries, column_id="id", column_sort="time")
Run Code Online (Sandbox Code Playgroud)
对于我的代码,示例数据有效。在我自己的数据集上运行extract_relevant_features函数和运行extract features模块时,我仍然遇到一些问题。好像它继续缓慢运行。我也感觉到它也与多进程冻结有关,但是没有任何错误会弹出来,这是无法分辨的。我花了大约30分钟的时间来提取不到我数据集的1%的要素。
从TensorFlow文档中可以清楚地看到如何使用tf.feature_column.categorical_column_with_vocabulary_list创建一个特征列,该特征列将一些字符串作为输入并输出一个热矢量.例如
vocabulary_feature_column =
tf.feature_column.categorical_column_with_vocabulary_list(
key="vocab_feature",
vocabulary_list=["kitchenware", "electronics", "sports"])
Run Code Online (Sandbox Code Playgroud)
让我们说"kitchenware"映射到[1,0,0]并"electronics"映射到[0,1,0].我的问题与将字符串列表作为特征有关.例如,如果特征值是,["kitchenware","electronics"]那么期望的输出将是[1,1,0].输入列表长度不固定,但输出维度为.
用例是一个直的词袋类型模型(显然有一个更大的词汇表!).
实现这个的正确方法是什么?
machine-learning feature-extraction neural-network tensorflow
我是scrakit-learn的新手,目前正在学习NaïveBayes(Multinomial).现在,我正在研究sklearn.feature_extraction.text中的文本向量化,出于某种原因,当我向某些文本进行矢量化时,单词"I"不会出现在输出的数组中.
码:
x_train = ['I am a Nigerian hacker', 'I like puppies']
# convert x_train to vectorized text
vectorizer_train = CountVectorizer(min_df=0)
vectorizer_train.fit(x_train)
x_train_array = vectorizer_train.transform(x_train).toarray()
# print vectorized text, feature names
print x_train_array
print vectorizer_train.get_feature_names()
Run Code Online (Sandbox Code Playgroud)
输出:
1 1 0 1 0
0 0 1 0 1
[u'am', u'hacker', u'like', u'nigerian', u'puppies']
Run Code Online (Sandbox Code Playgroud)
为什么"我"似乎没有出现在功能名称中?当我将其更改为"Ia"或类似的其他内容时,它确实会显示出来.
scikit-learn ×4
nlp ×3
opencv ×2
python ×1
python-2.7 ×1
python-3.x ×1
stanford-nlp ×1
tensorflow ×1
time ×1
time-series ×1