Sklearn用户输入的两个列表Python的准确度得分(始终为0%)

2024-09-30 01:20:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个具有两种类型值的列表(int值在名为projekti的列表中,字符串值在vreme中)。 我想做一个程序,根据用户输入预测字符串值。用户输入是int值。我还要检查预测的准确性。 程序给我一个错误,也总是给我0%的准确率,无论用户输入什么。 我做错什么了?在

from sklearn import tree
from sklearn.metrics import accuracy_score

projekti=[[1000], [1300], [1400], [1100], [1200], [1100], [1500]] #velicina objekta, broj nivoa, vreme

vreme=[1, 0, 0, 1, 1, 1, 0] #uspesnost vremena

clf=tree.DecisionTreeClassifier()
clf=clf.fit(projekti,vreme)

unos=input("unesi velicinu: ")
List1=[]

List1.append([unos])

prediction=clf.predict(List1)

accuracy=accuracy_score(List1, prediction)
print(prediction[0]," ", accuracy*100,"%")

Tags: 字符串用户fromimport程序tree列表sklearn
1条回答
网友
1楼 · 发布于 2024-09-30 01:20:19

您的prediction被输出为["no"]或{}的单个元素列表,因此,当您调用accuracy = accuracy_score(List1, prediction)时,您将比较一个包含字符串值(str)的列表与一个整数值(int),该值始终为0。在

这对我有用:

from sklearn import tree
from sklearn.metrics import accuracy_score
import numpy as np

projekti = [1000, 1300, 1400, 1100, 1200, 1100, 900]
vreme = [1, 0, 0, 1, 1, 1, 0]

clf = tree.DecisionTreeClassifier()
clf = clf.fit([[i] for i in projekti],vreme)

valuetotest = [900]
expectedresult = 0

prediction = clf.predict([valuetotest])
print(prediction)

accuracy=accuracy_score([expectedresult], prediction)
print(accuracy*100," %")

给出:

^{pr2}$

要测试多个数据点:

from sklearn import tree
from sklearn.metrics import accuracy_score
import numpy as np

projekti = [1000, 1300, 1400, 1100, 1200, 1100, 900]
vreme = [1, 0, 0, 1, 1, 1, 0]

clf = tree.DecisionTreeClassifier()
clf = clf.fit([[i] for i in projekti],vreme)

valuetotest = [900, 1100, 1500, 2200]
expectedresult = [0, 1, 0, 0]

prediction = clf.predict([[i] for i in valuetotest])
print(prediction)

accuracy=accuracy_score([[i] for i in expectedresult], prediction)
print(accuracy*100," %")

给出:

[0 1 0 0]
100.0  %

相关问题 更多 >

    热门问题