我使用以下句子获得了一组特征向量:
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))
但它不起作用。有什么想法吗?
答案 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)
您还没有让我们知道变量包含的内容,或者您希望此表达式执行的操作。但可能是我的挣扎会帮助你弄清楚细节。
我鼓励您在交互式会话中逐个测试代码,就像我在这里一样。不要只写一个大表达,并希望它运行。逐个开发,并确保每个添加按预期工作。
要么编辑问题,要么期待更多的负面投票和/或关闭投票。