快捷搜索:  汽车  科技

pythonscikit测试代码(用Python做科学计算工具篇)

pythonscikit测试代码(用Python做科学计算工具篇)>>> pca.components_ array([[ 0.36158... -0.08226... 0.85657... 0.35884...] [ 0.65653... 0.72971... -0.17576... -0.07470...]]) 其他属性也可用:>>>>>> X = iris.data >>> y = iris.target PCA使用矩阵 X 的截断奇异值分解计算原始特征的线性组合,以将数据投影到顶部奇异向量的基数上。>>>>>> from sklearn.decomposition import PCA >>> pca = PCA(n_components=2 whiten=True) >

pythonscikit测试代码(用Python做科学计算工具篇)(1)

所需基本库

  • numpy
  • scipy
  • matplotlib
全章目录【本节:无监督学习:降维和可视化】
  • 简介:问题设置
  • 使用 scikit-learn 进行机器学习的基本原理
  • 监督学习:手写数字的分类
  • 监督学习:住房数据的回归
  • 测量预测性能
  • 无监督学习:降维和可视化
  • 特征脸示例:链接 PCA 和 SVM
  • 特征脸示例:链接 PCA 和 SVM
  • 参数选择、验证和测试

6.6. 无监督学习:降维和可视化

无监督学习应用于没有 y 的 X:没有标签的数据。一个典型的用例是在数据中找到隐藏的结构。

6.6.1. 降维:PCA

降维派生出一组比原始特征集更小的新人工特征。在这里,我们将使用主成分分析 (PCA),这是一种降维方法,旨在保留原始数据的大部分方差。我们将sklearn.decomposition.PCA在 iris 数据集上使用:

>>>

>>> X = iris.data >>> y = iris.target

PCA使用矩阵 X 的截断奇异值分解计算原始特征的线性组合,以将数据投影到顶部奇异向量的基数上。

>>>

>>> from sklearn.decomposition import PCA >>> pca = PCA(n_components=2 whiten=True) >>> pca.fit(X) PCA(... n_components=2 ...)

拟合后,PCA在components_属性中公开奇异向量:

>>>

>>> pca.components_ array([[ 0.36158... -0.08226... 0.85657... 0.35884...] [ 0.65653... 0.72971... -0.17576... -0.07470...]])

其他属性也可用:

>>>

>>> pca.explained_variance_ratio_ array([0.92461... 0.05301...])

让我们沿着前两个维度投影 iris 数据集:

>>>

>>> X_pca = pca.transform(X) >>> X_pca.shape (150 2)

PCA normalizes和whitens数据,这意味着数据现在以具有单位方差的两个组件为中心:

>>>

>>> X_pca.mean(axis=0) array([...e-15 ...e-15]) >>> X_pca.std(axis=0 ddof=1) array([1. 1.])

此外,样本分量不再具有任何线性相关性:

>>>

>>> np.corrcoef(X_pca.T) array([[1.00000000e 00 0.0] [0.0 1.00000000e 00]])

使用许多保留组件 2 或 3,PCA 可用于可视化数据集:

>>>

>>> target_ids = range(len(iris.target_names)) >>> for i c label in zip(target_ids 'rgbcmykw' iris.target_names): ... plt.scatter(X_pca[y == i 0] X_pca[y == i 1] ... c=c label=label) <matplotlib.collections.PathCollection ...

pythonscikit测试代码(用Python做科学计算工具篇)(2)

请注意,这个投影是在没有任何关于标签的信息(由颜色表示)的情况下确定的:这就是学习是无监督的。尽管如此,我们看到投影让我们深入了解参数空间中不同花朵的分布:值得注意的是,鸢尾花比其他两个物种更加明显。

6.6.2. 非线性嵌入的可视化:tSNE

对于可视化,更复杂的嵌入可能很有用(对于统计分析,它们更难控制)。sklearn.manifold.TSNE是一种如此强大的流形学习方法。我们将其应用于数字 数据集,因为数字是维度 8*8 = 64 的向量。将它们嵌入 2D 可以实现可视化:

>>>

>>> # Take the first 500 data points: it's hard to see 1500 points >>> X = digits.data[:500] >>> y = digits.target[:500] >>> # Fit and transform with a TSNE >>> from sklearn.manifold import TSNE >>> tsne = TSNE(n_components=2 random_state=0) >>> X_2d = tsne.fit_transform(X) >>> # Visualize the data >>> plt.scatter(X_2d[: 0] X_2d[: 1] c=y) <matplotlib.collections.PathCollection object at ...>

pythonscikit测试代码(用Python做科学计算工具篇)(3)

fit_transform

由于TSNE不能应用于新数据,我们需要使用它的fit_transform方法。

sklearn.manifold.TSNE即使它无法访问类别信息,也可以很好地区分不同类别的数字。

>>>

>>> from sklearn.datasets import load_digits >>> digits = load_digits() >>> # ...


相关笔记:

用Python做科学计算(工具篇)——scikit-learn(机器学习)5

用Python做科学计算(工具篇)——scikit-learn(机器学习)4

用Python做科学计算(工具篇)——scikit-learn(机器学习)3

用Python做科学计算(工具篇)——scikit-learn(机器学习)2

用Python做科学计算(工具篇)——scikit-learn(机器学习)1

用Python做科学计算(工具篇)——1.1. NumPy 数组对象

用Python做科学计算(工具篇)——numpy1.2.数组的数值运算

用Python做科学计算(工具篇)——numpy1.3 更精细的数组

用Python做科学计算(工具篇)——numpy1.4 高级操作

用Python做科学计算——matplotlib绘图实例

用Python做科学计算(工具篇)——scipy 使用指南

用Python做科学计算(工具篇)——sympy使用指南(符号运算)

猜您喜欢: