尝试将值附加到numpy矢量要素数组中

时间:2016-06-11 21:37:23

标签: python numpy dictionary logistic-regression

我使用以下句子获得了一组特征向量:

with open(sys.argv[1]) as trainingSentences:
    sentence2region2value = json.loads(trainingSentences.read())

train_wordlist = []

for sentence,locations in sentence2region2value.iteritems():
      train_wordlist.append(" ".join(sentence_to_words(sentence, True)))

vectorizer = CountVectorizer(analyzer = "word",   \
                             tokenizer = None,    \
                             preprocessor = None, \
                             stop_words = None,   \
                             max_features = 5000)

train_data_features = vectorizer.fit_transform(train_wordlist)

train_data_features = train_data_features.toarray()

我还要为所有这些492特征向量添加标签以进行逻辑回归。此“预测”标签包含在sentence2region2value字典中:

{sentence: Y
   {parsedsentence: Z
        {prediction: X,
             location-values:{"Qatar": [32,221,31]},{"Dubai": [12,123,421]},.....}

目前我正在尝试使用它:

for prediction in sentence2region2value["sentence"]["parsedsentence"].iteritems():
      for i in train_data_features:
            train_data_features[i] = np.append(train_data_features[i],np.array(prediction))

但它不起作用。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

你的问题表达式不是很易读,我不得不猜测一些变量是什么样的,但我会对它发表评论:

for prediction in sentence2region2value["sentence"]["parsedsentence"].iteritems():

因此prediction将是该字典中的一对值(key, value)。我猜它会像("Qatar", [32,221,31])那样,但我不确定你是否在这个dictinary中工作了。

      for i in train_data_features:

train_data_features是一个数组(来自前一个toarray()表达式),但我不知道它包含什么(shape和dtype?)。我猜字符串,也许只是对象(指向对象的指针,如列表)。

在任何情况下,i都是其中一个元素。但那么为什么train_data_features[i]呢?只有i是一个数字for i in range(train_data_features.shape[0]):

的结果才有意义

让我们假设i真的是什么,所以train_data_features[i]实际上是该数组的一个元素。

            train_data_features[i] = np.append(train_data_features[i], np.array(prediction))

如果该元素本身就是一个数组,则此np.append将起作用。

np.array(prediction)看起来像什么?

这可能有效:

y = np.array(('quatar',[1,2,3]),dtype = object)

如果train_data_features[i]相似,那么追加会做类似

的事情
In [220]: x
Out[220]: array(['quatar', [1, 2, 3]], dtype=object)

In [221]: x=np.append(x,y)

In [222]: x
Out[222]: array(['quatar', [1, 2, 3], 'quatar', [1, 2, 3]], dtype=object)

In [223]: x=np.append(x,y)

In [224]: x
Out[224]: array(['quatar', [1, 2, 3], 'quatar', [1, 2, 3], 'quatar', [1, 2, 3]], dtype=object)

您还没有让我们知道变量包含的内容,或者您​​希望此表达式执行的操作。但可能是我的挣扎会帮助你弄清楚细节。

我鼓励您在交互式会话中逐个测试代码,就像我在这里一样。不要只写一个大表达,并希望它运行。逐个开发,并确保每个添加按预期工作。

要么编辑问题,要么期待更多的负面投票和/或关闭投票。