我曾经认为自己理解lambda函数的工作原理,尽管我自己不使用它们。但是下面这个来自这篇教程的lambda函数完全让我困惑:
import matplotlib.pyplot as plt
import numpy as np
import sklearn
import sklearn.datasets
import sklearn.linear_model
import matplotlib
那很容易。更多内容:
# Generate a dataset and plot it
np.random.seed(0)
X, y = sklearn.datasets.make_moons(200, noise=0.20)
plt.scatter(X[:,0], X[:,1], s=40, c=y, cmap=plt.cm.Spectral)
clf = sklearn.linear_model.LogisticRegressionCV()
clf.fit(X, y)
# Helper function to plot a decision boundary.
# If you don't fully understand this function don't worry, it just generates the contour plot below.
def plot_decision_boundary(pred_func):
# Set min and max values and give it some padding
x_min, x_max = X[:, 0].min() - .5, X[:, 0].max() + .5
y_min, y_max = X[:, 1].min() - .5, X[:, 1].max() + .5
h = 0.01
# Generate a grid of points with distance h between them
xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h))
# Predict the function value for the whole gid
Z = pred_func(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)
# Plot the contour and training examples
plt.contourf(xx, yy, Z, cmap=plt.cm.Spectral)
plt.scatter(X[:, 0], X[:, 1], c=y, cmap=plt.cm.Spectral)
现在有一句话我不太理解:
plot_decision_boundary(lambda x: clf.predict(x))
我已经多次阅读有关lambda的工作原理,但我仍然不明白这里的x
如何传递之前正确的值。x
如何映射到相关的值?
x
参数还是plot_decision_boundary
中的X
?lambda函数不是必需的。它的x
参数只是将它调用时的参数转发给它所调用的函数。而X
是一个全局变量,在函数中可见。 - tdelaney