小编Dum*_*imp的帖子

实现递归 Void 函数(查找二叉搜索树的高度)

我需要实现一个 void 函数来计算二叉树中每个节点的高度并将其存储在每个节点中。我在网上找到了一些本质上是递归的解决方案,但它们返回 int。示例包括(https://www.geeksforgeeks.org/write-ac-program-to-find-the-maximum-depth-or-height-of-a-tree/)。除了它不是空函数之外,模型答案之间的区别在于它也不存储每个节点中的高度。

这是我对解决方案的尝试,但我似乎无法使代码正常工作,也无法重新调整模型答案以递归地应用于 void 函数。当我在帮助程序代码中运行我的代码进行测试时,它甚至不显示任何输出。

void computeHeight(Node *n) {
  Node* ltraverser = n;
  Node* rtraverser = n;
  int lheight = 0;
  int rheight =0;

  if (n == NULL) {
   n->height = 0;
  }

  while (ltraverser->left != NULL) {
   ltraverser = ltraverser->left;
   lheight += 1;
  }

  while (rtraverser->right != NULL) {
   rtraverser = rtraverser->right;
   lheight += 1;
  }

  if (lheight > rheight) {
    n->height = lheight;
  }

  else {
    n->height = rheight;
  }

  computeHeight(n->left);
  computeHeight(n->right);
}
Run Code Online (Sandbox Code Playgroud)

以供参考: …

c++ algorithm recursion data-structures

4
推荐指数
1
解决办法
1721
查看次数

试图理解 Python 包装器

对于下面的功能,我试图理解

一世。为什么wrapper.count = 0在包装函数下面初始化?为什么不在 def counter(func) 下初始化?为什么wrapper.count 没有将其重置wrapper.count为0,因为它在wrapper 函数下方运行?

我试图了解什么是wrapper.count?为什么不初始化一个普通变量count而不是wrapper.count

def counter(func):
  def wrapper(*args, **kwargs):
    wrapper.count += 1
    # Call the function being decorated and return the result
    return func
  wrapper.count = 0
  # Return the new decorated function
  return wrapper

# Decorate foo() with the counter() decorator
@counter
def foo():
  print('calling foo()')
Run Code Online (Sandbox Code Playgroud)

python function decorator wrapper

3
推荐指数
1
解决办法
563
查看次数

AttributeError: 'LinearRegression' 对象没有属性 'predict_proba'

我需要有关学校评分员生成的属性错误的帮助。

我的任务:我需要创建一个自定义转换器以输入到分级器中。

评分者将字典列表传递给我的估算器的 predict 或 predict_proba 方法,而不是 DataFrame。这意味着模型必须同时使用这两种数据类型。出于这个原因,我需要提供一个自定义的 ColumnSelectTransformer 来代替 scikit-learn 自己的 ColumnTransformer。

这是我的自定义转换器代码,旨在在提供的列中估算空值。

from sklearn.impute import SimpleImputer

simple_cols = ['BEDCERT', 'RESTOT', 'INHOSP', 'CCRC_FACIL', 'SFF', 'CHOW_LAST_12MOS', 'SPRINKLER_STATUS', 'EXP_TOTAL', 'ADJ_TOTAL']

class ColumnSelectTransformer(BaseEstimator, TransformerMixin):
    def __init__(self, columns):
        self.columns = columns

    def fit(self, X, y=None):
        return self

    def transform(self, X):
        if not isinstance(X, pd.DataFrame):
            X = pd.DataFrame(X)
        return X[self.columns].values

simple_features = Pipeline([
    ('cst', ColumnSelectTransformer(simple_cols)),
    ('imputer', SimpleImputer(strategy='mean')),
])

Run Code Online (Sandbox Code Playgroud)

然后我的任务是创建一个新管道并使用估算器进行拟合,下面是我的尝试。

from sklearn.linear_model import LinearRegression

simple_features_model = Pipeline([
    ('simple', simple_features),
    ('linear', LinearRegression()),
])

simple_features_model.fit(data, fine_counts > …
Run Code Online (Sandbox Code Playgroud)

python machine-learning scikit-learn

1
推荐指数
1
解决办法
5168
查看次数