Je suis très nouveau à Python. Je suis en train d'écrire une fonction qui fait ce qui suit, et réutiliser la fonction dans les prochaines parties du code: (ce que fait la fonction):Fonction ne retournant rien python
- trouver le cosineValue entre les éléments de deux listes
- add les valeurs à une liste et calcule la moyenne
- append les valeurs moyennes à une liste
- retour la liste des moyens
Je voudrais ensuite faire des calculs basés sur la liste tha t est renvoyé par la fonction ci-dessus. Cependant, la fonction (c'est-à-dire knearest_similarity (tfidf_datamatrix)) ne retourne rien. Les commandes d'impression de la seconde fonction (c'est-à-dire threshold_function()) ne montrent rien. Quelqu'un peut-il s'il vous plaît jeter un oeil sur le code et dites-moi ce que je fais mal.
def knearest_similarity(tfidf_datamatrix):
k_nearest_cosineMean = []
for datavector in tfidf_datamatrix:
cosineValueSet = []
for trainingvector in tfidf_vectorizer_trainingset:
cosineValue = cx(datavector, trainingvector)
cosineValueSet.append(cosineValue)
similarityMean_of_k_nearest_neighbours = np.mean(heapq.nlargest(k_nearest_neighbours, cosineValueSet)) #the cosine similarity score of top k nearest neighbours
k_nearest_cosineMean.append(similarityMean_of_k_nearest_neighbours)
print k_nearest_cosineMean
return k_nearest_cosineMean
def threshold_function():
mean_cosineScore_mean = np.mean(knearest_similarity(tfidf_matrix_testset))
std_cosineScore_mean = np.std(knearest_similarity(tfidf_matrix_testset))
threshold = mean_cosineScore_mean - (3*std_cosineScore_mean)
print "The Mean of the mean of cosine similarity score for a normal Behaviour:", mean_cosineScore_mean #The mean will be used for finding the threshold
print "The standard deviation of the mean of cosine similarity score:", std_cosineScore_mean #The standstart deviation is also used to find threshold
print "The threshold for normal behaviour should be (Mean - 3*standard deviation):", threshold
return threshold
EDIT
J'ai essayé de définir deux variables globales pour les fonctions à utiliser (à savoir tfidf_vectorizer_trainingset et tfidf_matrix_testset).
#fitting tfidf transfrom for training data
tfidf_vectorizer_trainingset = tfidf_vectorizer.fit_transform(readfile(trainingdataDir)).toarray()
#tfidf transform the test set based on the training set
tfidf_matrix_testset = tfidf_vectorizer.transform(readfile(testingdataDir)).toarray().
Cependant, les commandes d'impression dans threshold_function() apparaissent comme ci-dessous:
The Mean of the mean of cosine similarity score for a normal Behaviour: nan
The standard deviation of the mean of cosine similarity score: nan
The threshold for normal behaviour should be (Mean - 3*standard deviation): nan
EDIT2 J'ai trouvé que la première valeur dans la k_nearest_cosineMean était nan. Après avoir supprimé la valeur, j'ai réussi à obtenir des calculs valides.
Lorsque vous dites que "les commandes d'impression ... ne montrent rien", voulez-vous littéralement dire que rien n'est imprimé ou que ce qui est imprimé ne contient pas les chiffres que vous voulez? Il serait plus facile pour les autres de vous aider si vous pouviez fournir une [mcve] et des informations spécifiques sur ce que vous attendez de voir par rapport à ce que vous voyez réellement. –