Python 如果作为参数传递,机器学习模型会发生变化吗?

Python 如果作为参数传递,机器学习模型会发生变化吗?,python,machine-learning,scikit-learn,Python,Machine Learning,Scikit Learn,我正在用python创建一个机器学习算法。 假设我有: alg = DecisionTreeClassifier(random_state=1) 然后我创建一个函数拟合 def fit(X,Y,alg): alg.fit(X,Y) 我主要打电话给你 fit(X, Y, alg) Y_pred = alg.predict(X_test) 这样行吗?或者alg从未真正改变过外型 我已经读过这个问题,但它令人困惑,因为我不知道我的变量alg是如何更改的 谢谢您的帮助。是的,您传递给该函数的模

我正在用python创建一个机器学习算法。 假设我有:

alg = DecisionTreeClassifier(random_state=1)
然后我创建一个函数拟合

def fit(X,Y,alg):
  alg.fit(X,Y)
我主要打电话给你

fit(X, Y, alg)
Y_pred = alg.predict(X_test)
这样行吗?或者alg从未真正改变过外型

我已经读过这个问题,但它令人困惑,因为我不知道我的变量
alg
是如何更改的


谢谢您的帮助。

是的,您传递给该函数的模型对象是可变的,并且通过
fit
方法进行了变异。Python的评估策略是,因此更改将反映在调用者中

按共享调用(也称为按对象调用或按 对象共享(objectsharing)是由Barbara首先命名的一种评估策略 Liskov等人于1974年为CLU语言所用。[5]语言使用CLU 例如Python、[6]Iota、[7]Java(用于对象引用)、Ruby、, JavaScript、Scheme、OCaml、AppleScript和许多其他语言。但是, “共享呼叫”一词不常用;术语是 不同来源之间不一致。例如,在Java中 社区,他们说Java是按值调用的。共享呼叫 意味着语言中的值基于对象,而不是对象 基本类型,即所有值都是“装箱”的

通过共享调用的语义与通过引用调用的不同之处在于 函数中函数参数的赋值不可见 对于调用方(与引用语义不同)[需要引用],因此 e、 g.如果传递了变量,则无法模拟 调用方作用域中该变量的赋值。但是, 函数可以访问与调用者相同的对象(不允许复制) 如果这些对象是可变的,则在 调用方可以看到该函数,这可能看起来有所不同 来自按值调用语义。系统中可变对象的突变 函数对调用方可见,因为对象未被复制或删除 克隆-它是共享的


是的,您传递给该函数的模型对象是可变的,并通过
fit
方法进行变异。Python的评估策略是,因此更改将反映在调用者中

按共享调用(也称为按对象调用或按 对象共享(objectsharing)是由Barbara首先命名的一种评估策略 Liskov等人于1974年为CLU语言所用。[5]语言使用CLU 例如Python、[6]Iota、[7]Java(用于对象引用)、Ruby、, JavaScript、Scheme、OCaml、AppleScript和许多其他语言。但是, “共享呼叫”一词不常用;术语是 不同来源之间不一致。例如,在Java中 社区,他们说Java是按值调用的。共享呼叫 意味着语言中的值基于对象,而不是对象 基本类型,即所有值都是“装箱”的

通过共享调用的语义与通过引用调用的不同之处在于 函数中函数参数的赋值不可见 对于调用方(与引用语义不同)[需要引用],因此 e、 g.如果传递了变量,则无法模拟 调用方作用域中该变量的赋值。但是, 函数可以访问与调用者相同的对象(不允许复制) 如果这些对象是可变的,则在 调用方可以看到该函数,这可能看起来有所不同 来自按值调用语义。系统中可变对象的突变 函数对调用方可见,因为对象未被复制或删除 克隆-它是共享的