【问题标题】:Classifying variable length arrays in python在python中对可变长度数组进行分类
【发布时间】:2017-10-19 14:40:45
【问题描述】:

无论信号的特定部分是否正常(有心律失常),我都坚持对一组信号(ECG)的分类。所取的片段长度可变(这会影响分类),我无法做到这一点并得到以下错误:

ValueError: 使用序列设置数组元素。

我的训练集看起来像this;维度:2065 个具有可变数量元素的数组 输出如下:array(['N', 'N', 'N', ..., 'N', 'N', 'N'], dtype=object) 2065 long vector Y.shape=training_set.shape=2065 我正在使用 Multinomia 朴素贝叶斯进行分类:

from sklearn.naive_bayes import MultinomialNB
clf = MultinomialNB()
clf.fit(inp, Y)
MultinomialNB(alpha=1.0, class_prior=None, fit_prior=True)`

任何提示/建议将不胜感激

【问题讨论】:

  • 这些数据是否代表特定时间或间隔的信号?
  • 你能提供一个minimal reproducible example吗?
  • @VivekKumar ,数据是特定时间的

标签: python scikit-learn naivebayes multinomial


【解决方案1】:

X : {array-like, sparse matrix}, shape = [n_samples, n_features] 训练向量,其中 n_samples 为样本数,n_​​features 为特征数。

y : 类似数组,形状 = [n_samples] 目标值。

来源:sklearn.naive_bayes.MultinomialNB.fit

因此您必须将特征向量 (n_samples) 调整为固定长度 (n_features)。

【讨论】:

  • 这正是我想要的,我需要对变长特征进行分类,但我认为不可能,谢谢你的帮助!
  • 有一些方法可以将时间序列数据对齐到可比较的长度(例如Dynamic Time Warping)。此外,您可以将数据点的总和用作单个特征。
  • 是的,可以尝试动态时间扭曲,但是对数据点求和是没有用的,因为我需要根据单个信号对节拍进行分类
猜你喜欢
  • 1970-01-01
  • 2021-12-02
  • 1970-01-01
  • 1970-01-01
  • 2017-03-07
  • 1970-01-01
  • 1970-01-01
  • 2019-04-05
  • 2014-05-04
相关资源
最近更新 更多