我有一堆包含两列的数据:给定对象的标签,以及该对象的颜色(包含[R,G,B]的列表)的值。有没有一种有效的方法来使功能告诉我与用户输入的颜色最相似的对象?这似乎是KNN的候选人。
我该如何在Python中做到这一点,最好使用SciKit?我有大约10,000个观测值,有什么可以做得更有效地实现KNN的呢?
import pandas as pd
data = {
"Object": ["A", "B", "C", "A"],
"Color": [[100, 120, 120], [50, 75, 50], [60, 70, 100], [90, 150, 200]]
}
df = pd.DataFrame(data)
candidate = [50, 40, 90]
def nearest_match(df, candidate):
# something
return nearest_match
答案 0 :(得分:1)
X = [[100, 120, 120], [50, 75, 50], [60, 70, 100], [90, 150, 200]]
y = ["A", "B", "C", "A"]
from sklearn.neighbors import KNeighborsClassifier
neigh = KNeighborsClassifier(n_neighbors=4)
neigh.fit(X, y)
print(neigh.predict([[100, 100, 100]]))
要使其性能更好,您可以选择要用于距离的度量。另外,选择您要使用的算法。
您还可以使用此tutorial从头开始实施它。也许开箱即用的库最好使用,因为它们已经过优化。
如果在C语言中实现是一种选择,则可以采用该方法。或使用实施中的Cythonsing部分。
P.s。也许有必要微调邻居的数量。