我写了以下代码:
from sklearn import tree
# Dataset & labels
# Using metric units
# features = [height, weight, style]
styles = ['modern', 'classic']
features = [[1.65, 65, 1],
[1.55, 50, 1],
[1.76, 64, 0],
[1.68, 77, 0] ]
labels = ['Yellow dress', 'Red dress', 'Blue dress', 'Green dress']
# Decision Tree
clf = tree.DecisionTreeClassifier()
clf = clf.fit(features, labels)
# Returns the dress
height = input('Height: ')
weight = input('Weight: ')
style = input('Modern [0] or Classic [1]: ')
print(clf.predict([[height,weight,style]]))
此代码接收用户的身高和体重,然后返回更适合她的衣服。有没有办法返回多个选项?例如,返回两个或多个衣服。
update
from sklearn import tree
import numpy as np
# Dataset & labels
# features = [height, weight, style]
# styles = ['modern', 'classic']
features = [[1.65, 65, 1],
[1.55, 50, 1],
[1.76, 64, 1],
[1.72, 68, 0],
[1.73, 68, 0],
[1.68, 77, 0]]
labels = ['Yellow dress',
'Red dress',
'Blue dress',
'Green dress',
'Purple dress',
'Orange dress']
# Decision Tree
clf = tree.DecisionTreeClassifier()
clf = clf.fit(features, labels)
# Returns the dress
height = input('Height: ')
weight = input('Weight: ')
style = input('Modern [0] or Classic [1]: ')
print(clf.predict_proba([[height,weight,style]]))
如果用户为17.2m和68kg,我想同时展示绿色和紫色连衣裙。这个示例只是返回绿色连衣裙的100%。
是的。实际上,您可以做的是您可以获得每个类的概率。有一个称为.predict_proba()
的函数,在某些分类器中实现。
请参阅此处,Sklearn的文档。
它将返回每个班级的样本成员的可能性。
然后您可以返回与两个,三个最高概率关联的标签。
predict()
将仅返回具有更高概率的类。如果您使用 predict_proba()
相反,它将返回一个具有每个类概率的数组,因此您可以选择以上一个阈值以上的数组。
这是该方法的文档。
您可以对此进行这样的操作:
probs = clf.predict_proba([[height, weight, style]])
threshold = 0.25 # change this accordingly
for index, prob in enumerate(probs[0]):
if prob > threshold:
print(styles[index])
您可以使用preadion_proba()方法来获取给定项目的每个类的概率。有关更多信息,请检查此信息" preadion_proba()":
http://scikit-learn.org/stable/modules/generated/sklearn.tree.decisiontreeclassifier.html
希望这会有所帮助..