标签: feature-extraction

CountVectorizer:"我"没有出现在矢量化文本中

我是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"或类似的其他内容时,它确实会显示出来.

feature-extraction scikit-learn

10
推荐指数
1
解决办法
4882
查看次数

从音频文件中提取音高特征

我试图从音频文件中提取音高特征,我将用于分类问题.我使用python(scipy/numpy)进行分类.

我想我可以使用频率功能,scipy.fft但我不知道如何使用频率来近似音符.我研究了一下,发现我需要获得色度特征,这些特征将频率映射到12二进制位以获得半音阶的音符.

我认为有一个用于matlab的色度工具箱,但我不认为python有类似的东西.

我该怎么做呢?任何人都可以建议阅读我应该研究的材料吗?

python audio feature-extraction scipy

10
推荐指数
1
解决办法
1万
查看次数

筛选提取 - opencv

我正在尝试使用(C++)OpenCv开始使用筛选功能提取.我需要使用SIFT提取特征,在原始图像(例如书籍)和场景之间匹配它们,然后计算相机姿势.

到目前为止,我已经使用SURF 找到了这个算法.有没有人知道我可以开始使用的基本代码,或者可能是将链接中的算法从SURF转换为SIFT的方法?

提前致谢.

编辑: 好的,我为筛选问题找到了解决方案.现在我正试图想出相机的姿势.我正在尝试使用:solvePnP,任何人都可以帮我一个例子吗?

c++ opencv feature-extraction surf sift

9
推荐指数
1
解决办法
1万
查看次数

如何在scikit-learn(计算机视觉)中使用我自己的数据集?

如何在scikit-learn中使用我自己的数据集?Scikit Tutorial总是以加载他的数据集为例(数字数据集,花卉数据集......)

http://scikit-learn.org/stable/datasets/index.html ie:来自sklearn.datasets import load_iris

我有我的图像,我不知道如何创建新的图像.

特别是,为了开始,我使用这个例子我发现(我使用库opencv):

img =cv2.imread('telamone.jpg')

# Convert them to grayscale
imgg =cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

# SURF extraction
surf = cv2.SURF()
kp, descritors = surf.detect(imgg,None,useProvidedKeypoints = False)

# Setting up samples and responses for kNN
samples = np.array(descritors)
responses = np.arange(len(kp),dtype = np.float32)
Run Code Online (Sandbox Code Playgroud)

我想以一种有用的方式提取一组图像的特征来实现机器学习算法!

image machine-learning dataset feature-extraction scikit-learn

9
推荐指数
1
解决办法
3712
查看次数

从Canny边缘提取单线轮廓

我想提取图像的轮廓,表示为一系列点坐标.

随着Canny我能够产生包含图像的只有边缘的二值图像.然后,我试图findContours用来提取轮廓.但结果并不好.

对于每个边缘,我经常得到2条线,就像它被认为是一个非常薄的区域.我想简化我的轮廓,以便我可以将它们画成单行.或者可以用不同的函数提取它们,直接产生正确的结果会更好.

我看了一下OpenCV的文档,但我找不到任何有用的东西,但我想我不是第一个遇到类似问题的人.我可以使用任何功能或方法吗?

这是我到目前为止编写的Python代码:

def main():
    img = cv2.imread("lena-mono.png", 0)

    if img is None:
        raise Exception("Error while loading the image")

    canny_img = cv2.Canny(img, 80, 150)

    contours, hierarchy = cv2.findContours(canny_img, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
    contours_img = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)

    scale = 10
    contours_img = cv2.resize(contours_img, (0, 0), fx=scale, fy=scale)

    for cnt in contours:
        color = np.random.randint(0, 255, (3)).tolist()
        cv2.drawContours(contours_img,[cnt*scale], 0, color, 1)

    cv2.imwrite("canny.png", canny_img)
    cv2.imwrite("contours.png", contours_img)
Run Code Online (Sandbox Code Playgroud)

比例因子用于突出轮廓的双线.以下是图片的链接:

  • 莉娜灰度
  • 边缘Canny
  • 轮廓:10倍变焦,您可以在其中看到错误的结果findContours

任何建议将不胜感激.

opencv feature-extraction contour computer-vision edge-detection

9
推荐指数
1
解决办法
1万
查看次数

强大的blob跟踪

我有图像特征提取问题.输入图像是二进制(黑色和白色),并且可以包含近似已知区域和纵横比的斑点.这些需要使用一些最佳拟合算法与椭圆拟合.

输入示例:

期望的输出:

可能存在多个blob(零个或多个),该数量事先未知.所有斑点的近似面积和纵横比是已知的(并且是相同的).图像中有多少,它们的位置,方向和实际尺寸都是我想要找到的.根据实际找到的大小和纵横比,输出应该是每个blob的最佳拟合椭圆.

造成这种困难的是噪音和可能的重叠.

噪音示例:

重叠和噪音的示例:

嘈杂的图像可能在斑点中有洞,而且周围散布着小的其他斑点.小的其他斑点不计算在内,因为它们太小而且不能覆盖任何密集的区域以至于被认为是真正的匹配.

具有重叠的图像应该被计为两个斑点,因为该区域太大而单个斑点无法很好地覆盖它.

评估潜在拟合的可能指标是:

(K1*与预期尺寸的偏差百分比+ K2*与预期纵横比的偏差百分比+ K3*椭圆的百分比,非黑色+ K4*百分比与任何其他椭圆重叠)+ + K5*百分比的图像其余部分的总和这是黑色的

对于一些适当选择的参数K1..K5.完美的比赛得分为0.

我可以看到如何使用强力解决这个问题,例如尝试足够的不同可能的拟合来很好地对搜索空间进行采样.我无法想象一种比蛮力更快的方法.

