# -*- coding: utf-8 -*-

import numpy as np
import matplotlib.pyplot as plt from sklearn import datasets,manifold def load_data():
'''
加载用于降维的数据
'''
# 使用 scikit-learn 自带的 iris 数据集
iris=datasets.load_iris()
return iris.data,iris.target #局部线性嵌入LLE降维模型
def test_LocallyLinearEmbedding(*data):
X,y=data
# 依次考察降维目标为 4维、3维、2维、1维
for n in [4,3,2,1]:
lle=manifold.LocallyLinearEmbedding(n_components=n)
lle.fit(X)
print('reconstruction_error(n_components=%d) : %s'%(n, lle.reconstruction_error_)) # 产生用于降维的数据集
X,y=load_data()
# 调用 test_LocallyLinearEmbedding
test_LocallyLinearEmbedding(X,y)

def plot_LocallyLinearEmbedding_k(*data):
'''
测试 LocallyLinearEmbedding 中 n_neighbors 参数的影响,其中降维至 2维
'''
X,y=data
# n_neighbors参数的候选值的集合
Ks=[1,5,25,y.size-1] fig=plt.figure()
for i, k in enumerate(Ks):
lle=manifold.LocallyLinearEmbedding(n_components=2,n_neighbors=k)
#原始数据集转换到二维
X_r=lle.fit_transform(X)
## 两行两列,每个单元显示不同 n_neighbors 参数的 LocallyLinearEmbedding 的效果图
ax=fig.add_subplot(2,2,i+1)
# 颜色集合,不同标记的样本染不同的颜色
colors=((1,0,0),(0,1,0),(0,0,1),(0.5,0.5,0),(0,0.5,0.5),(0.5,0,0.5),(0.4,0.6,0),(0.6,0.4,0),(0,0.6,0.4),(0.5,0.3,0.2))
for label ,color in zip( np.unique(y),colors):
position=y==label
ax.scatter(X_r[position,0],X_r[position,1],label="target= %d"%label,color=color)
ax.set_xlabel("X[0]")
ax.set_ylabel("X[1]")
ax.legend(loc="best")
ax.set_title("k=%d"%k)
plt.suptitle("LocallyLinearEmbedding")
plt.show() # 调用 plot_LocallyLinearEmbedding_k
plot_LocallyLinearEmbedding_k(X,y)

def plot_LocallyLinearEmbedding_k_d1(*data):
'''
测试 LocallyLinearEmbedding 中 n_neighbors 参数的影响,其中降维至 1维
'''
X,y=data
Ks=[1,5,25,y.size-1]# n_neighbors参数的候选值的集合 fig=plt.figure()
for i, k in enumerate(Ks):
lle=manifold.LocallyLinearEmbedding(n_components=1,n_neighbors=k)
X_r=lle.fit_transform(X)#原始数据集转换到 1 维 ax=fig.add_subplot(2,2,i+1)## 两行两列,每个单元显示不同 n_neighbors 参数的 LocallyLinearEmbedding 的效果图
colors=((1,0,0),(0,1,0),(0,0,1),(0.5,0.5,0),(0,0.5,0.5),(0.5,0,0.5),
(0.4,0.6,0),(0.6,0.4,0),(0,0.6,0.4),(0.5,0.3,0.2),)# 颜色集合,不同标记的样本染不同的颜色
for label ,color in zip( np.unique(y),colors):
position=y==label
ax.scatter(X_r[position],np.zeros_like(X_r[position]),
label="target= %d"%label,color=color) ax.set_xlabel("X")
ax.set_ylabel("Y")
ax.legend(loc="best")
ax.set_title("k=%d"%k)
plt.suptitle("LocallyLinearEmbedding")
plt.show() # 调用 plot_LocallyLinearEmbedding_k_d1
plot_LocallyLinearEmbedding_k_d1(X,y)

