July 2025
Intermediate to advanced
320 pages
3h 10m
Chinese
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
有许多技术可以将特征分解成更小的子集。这对于探索性数据分析、可视化、制作预测模型或聚类都很有用。
在本章中,我们将使用各种技术探索泰坦尼克号数据集。我们将研究 PCA、UMAP、t-SNE 和 PHATE。
以下是数据:
>>>ti_df=tweak_titanic(orig_df)>>>std_cols="pclass,age,sibsp,fare".split(",")>>>X_train,X_test,y_train,y_test=get_train_test_X_y(...ti_df,"survived",std_cols=std_cols...)>>>X=pd.concat([X_train,X_test])>>>y=pd.concat([y_train,y_test])
主成分分析(PCA)需要一个由行(样本)和列(特征)组成的矩阵(X)。PCA 会返回一个新矩阵,其列是原始列的线性组合。这些线性组合能使方差最大化。
每一列都与其他列正交(成直角)。列按方差递减的顺序排序。
Scikit-learn 已实现了这一模型。在运行算法之前,最好先将数据标准化。调用.fit 方法后,您将可以访问一个 .explained_variance_ratio_属性,该属性列出了每一列的方差百分比。
PCA 对于可视化二维(或三维)数据非常有用。它还可以作为预处理步骤,过滤掉数据中的随机噪音。它适合查找全局结构,但不适合查找局部结构,而且对线性数据效果很好。
在本例中,我们将对泰坦尼克号的特征运行 PCA。PCA 类是 scikit-learn 中的一个转换器;先调用.fit 方法教它如何获取主成分,然后调用.transform 将矩阵转换为主成分矩阵:
>>>fromsklearn.decompositionimportPCA>>>fromsklearn.preprocessingimport(...StandardScaler,...)>>>pca=PCA(random_state=42)>>>X_pca=pca.fit_transform(...StandardScaler().fit_transform(X)...)>>>pca.explained_variance_ratio_array([0.23917891, 0.21623078, 0.19265028,0.10460882, 0.08170342, 0.07229959,0.05133752, 0.04199068])>>>pca.components_[0]arrayarray([-0.63368693, 0.39682566,0.00614498, 0.11488415, 0.58075352,-0.19046812, -0.21190808, -0.09631388])
实例参数:
n_components=None要生成的组件数。如果None ,则返回与列数相同的数字。可以是浮点数(0,1),然后将根据需要创建尽可能多的分量以获得该方差比。
copy=True如果True ,将在.fit 上对数据进行变异。
whiten=False转换后对数据进行白化处理,以确保不相关的 ...
Read now
Unlock full access