Python 元组和列表操作(作为 scikit-learn 中 SVM 模型的输入)
Python Tuple & List Manipulation (As an input to the SVM model in scikit-learn)
我有一个如下所示的列表:
[[(0, 0.17), (7, 0.87), (84, 0.04)]
[(0, 0.11), (3, 0.01)]
[(33, 0.56), (81, 0.22), (96, 0.04), (99, 0.97)]
...
...]
每个元组的形式都是(index, weight),其中index的范围是0到99,weight的取值范围是(0, 1)。
我想做的是用0权重填充每个列表缺失的索引,并删除索引:
原文:
[(0, 0.17), (7, 0.87), (84, 0.04)]
转换:
[0.17, 0, 0, 0, 0, 0, 0, 0.87, ..., 0.04, ..., 0]
有人知道任何简单的方法吗?
此外,这是将特征输入到 scikit-learn 中的 SVM 模型的最佳方式吗?
非常感谢!
使用 dict
s 和列表理解很容易做到这一点。
说你原来有
>>> orig = dict([(0, 0.17), (7, 0.87), (84, 0.04)])
列表的逻辑大小为 100。
随便做
>>> [0 if i not in orig else orig[i] for i in range(100)]
如果您打算进一步处理 sklearn
相关问题(例如 SVM),我建议您将其转换为 numpy.array
:
>>> w = np.array([0 if i not in orig else orig[i] for i in range(100)])
我有一个如下所示的列表:
[[(0, 0.17), (7, 0.87), (84, 0.04)]
[(0, 0.11), (3, 0.01)]
[(33, 0.56), (81, 0.22), (96, 0.04), (99, 0.97)]
...
...]
每个元组的形式都是(index, weight),其中index的范围是0到99,weight的取值范围是(0, 1)。
我想做的是用0权重填充每个列表缺失的索引,并删除索引:
原文:
[(0, 0.17), (7, 0.87), (84, 0.04)]
转换:
[0.17, 0, 0, 0, 0, 0, 0, 0.87, ..., 0.04, ..., 0]
有人知道任何简单的方法吗?
此外,这是将特征输入到 scikit-learn 中的 SVM 模型的最佳方式吗?
非常感谢!
使用 dict
s 和列表理解很容易做到这一点。
说你原来有
>>> orig = dict([(0, 0.17), (7, 0.87), (84, 0.04)])
列表的逻辑大小为 100。
随便做
>>> [0 if i not in orig else orig[i] for i in range(100)]
如果您打算进一步处理 sklearn
相关问题(例如 SVM),我建议您将其转换为 numpy.array
:
>>> w = np.array([0 if i not in orig else orig[i] for i in range(100)])