吴裕雄 python 机器学习——局部线性嵌入LLE降维模型的更多相关文章

  1. 吴裕雄 python 机器学习——等度量映射Isomap降维模型

    # -*- coding: utf-8 -*- import numpy as np import matplotlib.pyplot as plt from sklearn import datas ...

  2. 吴裕雄 python 机器学习——支持向量机线性分类LinearSVC模型

    import numpy as np import matplotlib.pyplot as plt from sklearn import datasets, linear_model,svm fr ...

  3. 吴裕雄 python 机器学习——人工神经网络与原始感知机模型

    import numpy as np from matplotlib import pyplot as plt from mpl_toolkits.mplot3d import Axes3D from ...

  4. 吴裕雄 python 机器学习——主成份分析PCA降维

    # -*- coding: utf-8 -*- import numpy as np import matplotlib.pyplot as plt from sklearn import datas ...

  5. 吴裕雄 python 机器学习——多项式贝叶斯分类器MultinomialNB模型

    import numpy as np import matplotlib.pyplot as plt from sklearn import datasets,naive_bayes from skl ...

  6. 吴裕雄 python 机器学习——数据预处理二元化OneHotEncoder模型

    from sklearn.preprocessing import OneHotEncoder #数据预处理二元化OneHotEncoder模型 def test_OneHotEncoder(): X ...

  7. 吴裕雄 python 机器学习——数据预处理二元化Binarizer模型

    from sklearn.preprocessing import Binarizer #数据预处理二元化Binarizer模型 def test_Binarizer(): X=[[1,2,3,4,5 ...

  8. 吴裕雄 python 机器学习——集成学习AdaBoost算法回归模型

    import numpy as np import matplotlib.pyplot as plt from sklearn import datasets,ensemble from sklear ...

  9. 吴裕雄 python 机器学习——集成学习AdaBoost算法分类模型

    import numpy as np import matplotlib.pyplot as plt from sklearn import datasets,ensemble from sklear ...

随机推荐

  1. PHP代码安全杂谈

    虽然PHP是世界上最好的语言,但是也有一些因为弱类型语言的安全性问题出现.WordPress历史上就出现过由于PHP本身的缺陷而造成的一些安全性问题,如CVE-2014-0166 中的cookie伪造 ...

  2. 软件架构期末复习(Struts2+Spring+Hibernate)

    Struts2+Spring+Hibernate The Model-ViewController pattern in Struts2 is implemented with the followi ...

  3. mysql中获取本月第一天、本月最后一天、上月第一天、上月最后一天等等

    转自: https://blog.csdn.net/min996358312/article/details/61420462 1.当函数使用时,即interval(),为比较函数,如:interva ...

  4. Python三次握手和四次挥手

    先要了解什么是传输层 博客中网络协议基础编有详细介绍 https://www.cnblogs.com/toby-yu/p/12357598.html TCP三次握手和四次挥手 1.三次握手 首先Cli ...

  5. C语言合并两个有序链表

    将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1->2->4, 1->3->4输出:1->1->2-& ...

  6. Docker之设置加速器

    在Docker从仓库下载镜像是非常慢的,所以今天搞一个Docker设置加速器教程. 1. 创建一个Docker的配置文件. sudo vim /etc/docker/daemon.json 2. 编写 ...

  7. mysql逻辑备份与还原工具mysqldump

    (一)mysqldump介绍 mysqldump是MySQL自带的逻辑备份工具,类似于Oracle的expdp/impdp,mysqldump备份十分灵活,可以在以下级别对数据库进行备份: 实例下的所 ...

  8. FJUTOJ-3682 LRU算法的实现2 (链表+哈希)

    传送门 此题让我们实现一个LRU的模板类.本题较简便且高效的写法是维护一个std::list和一个std::unordered_map. std::list 与 std::unordered_map ...

  9. LUT

    FPGA大多为LUT+寄存器的够,实现工艺为SRAM:寄存器很好理解,存储器的一种,用于存储指令和数据,多位于CPU内.拿什么是LUT呢? LUT:即Look up table,查找表,其本质是一个R ...

  10. torch.cat拼接 stack拼接 分块chunk

    torch.cat拼接 stack拼接 分块chunk 待办 https://blog.csdn.net/qq_39709535/article/details/80803003 stack dim理 ...