自己计划实现一遍模式识别里的内容。

Parzen窗估计是非参数估计。我在非参数技术——Parzen窗估计方法文章和非参数估计-Parzen窗口函数法文章里面整理出了算法基本过程:利用第一篇博客给出的样本数据对给定的数据进行分类。分类的方法就是根据公式分别求出对于三个类的数值。公式是

求出来数值之后,比较大小,给定数据属于数值较大的一类。运算通过numpy包实现,通过循环得出数值,进行比较。

代码实现如下,计算的结果和非参数技术——Parzen窗估计方法文中给的内容基本一致。

import numpy as np

import matplotlib.pyplot as plt

from mpl_toolkits.mplot3d import Axes3D

# parzen窗法

# 原始数据

# w1

data1=[[0.28,1.31,-6.2],

[0.07,0.58,-0.78],

[1.54,2.01,-1.63],

[-0.44,1.18,-4.32],

[-0.81,0.21,5.73],

[1.52,3.16,2.77],

[2.20,2.42,-0.19],

[0.91,1.94,6.21],

[0.65,1.93,4.38],

[-0.26,0.82,-0.96]

]

w1=np.mat(data1)

# w2

data2=[[0.011,1.03,-0.21],

[1.27,1.28,0.08],

[0.13,3.12,0.16],

[-0.21,1.23,-0.11],

[-2.18,1.39,-0.19],

[0.34,1.96,-0.16],

[-1.38,0.94,0.45],

[-0.12,0.82,0.17],

[-1.44,2.31,0.14],

[0.26,1.94,0.08]

]

w2=np.mat(data2)

# w3

data3=[[1.36,2.17,0.14],

[1.41,1.45,-0.38],

[1.22,0.99,0.69],

[2.46,2.19,1.31],

[0.68,0.79,0.87],

[2.51,3.22,1.35],

[0.60,2.44,0.92],

[0.64,0.13,0.97],

[0.85,0.58,0.99],

[0.66,0.51,0.88]

]

w3=np.mat(data3)

#得到Φ函数的结果

# 要是用np.mat创建矩阵,np.array是不行的,是数组没有转置

def get_phi(x, xi, h):

x = np.mat(x)

xi = np.mat(xi)

phi = np.exp(-(x - xi) * (x - xi).T / (2 * h * h))

return phi

# 整体公式的算数

def get_px(x, xi, h):

phi = 0

n = len(xi)

for i in range(n):

# print("xi[i]", xi[i])

phi += get_phi(x, xi[i], h)

px = phi / ( n * np.power(h, 3))

return px

# 利用parzen窗判断目标数据属于哪个类

def parzen(h, test):

# 数组用来比较结果属于哪一类

px = [0, 0, 0]

# h的取值

print("h =", h)

px[0] = get_px(test,w1,h)

px[1] = get_px(test, w2, h)

px[2] = get_px(test, w3, h)

# 输出一下计算结果,用来和已知内容比较

print("w1",px[0])

print("w2",px[1])

print("w3",px[2])

# 加一个plt的图形展示,可以显示已经有的点和分类的点,正好自己不熟悉,练习一下

fig = plt.figure()

ax = fig.add_subplot(111, projection='3d')

ax.scatter(w1[:, 0], w1[:, 1], w1[:, 2], s=20, c='r')

ax.scatter(w2[:, 0], w2[:, 1], w2[:, 2], s=20, c='g')

ax.scatter(w3[:, 0], w3[:, 1], w3[:, 2], s=20, c='y')

if px[0] > px[1] :

if px[0] > px[2] :

print("属于第一类")

ax.scatter(test[0], test[1], test[2], s=50, c='r')

else :

print("属于第三类")

ax.scatter(test[0], test[1], test[2], s=50, c='y')

else :

if px[1] > px[2]:

print("属于第二类")

ax.scatter(test[0], test[1], test[2], s=50, c='g')

else:

print("属于第三类")

ax.scatter(test[0], test[1], test[2], s=50, c='y')

# xyz轴的名称

ax.set_xlabel('X ')

ax.set_ylabel('Y ')

ax.set_zlabel('Z ')

# 标题名称,有变量,向string一样%s处理

plt.title("h=%s"%h)

plt.show()

# 计算

def main():

# 数组分别为 [0.5, 1.0, 0.0] [0.31, 1.51, -0.50] [-0.3, 0.44, -0.1]

# 切换test的数组内容可以测试每一个数据

test=[0.31, 1.51, -0.50]

h1 = 1

h2 = 0.1

parzen(h1, test)

parzen(h2, test)

# 入口

if __name__ == '__main__':

main()

除了利用parzen窗判断目标数据属于哪个类,还把这些点和目标点用pyplot展示了一下,目标点会放大效果如下

