Python w/余弦相似性预测 @staticmethod def dot(v1,花朵): dot_prod=0 i=0 正如一位评论者所提到的,我想你肯定应该看看numpy和scipy,它们使许多数学运算——特别是涉及矩阵和向量的运算——变得更加容易

Python w/余弦相似性预测 @staticmethod def dot(v1,花朵): dot_prod=0 i=0 正如一位评论者所提到的,我想你肯定应该看看numpy和scipy,它们使许多数学运算——特别是涉及矩阵和向量的运算——变得更加容易,python,Python,余弦距离是直接的,这将大大简化您的代码: @staticmethod def dot(v1,flower): dot_prod = 0 i = 0 while i<4: dot_prod+=float(v1[i])*float(flower[i]) i+=1 return dot_prod @staticmethod def norm(vec): return math.sqrt(iris.dot(vec,vec))

余弦距离是直接的,这将大大简化您的代码:

@staticmethod
def dot(v1,flower):
    dot_prod = 0
    i = 0
    while i<4:
        dot_prod+=float(v1[i])*float(flower[i])
        i+=1
    return dot_prod
@staticmethod
def norm(vec):
    return math.sqrt(iris.dot(vec,vec))

@staticmethod
def sim_score(v1,v2):
    score = iris.dot(v1,v2) / (iris.norm(v1)*iris.norm(v2))
    return score
加载存储在文件中的数据取决于文件格式。存储数据的一种常见方式是在csv文件中,其中每行包含一个条目(在您的示例中是一朵花),其值用逗号分隔。如果您有一个名为
flowers.csv
的文件,您可以将其加载到一个numpy数组中,如下所示:

from scipy.spatial.distance import cosine
score = cosine(v1, v2)
然后,如果用户提供了一个我们称之为
user\u flower
的输入,我们可以使用scipy函数
cosine
获得它与
flower\u数据中每个花之间的余弦距离,如上所述:

import csv
import numpy as np

# open the csv file to read the data
with open('flowers.csv') as flower_file:

    # create a reader that will read the file line by line
    # and split each line at the commas while reading
    flower_reader = csv.reader(flower_file)

    # map list of string values in each line to floats, 
    # and package the whole thing in a numpy array
    flower_data = np.array([map(float, line) for line in flower_reader])

最相似的花的数目最少。

你的问题是什么?什么是flower?你的问题中似乎没有问题。另外,对于这类代码,我强烈建议你看看NumPy。我正在尝试将文件中的数据与用户输入进行比较,并找到具有最高余弦相似性分数的虹膜
distances = [cosine(user_flower, f) for f in flower_data]