我有一组数据,描述了某些任务所需的级别。以下是一个列表示例:

请注意,数据值在0到10之间的比例。
我在这里的问题是,我有一批员工,他们的技能(分析、耐心、理解……)已经进行了分析,类似于以下员工:
如何根据员工的技能和每项任务所需的技能,将其与最佳任务相匹配,并找到匹配的百分比。
请注意,任务的数量要大得多(大约有1000个任务),有更多的需求已经在统计上找到了。
发布于 2018-06-15 15:00:04
你不需要机器学习来做这件事。
您可以将描述用户的向量减去任务的向量,并计算这些向量的大小。
最小幅值的向量将来自最匹配的任务。
发布于 2018-06-20 10:10:06
作为对我问题的后续,经过一些研究,我发现了在这个线程https://stackoverflow.com/questions/32446703/find-closest-vector-from-a-list-of-vectors-python上使用Python的编程方法。
它基本上描述了一种使用Python空间枕库的方法。方法相当简单,您输入一组向量,创建一个KDTree,最后使用输入向量查询树。但其中一个不便之处是:输入向量应与其他向量长度相同,因此需要进行一些预处理。
所用的代码是:
>>> from scipy import spatial
>>> A = [[0,1,2,3,4], [4,3,2,1,0], [2,5,3,7,1], [1,0,1,0,1]]
>>> tree = spatial.KDTree(A)
>>> tree.query([0.5,0.5,0.5,0.5,0.5]) (1.1180339887498949, 3)发布于 2018-09-18 16:36:07
根据Vincenzo Lavorini的回答,下面是查找与员工能力最接近的任务的python代码:
import numpy as np
# Let tt be list of tasks and ee be employee:
tt = [[0,1,2,3,4], [4,3,2,1,0], [2,5,3,7,1], [1,0,1,0,1]]
ee = [0.5,0.5,0.5,0.5,0.5]
# convert to numpy array:
tt = np.array(tt)
ee = np.array(ee)
# find difference between each task and employee:
res = tt - ee
print(res)输出:
[[-0.5 0.5 1.5 2.5 3.5]
[ 3.5 2.5 1.5 0.5 -0.5]
[ 1.5 4.5 2.5 6.5 0.5]
[ 0.5 -0.5 0.5 -0.5 0.5]]找出总差异:
res = [np.sum(x) for x in res]
print(res)输出:
[7.5, 7.5, 15.5, 0.5]使用numpy.argmin查找具有最小总差的任务的索引数:
print("Task number most suited for this employee:", np.argmin(res))输出:
Task number most suited for this employee: 3结果与scipy spatial代码的结果相同。
https://datascience.stackexchange.com/questions/33222
复制相似问题