parzen窗估计如何进行结果分析_实现一下模式识别(一)Parzen窗估计相关推荐

  1. parzen窗估计如何进行结果分析_基于参数Parzen窗估计的独立分量分析

    基于参数 Parzen 窗估计的独立分量分析 成孝刚 ; 姜华 ; 刘国庆 ; 陈启美 [期刊名称] <信号处理> [年 ( 卷 ), 期] 2009(025)003 [摘要] 在对盲源信 ...

  2. parzen窗估计如何进行结果分析_Parzen窗方法的分析和研究

    1333755 第 1 页 对 Parzen 窗 /PNN 算法的学习和研究报告 姓名:吴潇 学号: 1333755 1 . Parzen 窗方法综述.发展历史及现状 模式识别领域的非参数估计方法大致 ...

  3. 风险投资成功案例分析_著名的风投成功案例

          风险投资成功案例分析1     转换科技公司(Transition Technology Inc.以下简称TTI)在1987年初开始寻求风险资本,直到212天后终于获得了3i风险投资公司( ...

  4. 统计_statistics_不同的人_大样本_分析_统计方法_useful ?

    统计_statistics_不同的人_大样本_分析_ 转载于:https://www.cnblogs.com/books2read/p/11313825.html

  5. 分布分析和分组分析_如何通过群组分析对用户进行分组并获得可行的见解

    分布分析和分组分析 数据分析 (DATA ANALYSIS) Being a regular at a restaurant is great. 乙 eing定期在餐厅是伟大的. When I sta ...

  6. 移动平均线ma分析_使用动态移动平均线构建交互式库存量和价格分析图

    移动平均线ma分析 I decided to code out my own stock tracking chart despite a wide array of freely available ...

  7. 消费者行为分析_消费者行为分析-是否点击广告?

    消费者行为分析 什么是消费者行为? (What is Consumer Behavior?) consumer behavior is the study of individuals, groups ...

  8. 【MATLAB深度学习工具箱】学习笔记--体脂估计算例再分析:拟合神经网络fitnet里面的函数】

    介绍 上一篇 [MATLAB深度学习工具箱]学习笔记--体脂估计算例再分析:拟合神经网络fitnet里面的数据结构]_bear_miao的博客-CSDN博客原文链接如下[MATLAB深度学习工具箱]学 ...

  9. Android自定义底部弹出窗-dialog(2种实现分析+源码)

    Android自定义底部弹出窗-dialog(2种实现分析+源码) 上线项目功能抽取,在项目开发中,我们会在许多地方会用到底部自定义弹窗,比如设置:个人账户退出,切换,照片的拍照或者相册的调出,或者一 ...

最新文章

  1. 里海水位上升的原因_汽轮机真空下降的原因及处理
  2. spring boot 入门_SpringBoot入门建站全系列(三十)Mybatis多数据源进行数据库操作
  3. linux的ftp轮询上传文件,Android中实现异步轮询上传文件
  4. rds 数据导入mysql_将数据导入到 Amazon RDS 数据库实例
  5. 谷歌 colab_使用Google Colab在Python中将图像和遮罩拆分为多个部分
  6. Web框架——Flask系列之Flask-SQLAlchemy数据库的基本操作(九)
  7. MyEclipes 设置代码自动提示
  8. 《大话设计模式》——外观模式
  9. Python Tricks(十一)—— 阶乘的实现
  10. Tensorspace一款神奇的神经网络可视化应用
  11. 小D课堂 - 零基础入门SpringBoot2.X到实战_第14节 高级篇幅之SpringBoot多环境配置_59、SpringBoot多环境配置介绍和项目实战...
  12. 写一个自动阅读的方法(需要运用html和css和JavaScript)
  13. Android 自定义控件 Demo合集
  14. SPSS入门教程——方差齐性检验的方法有哪些
  15. Espresso Test 7: Idling resource
  16. aix系统挂载nas
  17. python bind函数_python bind是什么意思
  18. 神笔马良——基于 OpenGL 的涂鸦框架
  19. 360手机卫士插件化RePlugin今日开源,官方全面解读
  20. 西门子smart200和西门子伺服V90三轴程序

热门文章

  1. 3种常见的Web前端数组排序方式!
  2. 《集体智慧编程》第五章 优化
  3. 《高性能JavaScript》第三章 DOM编程
  4. Django默认用户认证系统和用户模型类
  5. Python多任务(3.线程--多线程共享全局变量,利用同步解决资源竞争,利用互斥锁)
  6. VTK:等参细胞演示用法实战
  7. VTK:vtkChartMatrix用法实战
  8. wxWidgets:wxTimerEvent类用法
  9. boost::polymorphic_get相关的测试程序
  10. boost::hana::find用法的测试程序