我更喜欢python和/或opencv中的示例.我将尝试在python中实现并发布任何建议的解决方案.谢谢!

PS不能假设blob已连接.可能有足够的噪音将其分解成不连续的部分.

PPS二进制腐蚀无法消除少量噪声.在我的一些图像中,有足够的内部孔,如果图像被腐蚀到足以使噪声比特消失,则侵蚀使整个(真实)斑点消失.

PPPS我认为使用任何基于轮廓的方法来解决这个问题是非常困难的.我在实践中看到的数据有太多的边缘噪声,可能(通常是)一些噪声连接单独的blob,或者将单个blob分成几个(明显的)连接组件.我想基于区域的方法,因为区域覆盖似乎比边缘形状小得多.

PPPPS根据要求,这是一个由于噪音导致切入的示例:

和一个有很多很多噪音但仍然是一个明显斑点的样本:

编辑没有一个答案实际上解决了这个问题,尽管巴拉特提出了一个部分解决方案,它可以很好地解决非重叠的blob问题.请更多:)我将奖励任何实际解决方案的额外奖励.

python opencv feature-extraction computer-vision

9
推荐指数
1
解决办法
2846
查看次数

应该使用哪些FFT描述符作为实现分类或聚类算法的特征?

我有一些地理轨迹被采样来分析,我计算了空间和时间维度的数据直方图,为每个空间元素产生了一个基于时域的特征.我想执行离散FFT以将基于时域的特征转换为基于频域的特征(我认为可能更强大),然后进行一些分类或聚类算法.

但我不确定使用什么描述符作为基于频域的特征,因为有信号的振幅频谱,功率谱和相位谱,我已经阅读了一些参考文献,但仍然对其重要性感到困惑.当在基于频域的特征向量(欧几里得距离?余弦距离?高斯函数?Chi-kernel或其他?)上执行学习算法时,应使用什么距离(相似度)函数作为度量?

希望有人给我一些线索或一些我可以参考的材料,谢谢〜

编辑

感谢@DrKoch,我选择了一个具有最大L-1规范的空间元素,并log power spectrum在python中绘制它,它确实显示了一些突出的峰值,下面是我的代码和图
import numpy as np
import matplotlib.pyplot as plt
sp = np.fft.fft(signal)
freq = np.fft.fftfreq(signal.shape[-1], d = 1.) # time sloth of histogram is 1 hour
plt.plot(freq, np.log10(np.abs(sp) ** 2))
plt.show()
Run Code Online (Sandbox Code Playgroud)

对数功率谱

我有几个微不足道的问题需要确保我完全理解你的建议:

  • 在你的第二个建议中,你说"忽略所有这些价值观".

    你的意思是水平线代表阈值,它下面的所有值应该分配给零值吗?
  • "你可以搜索两个,三个最大的山峰,并使用它们的位置和可能的宽度作为'特征'进行进一步分类."

    我对"位置"和"宽度"的含义有点困惑,"位置"是指功率谱的对数值(y轴),"宽度"是指频率(x轴)?如果是这样,如何将它们组合在一起作为特征向量并比较"相似频率和类似宽度"的两个特征向量?

编辑

我换成np.fft.fftnp.fft.rfft计算正的部分和情节两个功率谱和日志功率谱.

码:
f, axarr = plt.subplot(2, sharex = True)
axarr[0].plot(freq, np.abs(sp) ** 2)
axarr[1].plot(freq, np.log10(np.abs(sp) ** 2))
plt.show()
Run Code Online (Sandbox Code Playgroud) 数字:

功率谱和对数功率谱 如果我错了,请纠正我:

我认为我应该在第一个数字中保留最后四个峰值power …

fft machine-learning similarity data-mining feature-extraction

9
推荐指数
1
解决办法
8175
查看次数

在Java中保存大量数据的最佳实践

我正在用Java编写一个小系统,我从文本文件中提取n-gram特征,然后需要执行特征选择过程以选择最多的鉴别器特征.

单个文件的特征提取过程返回一个映射,该映射包含每个唯一特征,它在文件中的出现.我将所有文件的地图(地图)合并到一个地图中,其中包含从所有文件中提取的所有独特功能的文档频率(DF).统一地图可包含10,000,000个以上的条目.

目前,特征提取过程运行良好,我想执行特征选择,其中我需要实现信息增益或增益比.我将首先对Map进行排序,执行计算并保存结果,以便最终得到一个列表(对于每个特征,其特征选择分数)

我的问题是:保存大量数据(~10M)并执行计算的最佳实践和最佳数据结构是什么?

java computation feature-extraction feature-selection data-structures

9
推荐指数
3
解决办法
1万
查看次数

是否可以使用特征向量查询弹性搜索?

我想存储一个n维特征向量,例如<1.00, 0.34, 0.22, ..., 0>,与每个文档,然后提供另一个特征向量作为查询,结果按余弦相似性的顺序排序.弹性搜索有可能吗?

information-retrieval feature-extraction elasticsearch

9
推荐指数
1
解决办法
1588
查看次数

理解 mfcc 的输出

from librosa.feature import mfcc
from librosa.core import load

def extract_mfcc(sound):
    data, frame = load(sound)
    return mfcc(data, frame)


mfcc = extract_mfcc("sound.wav")
Run Code Online (Sandbox Code Playgroud)

我想获得以下48 秒长的sound.wav文件的 MFCC 。

我明白 data * frame = length of audio.

但是当我按照上图计算 MFCC 并得到它的形状时,结果如下: (20, 2086)

这些数字代表什么?如何仅通过其 MFCC 计算音频的时间?

我正在尝试计算每毫秒音频的平均 MFCC。

任何帮助表示赞赏!谢谢 :)

python audio artificial-intelligence feature-extraction mfcc

9
推荐指数
1
解决办法
4710
查看次数