创建网站需要什么技术,长沙app下载,武当王也高清壁纸,下载安装注册app本教程是ML系列的一部分。 在此步骤中#xff0c;您将学习如何创建和解释部分依赖图#xff0c;这是从模型中提取洞察力的最有价值的方法之一。
What Are Partial Dependence Plots 有人抱怨机器学习模型是黑盒子。这些人会争辩说我们无法看到这些模型如何处理任何给定的数据…本教程是ML系列的一部分。 在此步骤中您将学习如何创建和解释部分依赖图这是从模型中提取洞察力的最有价值的方法之一。
What Are Partial Dependence Plots 有人抱怨机器学习模型是黑盒子。这些人会争辩说我们无法看到这些模型如何处理任何给定的数据集因此我们既不能提取洞察力也不能确定模型的问题。 总的来说提出这种说法的人不熟悉部分依赖图。部分依赖图显示每个变量或预测变量如何影响模型的预测。这对于以下问题很有用 男女之间的工资差异有多少仅仅取决于性别而不是教育背景或工作经历的差异 控制房屋特征经度和纬度对房价有何影响为了重申这一点我们想要了解在不同区域如何定价同样大小的房屋即使 实际上这些地区的房屋大小不同。 由于饮食差异或其他因素两组之间是否存在健康差异
如果您熟悉线性或逻辑回归模型则可以与这些模型中的系数类似地对部分依赖图进行解释。但是部分依赖图可以从数据中捕获更复杂的模式并且可以与任何模型一起使用。如果您不熟悉线性或逻辑回归请不要接受这种比较。 我们将在下面展示几个示例解释它们的含义然后讨论代码。
Interpreting Partial Dependence Plots
我们将从2个部分依赖图开始显示Price和来自Melbourne Housing数据集的几个变量之间的关系根据我们的模型。 我们将介绍如何创建和解释这些图。
【1】
import pandas as pd
from sklearn.ensemble import GradientBoostingRegressor, GradientBoostingClassifier
from sklearn.ensemble.partial_dependence import partial_dependence, plot_partial_dependence
from sklearn.preprocessing import Imputercols_to_use [Distance, Landsize, BuildingArea]def get_some_data():data pd.read_csv(../input/melbourne-housing-snapshot/melb_data.csv)y data.PriceX data[cols_to_use]my_imputer Imputer()imputed_X my_imputer.fit_transform(X)return imputed_X, yX, y get_some_data()
my_model GradientBoostingRegressor()
my_model.fit(X, y)
my_plots plot_partial_dependence(my_model, features[0,2], XX, feature_namescols_to_use, grid_resolution10) 左图显示了我们的目标销售价格和距离变量之间的部分依赖关系。此数据集中的距离测量墨尔本中央商务区的距离。仅在模型拟合后才计算部分依赖图。该模型适用于实际数据。在那些真实的数据中城镇不同地区的房屋可能有多种不同的方式不同的年龄大小等。但是在模型拟合之后我们可以从一个房屋的所有特征开始。比如一间有2间卧室2间浴室10岁的房子等等。 然后我们使用该模型来预测该房屋的价格但我们在进行预测之前更改距离变量。我们首先预测距离为4时房屋的价格。然后我们预测设定距离为5的价格。然后再次预测距离为6的价格。依此类推。当我们从小的距离值在水平轴上移动时我们会追踪预测价格如何变化在垂直轴上。 在本说明中我们只使用了一个房子。但由于相互作用单个房屋的部分依赖图可能是非典型的。所以我们用多个房子重复那个实验然后我们在垂直轴上绘制平均预测价格。你会看到一些负数。这并不意味着会以负价出售。相反它意味着价格将低于该距离的实际平均价格。 在左图中我们看到房价下跌因为我们进一步从中央商务分散注意力。虽然大约16公里外似乎有一个不错的郊区但房价高于许多更近的郊区。 右图显示了建筑面积的影响其解释类似。较大的建筑面积意味着更高的价格。 这些图既可用于提取洞察力也可用于检查模型是否正在学习您认为合理的内容。
Code
我们不关注加载数据的代码相反关注绘图的代码
【2】
def get_some_data():cols_to_use [Distance, Landsize, BuildingArea]data pd.read_csv(../input/melbourne-housing-snapshot/melb_data.csv)y data.PriceX data[cols_to_use]my_imputer Imputer()imputed_X my_imputer.fit_transform(X)return imputed_X, y
【3】
from sklearn.ensemble.partial_dependence import partial_dependence, plot_partial_dependence# get_some_data is defined in hidden cell above.
X, y get_some_data()
# scikit-learn originally implemented partial dependence plots only for Gradient Boosting models
# this was due to an implementation detail, and a future release will support all model types.
my_model GradientBoostingRegressor()
# fit the model as usual
my_model.fit(X, y)
# Here we make the plot
my_plots plot_partial_dependence(my_model, features[0, 2], # column numbers of plots we want to showXX, # raw predictors data.feature_names[Distance, Landsize, BuildingArea], # labels on graphsgrid_resolution10) # number of values to plot on x axis 一些与plot_partial_dependence有关的提示 这些要素是您希望绘制的X数组或数据框中的列号。这开始看起来比2或3个变量更糟糕。您可以一次重复调用绘图2或3。 可以选择确定水平轴上的哪些点。最简单的是grid_resolution我们用它来确定绘制了多少个不同的点。随着该值的增加这些图形看起来呈锯齿状因为您将在模型中拾取大量随机性或噪声。最好不要在字面上采用小的或锯齿状的波动。 grid_resolution的较小值使这一点平滑。对于具有多行的数据集来说这也是一个问题。 有一个叫做partial_dependence的函数来获取构成这个图的原始数据而不是制作视觉图。如果您想使用Seaborn等绘图包控制它的可视化方式这非常有用。通过适度的努力您可以制作更好看的图。
Another Examples
以下是泰坦尼克号数据中非常简单的模型的部分图。
[4]
titanic_data pd.read_csv(../input/titanic/train.csv)
titanic_y titanic_data.Survived
clf GradientBoostingClassifier()
titanic_X_colns [PassengerId,Age, Fare,]
titanic_X titanic_data[titanic_X_colns]
my_imputer Imputer()
imputed_titanic_X my_imputer.fit_transform(titanic_X)clf.fit(imputed_titanic_X, titanic_y)
titanic_plots plot_partial_dependence(clf, features[1,2], Ximputed_titanic_X, feature_namestitanic_X_colns, grid_resolution8) 乍一看这些看起来可能令人惊讶。 但他们展示了一些有趣的见解 年轻人生存几率大。 这与历史叙述一致他们首先让女性和儿童脱离了泰坦尼克号。 支付更多的人有更好的生存几率。 事实证明更高的票价让你有一个更接近船顶的小屋并且可能给你更好的获得救生艇的几率。
Conclusion
部分依赖图是从复杂模型中提取洞察力的好方法尽管不是唯一的方法。这些可以非常强大可以将这些见解传达给同事或非技术用户。 当这些图来自非实验数据时对于如何解释这些图有各种各样的观点。有些人声称除非来自实验否则你不能对数据的因果关系做任何结论。其他人对从非实验数据也称为观察数据可以学到的东西更加积极。这是数据科学领域的一个分歧主题超出了本教程的范围。 但大多数人都同意这些对于理解您的模型很有用。此外鉴于大多数真实世界数据源的混乱您的模型捕获真实模式也是一个很好的理智检查。 partial_dependence_plot函数是获取这些图的简单方法尽管结果在视觉上并不美观。 partial_dependence函数为您提供原始数据以防您想要制作演示质量图表。
Your Turn
在项目中选择三个预测变量。 制定关于部分依赖图将是什么样的。 创建绘图并根据您的假设检查结果。