资源简介
PCA降维+分类器 python语言写的
主成分分析
代码可以跑 python3.6版
代码片段和文件信息
import numpy as np
from matplotlib import pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from mpl_toolkits.mplot3d import proj3d
from matplotlib.patches import FancyArrowPatch
np.random.seed(1)
mu_vec1 = np.array([0 0 0])
cov_mat1 = np.array([[1 0 0] [0 1 0] [0 0 1]])
class1_sample = np.random.multivariate_normal(mu_vec1 cov_mat1 10).T
assert class1_sample.shape == (3 10) “The matrix has not the dimensions 3x10“
mu_vec2 = np.array([1 1 1])
cov_mat2 = np.array([[1 0 0] [0 1 0] [0 0 1]])
class2_sample = np.random.multivariate_normal(mu_vec2 cov_mat2 10).T
assert class2_sample.shape == (3 10) “The matrix has not the dimensions 3x50“
fig = plt.figure(figsize=(8 8))
ax = fig.add_subplot(111 projection=‘3d‘)
plt.rcParams[‘legend.fontsize‘] = 10
ax.plot(class1_sample[0 :] class1_sample[1 :] class1_sample[2 :] ‘o‘ markersize=8 color=‘blue‘ alpha=0.5
label=‘class1‘)
ax.plot(class2_sample[0 :] class2_sample[1 :] class2_sample[2 :] ‘^‘ markersize=8 alpha=0.5 color=‘red‘
label=‘class2‘)
plt.title(‘Samples for class 1 and class 2‘)
ax.legend(loc=‘upper right‘)
plt.show()
all_samples = np.concatenate((class1_sample class2_sample) axis=1)
assert all_samples.shape == (3 20) “The matrix has not the dimensions 3x20“
mean_x = np.mean(all_samples[0 :])
mean_y = np.mean(all_samples[1 :])
mean_z = np.mean(all_samples[2 :])
mean_vector = np.array([[mean_x] [mean_y] [mean_z]])
print(‘Mean Vector:\n‘ mean_vector)
cov_mat = np.cov([all_samples[0 :] all_samples[1 :] all_samples[2 :]])
print(‘Covariance Matrix:\n‘ cov_mat)
eig_val_cov eig_vec_cov = np.linalg.eig(cov_mat)
for i in range(len(eig_val_cov)):
eigvec_cov = eig_vec_cov[: i].reshape(1 3).T
print(‘Eigenvector {}: \n{}‘.format(i + 1 eigvec_cov))
print(‘Eigenvalue {} from covariance matrix: {}‘.format(i + 1 eig_val_cov[i]))
print(100 * ‘-‘)
class Arrow3D(FancyArrowPatch):
def __init__(self xs ys zs *args **kwargs):
FancyArrowPatch.__init__(self (0 0) (0 0) *args **kwargs)
self._verts3d = xs ys zs
def draw(self renderer):
xs3d ys3d zs3d = self._verts3d
xs ys zs = proj3d.proj_transform(xs3d ys3d zs3d renderer.M)
self.set_positions((xs[0] ys[0]) (xs[1] ys[1]))
FancyArrowPatch.draw(self renderer)
fig = plt.figure(figsize=(7 7))
ax = fig.add_subplot(111 projection=‘3d‘)
ax.plot(all_samples[0 :] all_samples[1 :] all_samples[2 :] ‘o‘ markersize=8 color=‘green‘ alpha=0.2)
ax.plot([mean_x] [mean_y] [mean_z] ‘o‘ markersize=10 color=‘red‘ alpha=0.5)
for v in eig_vec_cov.T:
a = Arrow3D([mean_x v[0]] [mean_y v[1]] [mean_z v[2]] mutation_scale=10 lw=3 arrowstyle=“-|>“ color=“r“)
ax.add_artist(a)
ax.set_xlabel(‘x_values‘)
ax.set_ylabel(‘y_values‘)
ax.set_zlabel(‘z_values‘)
plt.title(‘Eigenvectors‘)
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 481459 2018-05-31 16:32 第二次作业 降维+分类 171593苏醒\171593_苏醒_降维+分类器.pdf
文件 6192 2018-05-28 15:13 第二次作业 降维+分类 171593苏醒\171593_苏醒_降维+分类器.py
目录 0 2018-05-31 16:34 第二次作业 降维+分类 171593苏醒
----------- --------- ---------- ----- ----
487651 3
- 上一篇:百度坐标转WGS84坐标程序
- 下一篇:千锋python最新高级教程:数据处理和分析
相关资源
- python实现SGBM图像匹配算法
- python实现灰度直方图均衡化
- scrapy_qunar_one
- Python学习全系列教程永久可用
- python简明教程.chm
- 抽奖大转盘python的图形化界面
- 双边滤波器实验报告及代码python
- python +MYSQL+HTML实现21蛋糕网上商城
- Python-直播答题助手自动检测出题搜索
- OpenCV入门教程+OpenCV官方教程中文版
- Python 串口工具源码+.exe文件
- Python开发的全栈股票系统.zip
- Python操作Excel表格并将其中部分数据写
- python书籍 PDF
- 利用python绘制散点图
- python+labview+No1.vi
- 老男孩python项目实战
- python源码制作whl文件.rar
- python3.5可用的scipy
- PYTHON3 经典50案例.pptx
- 计算机科学导论-python.pdf
- python模拟鼠标点击屏幕
- windows鼠标自动点击py脚本
- 鱼c小甲鱼零基础学python全套课后题和
- Python 练习题100道
- Practical Programming 2nd Edition
- wxPython Application Development Cookbook
- python 3.6
- Python 3.5.2 中文文档 互联网唯一CHM版本
- python3.5.2.chm官方文档
评论
共有 条评论