我正在使用ImageMagick对文本进行缩减采样.我意识到对于每种情况都没有最好的过滤器这样的东西,但是我认为在具体地对文本进行下采样时必须有一个普遍接受的标准(我可能是错的).以下是ImageMagick中可用的过滤器列表:
我正在努力捕获并将音频流传输到RTMP服务器.我在MacOS下工作(在Xcode中),所以为了捕获音频样本缓冲区我使用AVFoundation-framework.但是对于编码和流媒体,我需要使用ffmpeg-API和libfaac编码器.因此输出格式必须是AAC(用于支持iOS设备上的流播放).
我遇到了这样的问题:音频捕获设备(在我的案例中是罗技相机)为我提供了512个LPCM样本的样本缓冲区,我可以选择16000,24000,36000或48000 Hz的输入采样率.当我将这512个样本提供给AAC编码器(配置为适当的采样率)时,我听到一个缓慢而抽搐的音频(在每帧之后看起来像是沉默的骰子).
我想通了(也许我错了),libfaac编码器只接受1024个样本的音频帧.当我将输入采样率设置为24000并在编码之前将输入采样缓冲区重采样为48000时,我获得1024个重采样样本.将这些1024个样本编码到AAC后,我听到输出声音正确.但是,当输出采样率必须为48000 Hz时,我的网络摄像头会在缓冲区中为任何输入采样率生成512个样本.所以我需要在任何情况下进行重采样,重新采样后我不会在缓冲区中获得1024个样本.
有没有办法在ffmpeg-API功能中解决这个问题?
我将不胜感激任何帮助.
PS:我想我可以累积重采样缓冲区,直到样本数变为1024,然后对其进行编码,但这是流,因此会产生时间戳和其他输入设备的麻烦,并且这种解决方案不合适.
当前问题出自[问题]中描述的问题:如何使用从CMSampleBufferRef(AVFoundation)获得的数据填充音频AVFrame(ffmpeg)?
这是一个带有音频编解码器配置的代码(还有视频流,但视频工作正常):
/*global variables*/
static AVFrame *aframe;
static AVFrame *frame;
AVOutputFormat *fmt;
AVFormatContext *oc;
AVStream *audio_st, *video_st;
Init ()
{
AVCodec *audio_codec, *video_codec;
int ret;
avcodec_register_all();
av_register_all();
avformat_network_init();
avformat_alloc_output_context2(&oc, NULL, "flv", filename);
fmt = oc->oformat;
oc->oformat->video_codec = AV_CODEC_ID_H264;
oc->oformat->audio_codec = AV_CODEC_ID_AAC;
video_st = NULL;
audio_st = NULL;
if (fmt->video_codec != AV_CODEC_ID_NONE)
{ //… /*init video codec*/}
if (fmt->audio_codec != AV_CODEC_ID_NONE) {
audio_codec= avcodec_find_encoder(fmt->audio_codec);
if (!(audio_codec)) {
fprintf(stderr, "Could …Run Code Online (Sandbox Code Playgroud) 假设我们有以下数据
set.seed(123)
dat <- data.frame(var1=c(10,35,13,19,15,20,19), id=c(1,1,2,2,2,3,4))
(sampledIDs <- sample(min(dat$id):max(dat$id), size=3, replace=TRUE))
> [1] 2 4 2
Run Code Online (Sandbox Code Playgroud)
samplingID是从中采样(替换)的id的向量dat$id.我需要导致的代码(并且也适用于包含更多变量的大型数据集):
var1 id
13 2
19 2
15 2
19 4
13 2
19 2
15 2
Run Code Online (Sandbox Code Playgroud)
代码dat[which(dat$id%in%sampledIDs),]不能给我我想要的东西,因为这段代码的结果是
var1 id
13 2
19 2
15 2
19 4
Run Code Online (Sandbox Code Playgroud)
主题dat$id==2在此数据中只出现一次(我理解为什么这是结果,但不知道如何得到我想要的).有人可以帮忙吗?
编辑:谢谢你的答案,这里是所有答案的运行时间(对于那些感兴趣的人):
test replications elapsed relative user.self
3 dat[unlist(lapply(sampledIDs, function(x) which(x == dat$id))), ] 1000 0.67 1.000 0.64
1 dat[which(sapply(sampledIDs, "==", dat$id), arr.ind = TRUE)[, 1], ] 1000 0.67 …Run Code Online (Sandbox Code Playgroud) 我在大熊猫数据框中导入了雅虎财务每日股票价格.我想用.resample()每个月的第一个QUOTED每日价格将其转换为月度股票价格.
.resample('MS', how='first')
Run Code Online (Sandbox Code Playgroud)
返回每个月的正确价格,但它会将指数更改为该月的第一天,而一般情况下,由于假期和周末,报价的月份的第一天可能是该月的第二天或第三天.
如何resample()仅使用重新采样现有日期而不更改它们来使用?
假设您有一个1分钟时间序列的数据框,其中包含索引,4列和400万行。当您尝试执行以下操作时:
conversion = {'Open': 'first', 'High': 'max', 'Low': 'min', 'Close': 'last'}
df1 = df.resample('5Min', how=conversion)
Run Code Online (Sandbox Code Playgroud)
这花费了荒谬的时间(20-30分钟)。我如何加快这个过程?
熊猫18,Python 2.7
我正在使用pandas 0.17.0并且df与此类似:
df.head()
Out[339]:
A B C
DATE_TIME
2016-10-08 13:57:00 in 5.61 1
2016-10-08 14:02:00 in 8.05 1
2016-10-08 14:07:00 in 7.92 0
2016-10-08 14:12:00 in 7.98 0
2016-10-08 14:17:00 out 8.18 0
df.tail()
Out[340]:
A B C
DATE_TIME
2016-11-08 13:42:00 in 8.00 0
2016-11-08 13:47:00 in 7.99 0
2016-11-08 13:52:00 out 7.97 0
2016-11-08 13:57:00 in 8.14 1
2016-11-08 14:02:00 in 8.16 1
Run Code Online (Sandbox Code Playgroud)
以下内容dtypes:
print (df.dtypes)
A object
B float64
C int64
dtype: object
Run Code Online (Sandbox Code Playgroud)
当我重新索引我 …
当我注意到这种奇怪的分箱时,我正在用我认为知道的有关大熊猫的一些东西回答另一个问题,即时间序列重采样。
假设我有一个包含每日日期范围索引的数据框和一个我想要重新采样和求和的列。
index = pd.date_range(start="1/1/2018", end="31/12/2018")
df = pd.DataFrame(np.random.randint(100, size=len(index)),
columns=["sales"], index=index)
>>> df.head()
sales
2018-01-01 66
2018-01-02 18
2018-01-03 45
2018-01-04 92
2018-01-05 76
Run Code Online (Sandbox Code Playgroud)
现在我重新采样一个月,一切看起来都很好:
>>>df.resample("1M").sum()
sales
2018-01-31 1507
2018-02-28 1186
2018-03-31 1382
[...]
2018-11-30 1342
2018-12-31 1337
Run Code Online (Sandbox Code Playgroud)
如果我尝试在更多个月内重新采样,尽管分箱开始出现问题。这一点尤其明显6M
df.resample("6M").sum()
sales
2018-01-31 1507
2018-07-31 8393
2019-01-31 7283
Run Code Online (Sandbox Code Playgroud)
第一个 bin 跨越一个多月,最后一个 bin 跨度为一个月。也许我必须设置closed="left"以获得适当的限制:
df.resample("6M", closed="left").sum()
sales
2018-06-30 8090
2018-12-31 9054
2019-06-30 39
Run Code Online (Sandbox Code Playgroud)
现在我在 2019 年有一个额外的垃圾箱,里面有 2018-12-31 的数据......
这工作正常吗?我错过了我应该设置的任何选项吗?
编辑:这是我希望以六个月为间隔重新采样一年的输出,第一个间隔从 1 月 1 日到 6 月 30 …
我有这个代码:
从 imblearn.over_sampling 导入 ADASYN
Y = df.target
X = df.drop('target', axis=1)
ad = ADASYN()
X_adasyn, y_adasyn = ad.fit_sample(X, Y)
getting this error:
ValueError: No samples will be generated with the provided ratio
settings.
Run Code Online (Sandbox Code Playgroud) 我正在做文本分类,并且我有非常不平衡的数据,例如
Category | Total Records
Cate1 | 950
Cate2 | 40
Cate3 | 10
Run Code Online (Sandbox Code Playgroud)
现在我想对 Cate2 和 Cate3 进行过度采样,因此它至少有 400-500 条记录,我更喜欢使用 SMOTE 而不是随机采样,代码
from sklearn.model_selection import train_test_split
from imblearn.over_sampling import SMOTE
X_train, X_test, y_train, y_test = train_test_split(fewRecords['text'],
fewRecords['category'])
sm = SMOTE(random_state=12, ratio = 1.0)
x_train_res, y_train_res = sm.fit_sample(X_train, y_train)
Run Code Online (Sandbox Code Playgroud)
它不起作用,因为它无法生成示例合成文本,现在当我将其转换为矢量时
count_vect = CountVectorizer(analyzer='word', token_pattern=r'\w{1,}')
count_vect.fit(fewRecords['category'])
# transform the training and validation data using count vectorizer object
xtrain_count = count_vect.transform(X_train)
ytrain_train = count_vect.transform(y_train)
Run Code Online (Sandbox Code Playgroud)
当我想在分类后预测真实类别时,我不确定这是否是正确的方法以及如何将向量转换为真实文本
我使用过一个小数据集,并使用了 mlr 包的嵌套交叉验证。然而,插入符在测试不同模型方面有一些优势。所以,我想知道:是否有人对如何使用插入符实现嵌套交叉验证有任何好的建议(如果可能的话,还有一个例子)?非常感谢。
resampling ×10
python ×5
pandas ×4
dataframe ×2
r ×2
aac ×1
downsampling ×1
ffmpeg ×1
image ×1
imagemagick ×1
imblearn ×1
libavcodec ×1
libfaac ×1
matrix ×1
nested ×1
nlp ×1
python-2.7 ×1
python-3.x ×1
r-caret ×1
reindex ×1
sampling ×1
scikit-learn ×1
text ×1
time-series ×1
types ×1