快生活 - 生活常识大全

学习版的大新功能


  scikit-learn的5大新功能
  鸣叫
  分享4
  Python的主要功能机器学习库的最新版本包括许多新功能和错误修复。你可以从Scikit-learn官方0.22发行要点中找到有关这些更改的完整说明。
  通过pip完成安装更新:
  pipinstall --upgrade scikit-learn
  或conda:
  condainstall scikit-learn
  最新的Scikit-learn中有5个新功能值得你注意。
  1.新的绘图API
  新的绘图API可用,无需重新计算即可正常工作。支持的图包括一些相关图,混淆矩阵和ROC曲线。下面是Scikit-learn用户指南中的示例,对API进行了演示:
  from sklearn.model_selection import train_test_split
  from sklearn.svm import SVC
  from sklearn.metrics import plot_roc_curve
  from sklearn.datasets import load_wine
  X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42)
  svc = SVC(random_state=42)
  1/6
  svc.fit(X_train, y_train)
  svc_disp = plot_roc_curve(svc, X_test, y_test)
  请注意,绘制是通过最后一行代码完成的。
  2.堆叠概括
  Scikit-learn已经集成了用于减少估计量偏差的整体学习技术。StackingClassifier和StackingRegressor是启用估算器堆叠的模块,并使用final_estimator这些堆叠的估算器预测作为其输入。请参阅用户指南中的示例,使用以下定义为的回归估计量estimators和梯度增强回归最终估计量:
  from sklearn.linear_model import RidgeCV, LassoCV
  from sklearn.svm import SVR
  from sklearn.ensemble import GradientBoostingRegressor
  from sklearn.ensemble import StackingRegressor
  2/6
  from sklearn.datasets import load_boston
  from sklearn.model_selection import train_test_split
  estimators = [("ridge", RidgeCV()),
  ("lasso", LassoCV(random_state=42)),
  ("svr", SVR(C=1, gamma=1e-6))]
  reg = StackingRegressor(
  estimators=estimators,
  final_estimator=GradientBoostingRegressor(random_state=42))
  X, y = load_boston(return_X_y=True)
  X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42)
  reg.fit(X_train, y_train)
  StackingRegressor(...)
  3.任何估计器特征的重要性
  现在,任何适合的Scikit-learn估计器都可以使用基于置换的重要性特征。从用户指南中描述如何计算功能的排列重要性:
  特征排列重要性计算方式如下:首先,在X定义的数据集上评估通过评分定义的基线度量。接着,对验证集中的要素列进行置换,并再次评估度量。排列重要性定义为基线度量和来自特征列度量之间的差异。
  3/6
  发行说明中的完整示例:
  from sklearn.ensemble import RandomForestClassifier
  from sklearn.inspection import permutation_importance
  X, y = make_classification(random_state=0, n_features=5, n_informative=3)
  rf = RandomForestClassifier(random_state=0).fit(X, y)
  result = permutation_importance(rf, X, y, n_repeats=10, random_state=0, n_jobs=-1)
  fig, ax = plt.subplots()
  sorted_idx = result.importances_mean.argsort()
  ax.boxplot(result.importances[sorted_idx].T, vert=False, labels=range(X.shape[1]))
  ax.set_title("Permutation Importance of each feature")
  ax.set_ylabel("Features")
  fig.tight_layout()
  plt.show()
  4/6
  4.梯度提升缺失价值支持
  梯度提升分类器和回归器现在都已经具备了处理缺失值的能力,从而消除了手动插补的需要。以下是遗漏的方式:
  在训练过程中,树木种植者会根据潜在的收益,在每个分割点上了解缺失值的样本应归子级左还是右子级。进行预测时,因此将具有缺失值的样本分配给左或右的子级。如果在训练过程中没有遇到给定特征的缺失值,则将具有缺失值的样本映射到样本最多的那一方。
  以下示例演示:
  from sklearn.experimental import enable_hist_gradient_boosting
  # noqa
  from sklearn.ensemble import HistGradientBoostingClassifier
  import numpy as np
  X = np.array([0, 1, 2, np.nan]).reshape(-1, 1)
  5/6
网站目录投稿:幻玉