Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 精度分数(numpy.float64';对象不可调用)_Python_Pandas_Scikit Learn_Decision Tree - Fatal编程技术网

Python 精度分数(numpy.float64';对象不可调用)

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 =

我不知道如何解决这个问题,有人能解释一下吗?

我试图通过改变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 = 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
的结果?