Python 精度分数(numpy.float64';对象不可调用)
我不知道如何解决这个问题,有人能解释一下吗? 我试图通过改变DecisionTreeClassifier的参数来获得循环中的最佳精度分数Python 精度分数(numpy.float64';对象不可调用),python,pandas,scikit-learn,decision-tree,Python,Pandas,Scikit Learn,Decision Tree,我不知道如何解决这个问题,有人能解释一下吗? 我试图通过改变DecisionTreeClassifier的参数来获得循环中的最佳精度分数 import pandas as pd from sklearn.tree import DecisionTreeClassifier from sklearn.metrics import precision_score from sklearn.model_selection import train_test_split df =
import pandas as pd
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import precision_score
from sklearn.model_selection import train_test_split
df = pd.read_csv('songs.csv')
X = df.drop(['song','artist','genre','lyrics'],axis=1)
y = df.artist
X_train,X_test,y_train,y_test = train_test_split(X,y)
scores_data = pd.DataFrame()
for depth in range(1,100):
clf = DecisionTreeClassifier(max_depth=depth,criterion='entropy').fit(X_train,y_train)
train_score = clf.score(X_train,y_train)
test_score = clf.score(X_test,y_test)
preds = clf.predict(X_test)
precision_score = precision_score(y_test,preds,average='micro')
temp_scores = pd.DataFrame({'depth':[depth],
'test_score':[test_score],
'train_score':[train_score],
'precision_score:':[precision_score]})
scores_data = scores_data.append(temp_scores)
这是我的错误:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-50-f4a4eaa48ce6> in <module>
17 test_score = clf.score(X_test,y_test)
18 preds = clf.predict(X_test)
---> 19 precision_score = precision_score(y_test,preds,average='micro')
20
21 temp_scores = pd.DataFrame({'depth':[depth],
**TypeError: 'numpy.float64' object is not callable**
---------------------------------------------------------------------------
TypeError回溯(最近一次调用上次)
在里面
17测试分数=clf分数(X测试、y测试)
18预测=clf.预测(X_检验)
--->19精密度得分=精密度得分(y检验,preds,平均值='micro')
20
21临时分数=pd.DataFrame({'depth':[depth],
**TypeError:“numpy.float64”对象不可调用**
这是数据集
您在周期中的最后几行:
precision_score = precision_score(y_test,preds,average='micro')
temp_scores = pd.DataFrame({'depth':[depth],
'test_score':[test_score],
'train_score':[train_score],
'precision_score:':[precision_score]})
scores_data = scores_data.append(temp_scores)
应改为:
precision_score_ = precision_score(y_test,preds,average='micro')
temp_scores = pd.DataFrame({'depth':[depth],
'test_score':[test_score],
'train_score':[train_score],
'precision_score:':[precision_score_]})
scores_data = scores_data.append(temp_scores)
您将
precision\u score
定义为numpy数组,然后将其作为函数调用(下一个周期)。可能是您可以检查y\u test
和preds
的结果?