在最新版的scikit-learn中,不仅修复了许多bug,还进行了一系列的性能提升,并引入了一些关键的新特性。以下是本次发布的一些主要功能的详细介绍。如需查看所有变更的详尽列表,请参考发布说明。
可以通过以下命令安装最新版本的scikit-learn:
pip install --upgrade scikit-learn
或者使用conda进行安装:
conda install -c conda-forgescikit-learn
scikit-learn的转换器现在支持通过set_output API输出Pandas DataFrame。以下是如何使用set_output API的示例:
import numpy as np
from sklearn.datasets import load_iris
from sklearn.preprocessing import StandardScaler, KBinsDiscretizer
from sklearn.compose import ColumnTransformer
X, y = load_iris(as_frame=True, return_X_y=True)
sepal_cols = ["sepal length (cm)", "sepal width (cm)"]
petal_cols = ["petal length (cm)", "petal width (cm)"]
preprocessor = ColumnTransformer([
("scaler", StandardScaler(), sepal_cols),
("kbin", KBinsDiscretizer(encode="ordinal"), petal_cols),
], verbose_feature_names_out=False).set_output(transform="pandas")
X_out = preprocessor.fit_transform(X)
print(X_out.sample(n=5, random_state=0))
HistGradientBoostingRegressor和HistGradientBoostingClassifier现在支持通过interaction_cst参数设置交互约束。以下是不允许特征之间交互的示例:
from sklearn.datasets import load_diabetes
from sklearn.ensemble import HistGradientBoostingRegressor
X, y = load_diabetes(return_X_y=True, as_frame=True)
hist_no_interact = HistGradientBoostingRegressor(
interaction_cst=[[i] for i in range(X.shape[1])], random_state=0
)
hist_no_interact.fit(X, y)
PredictionErrorDisplay提供了一种定性分析回归模型的方法。以下是如何使用PredictionErrorDisplay的示例:
import matplotlib.pyplot as plt
from sklearn.metrics import PredictionErrorDisplay
fig, axs = plt.subplots(nrows=1, ncols=2, figsize=(12, 5))
PredictionErrorDisplay.from_estimator(
hist_no_interact, X, y, kind="actual_vs_predicted", ax=axs[0]
)
PredictionErrorDisplay.from_estimator(
hist_no_interact, X, y, kind="residual_vs_predicted", ax=axs[1]
)
LearningCurveDisplay现在可以用来绘制learning_curve的结果。
PartialDependenceDisplay引入了一个新的参数categorical_features,用于使用条形图和热图显示分类特征的部分依赖性。
fetch_openml现在支持一个新的"pandas"解析器,它在内存和CPU效率上更高。在v1.4版本中,默认将更改为parser="auto",这将自动为密集数据使用"pandas"解析器,为稀疏数据使用"liac-arff"。
X, y = fetch_openml("titanic", version=1, as_frame=True, return_X_y=True, parser="pandas")
print(X.head())
LinearDiscriminantAnalysis添加了对Array API规范的实验性支持。这意味着估计器现在可以在任何符合Array API的库上运行,例如CuPy,这是一个GPU加速的数组库。
在1.1版本中,依赖于成对距离计算的许多估计器(基本上是与聚类、流形学习和邻居搜索算法相关的估计器)对于float64密集输入的效率得到了极大的提升,特别是在减少内存占用和在多核机器上更好的可扩展性方面。
在1.2版本中,这些估计器对于所有密集和稀疏输入的组合在float32和float64数据集上的效率进一步得到了提升,除了Euclidean和Squared Euclidean Distance度量中的稀疏-密集和密集-稀疏组合。
(0分钟6.168秒)