Python 如何修复以下错误?属性错误:';ID3DecisionTreeClassifer&x27;对象没有属性'_ID3DecisionTreeClassifer_uu-fit';
我收到以下错误:AttributeError:'ID3DDecisionTreeClassifer'对象没有属性'\u ID3DDecisionTreeClassifer\u' 我的成绩一定很好 0 一, 0 0 一, 一, 一, 但是我得到了一个错误。我正在尝试构建一个决策树API。我已经实现了一个_遍历方法,它将递归遍历make_树函数生成的决策树字典Python 如何修复以下错误?属性错误:';ID3DecisionTreeClassifer&x27;对象没有属性'_ID3DecisionTreeClassifer_uu-fit';,python,jupyter-notebook,data-science,Python,Jupyter Notebook,Data Science,我收到以下错误:AttributeError:'ID3DDecisionTreeClassifer'对象没有属性'\u ID3DDecisionTreeClassifer\u' 我的成绩一定很好 0 一, 0 0 一, 一, 一, 但是我得到了一个错误。我正在尝试构建一个决策树API。我已经实现了一个_遍历方法,它将递归遍历make_树函数生成的决策树字典 class ID3DecisionTreeClassifer(object): def __init__(self):
class ID3DecisionTreeClassifer(object):
def __init__(self):
pass
def fit(self, X, y):
self.splits_ = make_tree(X,y)# YOUR CODE to generate the decision tree
dictionary
def _majority_vote(self, label_array):
counter = counter(lable_array)
max_vote = max(counter.values())
counter = {v:k for k, v in counter.items()}
return counter[max_vote]# YOUR CODE
def _traverse(self, x, d):
if isinstance(d, np.ndarray):
return d
for key in d:
name, value = key.split(' = ')
feature_idx = int(name.split('_')[-1])
value = int(value)
if x[feature_idx] == value:
return self._traverse(x, d[key])
def predict(self, x):
label_array = self._traverse(x,self.__fit) # YOUR CODE to get class
labels from the
target node
return self._majority_vote(label_array)#YOUR CODE to predict the class
label via
majority voting
#from label_array
# DO NOT EDIT OR DELETE BELOW CELL
tree = ID3DecisionTreeClassifer()
tree.fit(X, y)
print(tree.predict(np.array([0, 0])))
print(tree.predict(np.array([0, 1])))
print(tree.predict(np.array([1, 0])))
print(tree.predict(np.array([1, 0])))
print(tree.predict(np.array([1, 1])))
print(tree.predict(np.array([2, 0])))
print(tree.predict(np.array([2, 1])))
这看起来像是一个缩进问题。当我以适当的缩进运行代码时,我可以调用fit()函数
class ID3DecisionTreeClassifer(object):
def __init__(self):
pass
def fit(self, X, y):
self.splits_ = make_tree(X,y)# YOUR CODE to generate the decision tree
dictionary
def _majority_vote(self, label_array):
counter = counter(lable_array)
max_vote = max(counter.values())
counter = {v:k for k, v in counter.items()}
return counter[max_vote]# YOUR CODE
def _traverse(self, x, d):
if isinstance(d, np.ndarray):
return d
for key in d:
name, value = key.split(' = ')
feature_idx = int(name.split('_')[-1])
value = int(value)
if x[feature_idx] == value:
return self._traverse(x, d[key])
def predict(self, x):
label_array = self._traverse(x,self.__fit) # YOUR CODE to get class
labels from the
target node
return self._majority_vote(label_array)#YOUR CODE to predict the class
label via
majority voting
#from label_array
# DO NOT EDIT OR DELETE BELOW CELL
tree = ID3DecisionTreeClassifer()
tree.fit(X, y)
print(tree.predict(np.array([0, 0])))
print(tree.predict(np.array([0, 1])))
print(tree.predict(np.array([1, 0])))
print(tree.predict(np.array([1, 0])))
print(tree.predict(np.array([1, 1])))
print(tree.predict(np.array([2, 0])))
print(tree.predict(np.array([2, 1])))
由于fit()是ID3DecisionTreeClassifer类的函数,缩进应该如下所示:
class ID3DecisionTreeClassifer(object):
def __init__(self):
pass
def fit(self, X, y):
self.splits_ = make_tree(X,y)
def _majority_vote(self, label_array):
...
我的缩进id在代码中是正确的。你能得到以下结果吗?1 0 0 1 1 1