当前位置:文档之家› 模式识别课程实验报告

模式识别课程实验报告

模式识别课程实验报告
模式识别课程实验报告

模式识别课程实验报告

学院

专业

班级

姓名

学号

指导教师

提交日期

1 Data Preprocessing

The provide dataset includes a training set with 3605 positive samples and 10055 negative samples, and a test set with 2043 positive samples and 4832 negative samples. A 2330-dimensional Haar-like feature was extracted for each sample. For high dimensional data, we keep the computation manageable by sampling , feature selection, and dimension reduction.

1.1 Sampling

In order to make the samples evenly distributed, we calculate the ratio of negative samples and positive samples int test set. And then randomly select the same ratio of negative samples in training set. After that We use different ratios of negative and positive samples to train the classifier for better training speed.

1.2 Feature Selection

Univariate feature selection can test each feature, measure the relationship between the feature and the response variable so as to remove unimportant feature variables. In the experiment, we use the method sklearn.feature_selection.SelectKBest to implement feature selection. We use chi2 which is chi-squared stats of non-negative features for classification tasks to rank features, and finally we choose 100 features ranked in the top 100.

2 Logistic regression

In the experiment, we choose the logistic regression model, which is widely used in real-world scenarios. The main consideration in our work is based on the binary classification logic regression model.

2.1 Introduction

A logistic regression is a discriminant-based approach that assumes that instances of a class are linearly separable. It can obtain the final prediction model by directly estimating the parameters of the discriminant. The logistic regression model does not model class conditional density, but rather models the class condition ratio.

2.2 process

The next step is how to obtain the best evaluation parameters, making the training of the LR model can get the best classification effect. This process can also be seen as a search process, that is, in an LR model of the solution space, how to find a design with our LR model most match the solution. In order to achieve the best available LR model, we need to design a search strategy.

The intuitive idea is to evaluate the predictive model by judging the degree of matching between the results of the model and the true value. In the field of machine learning, the use of loss function or cost function to calculate the forecast. For the classification, logistic regression uses the Sigmoid curve to greatly reduce the weight of the points that are far from the classification plane through the nonlinear mapping, which relatively increases the weight of the data points which is most relevant to the classification.

2.3 Sigmoid function

We should find a function which can separate two in the two classes binary classification problem. The ideal function is called step function. In this we use the sigmoid function.

()z e z -+=11

σ

When we increase the value of x, the sigmoid will approach 1, and when we decrease the value of x, the sigmoid will gradually approaches 0. The sigmoid looks like a step function On a large enough scale.

2.4 gradient descent

i n i i T i x x y L ∑=+--=??-=1t t

1t ))(()(θσαθθθαθθ

The parameter α called learning rate, in simple terms is how far each step. this parameter is very critical. parameter σis sigmoid function that we introduce in 2.3.

3 Train classifier

We use the gradient descent algorithm to train the classifier. Gradient descent is a method of finding the local optimal solution of a function using the first order gradient information. In optimized gradient rise algorithm, each step along the gradient negative direction. The implementation code is as follows:

# calculate the sigmoid function

def sigmoid(inX):

return 1.0 / (1 + exp(-inX))

#train a logistic regression

def trainLogisticRegression(train_x, train_y, opts):

numSamples, numFeatures = shape(train_x)

alpha = opts['alpha'];

maxIter = opts['maxIter']

weights = ones((numFeatures, 1))

# optimize through gradient descent algorilthm

for k in range(maxIter):

if opts['optimizeType'] == 'gradDescent': # gradient descent algorilthm output = sigmoid(train_x * weights)

error = train_y - output

weights = weights + alpha * train_x.transpose() * error return weights

In the above program, we repeat the following steps until the convergence:

(1) Calculate the gradient of the entire data set

(2) Use alpha x gradient to update the regression coefficients

Where alpha is the step size, maxIter is the number of iterations.

4 evaluate classifier

4.1 optimization

To find out when the classifier performs best, I do many experiments. The three main experiments are listed below.

First.

I use two matrix types of data to train a logistic regression model using some optional optimize algorithm, then use some optimization operation include alpha and maximum number of iterations. These operations are mainly implemented by this function trainLogisticRegression that requires three parameters train_x, train_y, opts, of which two parameters are the matrix type of training data set, the last parameter is some optimization operations, including the number of steps and the number of iterations. And the correct rate as follows:

When we fixed the alpha, change the number of iterations, we can get the results as shown below:

Red: alpha = 0.001

Yellow: alpha = 0.003

Blue: alpha = 0.006

Black: alpha = 0.01

Green: alpha = 0.03

Magenta: alpha = 0.3

This line chart shows that if the iterations too small, the classifier will perform bad. As the number of iterations increases, the accuracy will increase. And we can konw iterations of 800 seems to be better. The value of alpha influences the result slightly. If the iterations is larger then 800, the accuracy of the classifier will stabilize and the effect of the step on it can be ignored.

Second.

When we fixed the iterations, change the alpha, we can get the results as shown below:

This line chart shows when the number of iterations is larger 800, the accuracy is relatively stable, with the increase of the alpha, the smaller the change. And when the number of iterations is small, for example, the number of times is 100, the accuracy is rather strange, the accuracy will increase with the increase of alpha. We can know that when the number of iterations is small, even if the alpha is very small, its accuracy is not high. The number of iterations and the alpha is important for the accuracy of the logical regression model training.

Third.

The result of the above experiment is to load all the data to train the classifier, but there are 3605 pos training data but 10055 neg training data. So I am curious about whether can I use less neg training data to train the classifier for better training speed.

I use the test_differentNeg.py to does this experiment:

Red: iterations = 100 Yellow: iterations = 300 Blue: iterations = 800 Black: iterations = 1000

The line chart shows that the smaller the negative sample, the lower the accuracy. However, as the number of negative samples increases, the accuracy of the classifier.

I found that when the number of negative samples is larger 6000, the accuracy was reduced and then began to increase.

4.2 cross-validation

We divided the data set into 10 copies on average,9 copies as a training set and 1 copies as a test set.we can get the results as shown below:

Red: alpha = 0.001

Yellow: alpha = 0.003

Blue: alpha = 0.006

Black: alpha = 0.01

Green: alpha = 0.03

Magenta: alpha = 0.3

This figure shows that if the iterations too small, the classifier will perform bad. As

the number of iterations increases, the accuracy will increase. And we can konw iterations of 1000 seems to be better. The value of alpha influences the result slightly.

If the iterations is larger then 1000, the accuracy of the classifier will achieve 84% and stable. And the effect of the step on it can be ignored.

5 Conclusion

In this experiment, We notice that no matter before or after algorithm optimization,

the test accuracy does not achieve our expectation. At first the accuracy of LR can reach 80%. After optimization, the accuracy of LR can reach 88%. I think there are several possible reasons below:

(1) The training set is too small for only about 700 samples for active training sets, while the negative training set has only 800 samples;

(2) We did not use a more appropriate method to filter the samples;

(3) The method of selecting features is not good enough because it is too simple;

(4) Dimension reduction does not be implemented, so that The high dimension of features increases the computation complexity and affects the accuracy;

(5) The test sets may come from different kinds of video or images which are taken from different areas.

(6) The number of iterations is set too small or the alpha is set too small or too large. These questions above will be improved in future work.

In this project, we use Logistic regression to solve the binary classification problem. Before the experiment, we studied and prepared the algorithm of the LR model and reviewed other machine learning models studied in the pattern recognition course. In this process, we use python with a powerful machine learning library to implement, continue to solve the various problems, and optimize the algorithm to make the classifier perform better. At the same time, we also collaborate and learn from each other. Although the project takes us a lot of time, We have consolidated the theoretical knowledge and have fun in practice.

模式识别课matlab数字识别程序

名称:模式识别 题目:数字‘3’和‘4’的识别

实验目的与要求: 利用已知的数字样本(3和4),提取样本特征,并确定分类准则,在用测试样本对分类确定准则的错误率进行分析。进一步加深对模式识别方法的理解,强化利用计算机实现模式识别。 实验原理: 1.特征提取原理: 利用MATLAN 软件把图片变为一个二维矩阵,然后对该矩阵进行二值化处理。由于“3”的下半部分在横轴上的投影比“4”的下半部分在横轴上的投影宽,所以可以统计‘3’‘4’在横轴上投影的‘1’的个数作为一个特征。又由于‘4’中间纵向比‘3’的中间‘1’的个数多,所以可以统计‘4’和‘3’中间区域‘1’的个数作为另外一个特征,又考虑‘4’的纵向可能会有点偏,所以在统计一的个数的时候,取的范围稍微大点,但不能太大。 2.分类准则原理: 利用最近邻对测试样本进行分类 实验步骤 1.利用MATLAN 软件把前30个图片变为一个二维矩阵,然后对该矩阵进行二值化处理。 2.利用上述矩阵生成特征向量 3.利用MATLAN 软件把后5个图片变为一个二维矩阵,然后对该矩阵进行二值化处理。 4.对测试样本进行分类,用F矩阵表示结果,如果是‘1’表示分类正确,‘0’表示分类错误。 5.对分类错误率分析 实验原始程序: f=zeros(5,2) w=zeros(35,2) q=zeros(35,2) for i=1:35 filename_1='D:\MATLAB6p5\toolbox\images\imdemos\3\' filename_2='.bmp' a= num2str (i) b=strcat(filename_1,a) c=strcat(b,filename_2) d=imread(c) e=im2bw(d) n=0 for u=1:20 m=0 for t=32:36 if(e(t,u)==0) m=m+1 end end if(m<5) n=n+1 end end

数值分析实验报告1

实验一误差分析 实验1.1(病态问题) 实验目的:算法有“优”与“劣”之分,问题也有“好”与“坏”之别。对数值方法的研究而言,所谓坏问题就是问题本身对扰动敏感者,反之属于好问题。通过本实验可获得一个初步体会。 数值分析的大部分研究课题中,如线性代数方程组、矩阵特征值问题、非线性方程及方程组等都存在病态的问题。病态问题要通过研究和构造特殊的算法来解决,当然一般要付出一些代价(如耗用更多的机器时间、占用更多的存储空间等)。 问题提出:考虑一个高次的代数多项式 显然该多项式的全部根为1,2,…,20共计20个,且每个根都是单重的。现考虑该多项式的一个扰动 其中ε(1.1)和(1.221,,,a a 的输出b ”和“poly ε。 (1(2 (3)写成展 关于α solve 来提高解的精确度,这需要用到将多项式转换为符号多项式的函数poly2sym,函数的具体使用方法可参考Matlab 的帮助。 实验过程: 程序: a=poly(1:20); rr=roots(a); forn=2:21 n form=1:9 ess=10^(-6-m);

ve=zeros(1,21); ve(n)=ess; r=roots(a+ve); -6-m s=max(abs(r-rr)) end end 利用符号函数:(思考题一)a=poly(1:20); y=poly2sym(a); rr=solve(y) n

很容易的得出对一个多次的代数多项式的其中某一项进行很小的扰动,对其多项式的根会有一定的扰动的,所以对于这类病态问题可以借助于MATLAB来进行问题的分析。 学号:06450210 姓名:万轩 实验二插值法

模式识别第二次上机实验报告

北京科技大学计算机与通信工程学院 模式分类第二次上机实验报告 姓名:XXXXXX 学号:00000000 班级:电信11 时间:2014-04-16

一、实验目的 1.掌握支持向量机(SVM)的原理、核函数类型选择以及核参数选择原则等; 二、实验内容 2.准备好数据,首先要把数据转换成Libsvm软件包要求的数据格式为: label index1:value1 index2:value2 ... 其中对于分类来说label为类标识,指定数据的种类;对于回归来说label为目标值。(我主要要用到回归) Index是从1开始的自然数,value是每一维的特征值。 该过程可以自己使用excel或者编写程序来完成,也可以使用网络上的FormatDataLibsvm.xls来完成。FormatDataLibsvm.xls使用说明: 先将数据按照下列格式存放(注意label放最后面): value1 value2 label value1 value2 label 然后将以上数据粘贴到FormatDataLibsvm.xls中的最左上角单元格,接着工具->宏执行行FormatDataToLibsvm宏。就可以得到libsvm要求的数据格式。将该数据存放到文本文件中进行下一步的处理。 3.对数据进行归一化。 该过程要用到libsvm软件包中的svm-scale.exe Svm-scale用法: 用法:svmscale [-l lower] [-u upper] [-y y_lower y_upper] [-s save_filename] [-r restore_filename] filename (缺省值:lower = -1,upper = 1,没有对y进行缩放)其中,-l:数据下限标记;lower:缩放后数据下限;-u:数据上限标记;upper:缩放后数据上限;-y:是否对目标值同时进行缩放;y_lower为下限值,y_upper为上限值;(回归需要对目标进行缩放,因此该参数可以设定为–y -1 1 )-s save_filename:表示将缩放的规则保存为文件save_filename;-r restore_filename:表示将缩放规则文件restore_filename载入后按此缩放;filename:待缩放的数据文件(要求满足前面所述的格式)。缩放规则文件可以用文本浏览器打开,看到其格式为: y lower upper min max x lower upper index1 min1 max1 index2 min2 max2 其中的lower 与upper 与使用时所设置的lower 与upper 含义相同;index 表示特征序号;min 转换前该特征的最小值;max 转换前该特征的最大值。数据集的缩放结果在此情况下通过DOS窗口输出,当然也可以通过DOS的文件重定向符号“>”将结果另存为指定的文件。该文件中的参数可用于最后面对目标值的反归一化。反归一化的公式为: (Value-lower)*(max-min)/(upper - lower)+lower 其中value为归一化后的值,其他参数与前面介绍的相同。 建议将训练数据集与测试数据集放在同一个文本文件中一起归一化,然后再将归一化结果分成训练集和测试集。 4.训练数据,生成模型。 用法:svmtrain [options] training_set_file [model_file] 其中,options(操作参数):可用的选项即表示的涵义如下所示-s svm类型:设置SVM 类型,默

DX3004模式识别与人工智能--教学大纲概要

《模式识别与人工智能》课程教学大纲 一、课程基本信息 课程代码:DX3004 课程名称:模式识别与人工智能 课程性质:选修课 课程类别:专业与专业方向课程 适用专业:电气信息类专业 总学时: 64 学时 总学分: 4 学分 先修课程:MATLAB程序设计;数据结构;数字信号处理;概率论与数理统计 后续课程:语音处理技术;数字图像处理 课程简介: 模式识别与人工智能是60年代迅速发展起来的一门学科,属于信息,控制和系统科学的范畴。模式识别就是利用计算机对某些物理现象进行分类,在错误概率最小的条件下,使识别的结果尽量与事物相符。模式识别技术主要分为两大类:基于决策理论的统计模式识别和基于形式语言理论的句法模式识别。模式识别的原理和方法在医学、军事等众多领域应用十分广泛。本课程着重讲述模式识别的基本概念,基本方法和算法原理,注重理论与实践紧密结合,通过大量实例讲述如何将所学知识运用到实际应用之中去,避免引用过多的、繁琐的数学推导。这门课的教学目的是让学生掌握统计模式识别基本原理和方法,使学生具有初步综合利用数学知识深入研究有关信息领域问题的能力。 选用教材: 《模式识别》第二版,边肇祺,张学工等编著[M],北京:清华大学出版社,1999; 参考书目: [1] 《模式识别导论》,齐敏,李大健,郝重阳编著[M]. 北京:清华大学出版社,2009; [2] 《人工智能基础》,蔡自兴,蒙祖强[M]. 北京:高等教育出版社,2005; [3] 《模式识别》,汪增福编著[M]. 安徽:中国科学技术大学出版社,2010; 二、课程总目标 本课程为计算机应用技术专业本科生的专业选修课。通过本课程的学习,要求重点掌握统计模式识别的基本理论和应用。掌握统计模式识别方法中的特征提取和分类决策。掌握特征提取和选择的准则和算法,掌握监督学习的原理以及分类器的设计方法。基本掌握非监督模式识别方法。了解应用人工神经网络和模糊理论的模式识别方法。了解模式识别的应用和系统设计。要求学生掌握本课程的基本理论和方法并能在解决实际问题时得到有效地运用,同时为开发研究新的模式识别的理论和方法打下基础。 三、课程教学内容与基本要求 1、教学内容: (1)模式识别与人工智能基本知识; (2)贝叶斯决策理论; (3)概率密度函数的估计; (4)线性判别函数; (5)非线性胖别函数;

模式识别实验报告

模式识别实验报告

————————————————————————————————作者:————————————————————————————————日期:

实验报告 实验课程名称:模式识别 姓名:王宇班级: 20110813 学号: 2011081325 实验名称规范程度原理叙述实验过程实验结果实验成绩 图像的贝叶斯分类 K均值聚类算法 神经网络模式识别 平均成绩 折合成绩 注:1、每个实验中各项成绩按照5分制评定,实验成绩为各项总和 2、平均成绩取各项实验平均成绩 3、折合成绩按照教学大纲要求的百分比进行折合 2014年 6月

实验一、 图像的贝叶斯分类 一、实验目的 将模式识别方法与图像处理技术相结合,掌握利用最小错分概率贝叶斯分类器进行图像分类的基本方法,通过实验加深对基本概念的理解。 二、实验仪器设备及软件 HP D538、MATLAB 三、实验原理 概念: 阈值化分割算法是计算机视觉中的常用算法,对灰度图象的阈值分割就是先确定一个处于图像灰度取值范围内的灰度阈值,然后将图像中每个像素的灰度值与这个阈值相比较。并根据比较的结果将对应的像素划分为两类,灰度值大于阈值的像素划分为一类,小于阈值的划分为另一类,等于阈值的可任意划分到两类中的任何一类。 最常用的模型可描述如下:假设图像由具有单峰灰度分布的目标和背景组成,处于目标和背景内部相邻像素间的灰度值是高度相关的,但处于目标和背景交界处两边的像素灰度值有较大差别,此时,图像的灰度直方图基本上可看作是由分别对应于目标和背景的两个单峰直方图混合构成。而且这两个分布应大小接近,且均值足够远,方差足够小,这种情况下直方图呈现较明显的双峰。类似地,如果图像中包含多个单峰灰度目标,则直方图可能呈现较明显的多峰。 上述图像模型只是理想情况,有时图像中目标和背景的灰度值有部分交错。这时如用全局阈值进行分割必然会产生一定的误差。分割误差包括将目标分为背景和将背景分为目标两大类。实际应用中应尽量减小错误分割的概率,常用的一种方法为选取最优阈值。这里所谓的最优阈值,就是指能使误分割概率最小的分割阈值。图像的直方图可以看成是对灰度值概率分布密度函数的一种近似。如一幅图像中只包含目标和背景两类灰度区域,那么直方图所代表的灰度值概率密度函数可以表示为目标和背景两类灰度值概率密度函数的加权和。如果概率密度函数形式已知,就有可能计算出使目标和背景两类误分割概率最小的最优阈值。 假设目标与背景两类像素值均服从正态分布且混有加性高斯噪声,上述分类问题可以使用模式识别中的最小错分概率贝叶斯分类器来解决。以1p 与2p 分别表示目标与背景的灰度分布概率密度函数,1P 与2P 分别表示两类的先验概率,则图像的混合概率密度函数可用下式表示为

数值分析上机实验报告

数值分析上机实验报告

《数值分析》上机实验报告 1.用Newton 法求方程 X 7-X 4+14=0 在(0.1,1.9)中的近似根(初始近似值取为区间端点,迭代6次或误差小于0.00001)。 1.1 理论依据: 设函数在有限区间[a ,b]上二阶导数存在,且满足条件 {}α?上的惟一解在区间平方收敛于方程所生的迭代序列 迭代过程由则对任意初始近似值达到的一个中使是其中上不变号 在区间],[0)(3,2,1,0,) (') ()(],,[x |))(),((|,|,)(||)(|.4;0)(.3],[)(.20 )()(.110......b a x f x k x f x f x x x Newton b a b f a f mir b a c x f a b c f x f b a x f b f x f k k k k k k ==- ==∈≤-≠>+ 令 )9.1()9.1(0)8(4233642)(0)16(71127)(0)9.1(,0)1.0(,1428)(3 2 2 5 333647>?''<-=-=''<-=-='<>+-=f f x x x x x f x x x x x f f f x x x f 故以1.9为起点 ?? ?? ? ='- =+9.1)()(01x x f x f x x k k k k 如此一次一次的迭代,逼近x 的真实根。当前后两个的差<=ε时,就认为求出了近似的根。本程序用Newton 法求代数方程(最高次数不大于10)在(a,b )区间的根。

1.2 C语言程序原代码: #include #include main() {double x2,f,f1; double x1=1.9; //取初值为1.9 do {x2=x1; f=pow(x2,7)-28*pow(x2,4)+14; f1=7*pow(x2,6)-4*28*pow(x2,3); x1=x2-f/f1;} while(fabs(x1-x2)>=0.00001||x1<0.1); //限制循环次数printf("计算结果:x=%f\n",x1);} 1.3 运行结果: 1.4 MATLAB上机程序 function y=Newton(f,df,x0,eps,M) d=0; for k=1:M if feval(df,x0)==0 d=2;break else x1=x0-feval(f,x0)/feval(df,x0); end e=abs(x1-x0); x0=x1; if e<=eps&&abs(feval(f,x1))<=eps d=1;break end end

数值分析拉格朗日插值法上机实验报告

课题一:拉格朗日插值法 1.实验目的 1.学习和掌握拉格朗日插值多项式。 2.运用拉格朗日插值多项式进行计算。 2.实验过程 作出插值点(1.00,0.00),(-1.00,-3.00),(2.00,4.00)二、算法步骤 已知:某些点的坐标以及点数。 输入:条件点数以及这些点的坐标。 输出:根据给定的点求出其对应的拉格朗日插值多项式的值。 3.程序流程: (1)输入已知点的个数; (2)分别输入已知点的X坐标; (3)分别输入已知点的Y坐标; 程序如下: #include #include #include float lagrange(float *x,float *y,float xx,int n) /*拉格朗日

插值算法*/ { int i,j; float *a,yy=0.0; /*a作为临时变量,记录拉格朗日插值多项*/ a=(float*)malloc(n*sizeof(float)); for(i=0;i<=n-1;i++) { a[i]=y[i]; for(j=0;j<=n-1;j++) if(j!=i) a[i]*=(xx-x[j])/(x[i]-x[j]); yy+=a[i]; } free(a); return yy; } int main() { int i; int n; float x[20],y[20],xx,yy; printf("Input n:");

scanf("%d",&n); if(n<=0) { printf("Error! The value of n must in (0,20)."); getch();return 1; } for(i=0;i<=n-1;i++) { printf("x[%d]:",i); scanf("%f",&x[i]); } printf("\n"); for(i=0;i<=n-1;i++) { printf("y[%d]:",i);scanf("%f",&y[i]); } printf("\n"); printf("Input xx:"); scanf("%f",&xx); yy=lagrange(x,y,xx,n); printf("x=%f,y=%f\n",xx,yy); getch(); } 举例如下:已知当x=1,-1,2时f(x)=0,-3,4,求f(1.5)的值。

模式识别课程设计

模式识别 课程设计 关于黄绿树叶的分类问题 成员:李家伟2015020907010 黄哲2015020907006 老师:程建 学生签字:

一、小组分工 黄哲:数据采集以及特征提取。 李家伟:算法编写设计,完成测试编写报告。 二、特征提取 选取黄、绿树叶各15片,用老师给出的识别算法进行特征提取 %Extract the feature of the leaf clear, close all I = imread('/Users/DrLee/Desktop/kmeans/1.jpg'); I = im2double(I); figure, imshow(I) n = input('Please input the number of the sample regions n:'); h = input('Please input the width of the sample region h:'); [Pos] = ginput(n); SamNum = size(Pos,1); Region = []; RegionFeatureCum = zeros((2*h+1)*(2*h+1)*3,1); RegionFeature = zeros((2*h+1)*(2*h+1)*3,1); for i = 1:SamNum P = round(Pos(i,:)); rectangle('Position', [P(1) P(2) 2*h+1 2*h+1]); hold on Region{i} = I(P(2)-h:P(2)+h,P(1)-h:P(1)+h,:); RegionFeatureCum = RegionFeatureCum + reshape(Region{i},[(2*h+1)*(2*h+1)*3,1]); end hold off RegionFeature = RegionFeatureCum / SamNum 1~15为绿色树叶特征,16~30为黄色树叶特征,取n=3;h=1,表示每片叶子取三个区域,每个区域的特征为3*3*3维的向量,然后变为27*1的列向量,表格如下。

数值分析实验报告1

实验一 误差分析 实验(病态问题) 实验目的:算法有“优”与“劣”之分,问题也有“好”与“坏”之别。对数值方法的研究而言,所谓坏问题就是问题本身对扰动敏感者,反之属于好问题。通过本实验可获得一个初步体会。 数值分析的大部分研究课题中,如线性代数方程组、矩阵特征值问题、非线性方程及方程组等都存在病态的问题。病态问题要通过研究和构造特殊的算法来解决,当然一般要付出一些代价(如耗用更多的机器时间、占用更多的存储空间等)。 问题提出:考虑一个高次的代数多项式 )1.1() ()20()2)(1()(20 1∏=-=---=k k x x x x x p 显然该多项式的全部根为1,2,…,20共计20个,且每个根都是单重的。现考虑该多项式的一个扰动 )2.1(0 )(19=+x x p ε 其中ε是一个非常小的数。这相当于是对()中19x 的系数作一个小的扰动。我们希望比较()和()根的差别,从而分析方程()的解对扰动的敏感性。 实验内容:为了实现方便,我们先介绍两个Matlab 函数:“roots ”和“poly ”。 roots(a)u = 其中若变量a 存储n+1维的向量,则该函数的输出u 为一个n 维的向量。设a 的元素依次为121,,,+n a a a ,则输出u 的各分量是多项式方程 01121=+++++-n n n n a x a x a x a 的全部根;而函数 poly(v)b =

的输出b 是一个n+1维变量,它是以n 维变量v 的各分量为根的多项式的系数。可见“roots ”和“poly ”是两个互逆的运算函数。 ;000000001.0=ess );21,1(zeros ve = ;)2(ess ve = ))20:1((ve poly roots + 上述简单的Matlab 程序便得到()的全部根,程序中的“ess ”即是()中的ε。 实验要求: (1)选择充分小的ess ,反复进行上述实验,记录结果的变化并分析它们。 如果扰动项的系数ε很小,我们自然感觉()和()的解应当相差很小。计算中你有什么出乎意料的发现表明有些解关于如此的扰动敏感性如何 (2)将方程()中的扰动项改成18x ε或其它形式,实验中又有怎样的现象 出现 (3)(选作部分)请从理论上分析产生这一问题的根源。注意我们可以将 方程()写成展开的形式, ) 3.1(0 ),(1920=+-= x x x p αα 同时将方程的解x 看成是系数α的函数,考察方程的某个解关于α的扰动是否敏感,与研究它关于α的导数的大小有何关系为什么你发现了什么现象,哪些根关于α的变化更敏感 思考题一:(上述实验的改进) 在上述实验中我们会发现用roots 函数求解多项式方程的精度不高,为此你可以考虑用符号函数solve 来提高解的精确度,这需要用到将多项式转换为符号多项式的函数poly2sym,函数的具体使用方法可参考Matlab 的帮助。

《模式识别》实验报告

《模式识别》实验报告 一、数据生成与绘图实验 1.高斯发生器。用均值为m,协方差矩阵为S 的高斯分布生成N个l 维向量。 设置均值 T m=-1,0 ?? ??,协方差为[1,1/2;1/2,1]; 代码: m=[-1;0]; S=[1,1/2;1/2,1]; mvnrnd(m,S,8) 结果显示: ans = -0.4623 3.3678 0.8339 3.3153 -3.2588 -2.2985 -0.1378 3.0594 -0.6812 0.7876 -2.3077 -0.7085 -1.4336 0.4022 -0.6574 -0.0062 2.高斯函数计算。编写一个计算已知向量x的高斯分布(m, s)值的Matlab函数。 均值与协方差与第一题相同,因此代码如下: x=[1;1]; z=1/((2*pi)^0.5*det(S)^0.5)*exp(-0.5*(x-m)'*inv(S)*(x-m)) 显示结果: z = 0.0623 3.由高斯分布类生成数据集。编写一个Matlab 函数,生成N 个l维向量数据集,它们是基于c个本体的高斯分布(mi , si ),对应先验概率Pi ,i= 1,……,c。 M文件如下: function [X,Y] = generate_gauss_classes(m,S,P,N) [r,c]=size(m); X=[]; Y=[]; for j=1:c t=mvnrnd(m(:,j),S(:,:,j),fix(P(j)*N)); X=[X t]; Y=[Y ones(1,fix(P(j)*N))*j]; end end

调用指令如下: m1=[1;1]; m2=[12;8]; m3=[16;1]; S1=[4,0;0,4]; S2=[4,0;0,4]; S3=[4,0;0,4]; m=[m1,m2,m3]; S(:,:,1)=S1; S(:,:,2)=S2; S(:,:,3)=S3; P=[1/3,1/3,1/3]; N=10; [X,Y] = generate_gauss_classes(m,S,P,N) 二、贝叶斯决策上机实验 1.(a)由均值向量m1=[1;1],m2=[7;7],m3=[15;1],方差矩阵S 的正态分布形成三个等(先验)概率的类,再基于这三个类,生成并绘制一个N=1000 的二维向量的数据集。 (b)当类的先验概率定义为向量P =[0.6,0.3,0.1],重复(a)。 (c)仔细分析每个类向量形成的聚类的形状、向量数量的特点及分布参数的影响。 M文件代码如下: function plotData(P) m1=[1;1]; S1=[12,0;0,1]; m2=[7;7]; S2=[8,3;3,2]; m3=[15;1]; S3=[2,0;0,2]; N=1000; r1=mvnrnd(m1,S1,fix(P(1)*N)); r2=mvnrnd(m2,S2,fix(P(2)*N)); r3=mvnrnd(m3,S3,fix(P(3)*N)); figure(1); plot(r1(:,1),r1(:,2),'r.'); hold on; plot(r2(:,1),r2(:,2),'g.'); hold on; plot(r3(:,1),r3(:,2),'b.'); end (a)调用指令: P=[1/3,1/3,1/3];

数值分析实验报告模板

数值分析实验报告模板 篇一:数值分析实验报告(一)(完整) 数值分析实验报告 1 2 3 4 5 篇二:数值分析实验报告 实验报告一 题目:非线性方程求解 摘要:非线性方程的解析解通常很难给出,因此线性方程的数值解法就尤为重要。本实验采用两种常见的求解方法二分法和Newton法及改进的Newton法。利用二分法求解给定非线性方程的根,在给定的范围内,假设f(x,y)在[a,b]上连续,f(a)xf(b) 直接影响迭代的次数甚至迭代的收敛与发散。即若x0 偏离所求根较远,Newton法可能发散的结论。并且本实验中还利用利用改进的Newton法求解同样的方程,且将结果与Newton法的结果比较分析。 前言:(目的和意义) 掌握二分法与Newton法的基本原理和应用。掌握二分法的原理,验证二分法,在选对有根区间的前提下,必是收

敛,但精度不够。熟悉Matlab语言编程,学习编程要点。体会Newton使用时的优点,和局部收敛性,而在初值选取不当时,会发散。 数学原理: 对于一个非线性方程的数值解法很多。在此介绍两种最常见的方法:二分法和Newton法。 对于二分法,其数学实质就是说对于给定的待求解的方程f(x),其在[a,b]上连续,f(a)f(b) Newton法通常预先要给出一个猜测初值x0,然后根据其迭代公式xk?1?xk?f(xk) f'(xk) 产生逼近解x*的迭代数列{xk},这就是Newton法的思想。当x0接近x*时收敛很快,但是当x0选择不好时,可能会发散,因此初值的选取很重要。另外,若将该迭代公式改进为 xk?1?xk?rf(xk) 'f(xk) 其中r为要求的方程的根的重数,这就是改进的Newton 法,当求解已知重数的方程的根时,在同种条件下其收敛速度要比Newton法快的多。 程序设计: 本实验采用Matlab的M文件编写。其中待求解的方程写成function的方式,如下 function y=f(x);

模式识别实验报告(一二)

信息与通信工程学院 模式识别实验报告 班级: 姓名: 学号: 日期:2011年12月

实验一、Bayes 分类器设计 一、实验目的: 1.对模式识别有一个初步的理解 2.能够根据自己的设计对贝叶斯决策理论算法有一个深刻地认识 3.理解二类分类器的设计原理 二、实验条件: matlab 软件 三、实验原理: 最小风险贝叶斯决策可按下列步骤进行: 1)在已知 ) (i P ω, ) (i X P ω,i=1,…,c 及给出待识别的X 的情况下,根据贝叶斯公式计 算出后验概率: ∑== c j i i i i i P X P P X P X P 1 ) ()() ()()(ωωωωω j=1,…,x 2)利用计算出的后验概率及决策表,按下面的公式计算出采取i a ,i=1,…,a 的条件风险 ∑== c j j j i i X P a X a R 1 )(),()(ωω λ,i=1,2,…,a 3)对(2)中得到的a 个条件风险值) (X a R i ,i=1,…,a 进行比较,找出使其条件风险最小的 决策k a ,即()() 1,min k i i a R a x R a x == 则 k a 就是最小风险贝叶斯决策。 四、实验内容 假定某个局部区域细胞识别中正常(1ω)和非正常(2ω)两类先验概率分别为 正常状态:P (1ω)=; 异常状态:P (2ω)=。 现有一系列待观察的细胞,其观察值为x : 已知先验概率是的曲线如下图:

)|(1ωx p )|(2ωx p 类条件概率分布正态分布分别为(-2,)(2,4)试对观察的结果 进行分类。 五、实验步骤: 1.用matlab 完成分类器的设计,说明文字程序相应语句,子程序有调用过程。 2.根据例子画出后验概率的分布曲线以及分类的结果示意图。 3.最小风险贝叶斯决策,决策表如下: 结果,并比较两个结果。 六、实验代码 1.最小错误率贝叶斯决策 x=[ ] pw1=; pw2=; e1=-2; a1=; e2=2;a2=2; m=numel(x); %得到待测细胞个数 pw1_x=zeros(1,m); %存放对w1的后验概率矩阵 pw2_x=zeros(1,m); %存放对w2的后验概率矩阵

《模式识别基础》课程标准

《模式识别基础》课程标准 (执笔人:刘雨审阅学院:电子科学与工程学院)课程编号:08113 英文名称:Pattern Recognition 预修课程:高等数学,线性代数,概率论与数理统计,程序设计 学时安排:40学时,其中讲授32学时,实践8学时。 学分:2 一、课程概述 (一)课程性质地位 模式识别课基础程是军事指挥类本科生信息工程专业的专业基础课,通信工程专业的选修课。在知识结构中处于承上启下的重要位置,对于巩固已学知识、开展专业课学习及未来工作具有重要意义。课程特点是理论与实践联系密切,是培养学生理论素养、实践技能和创新能力的重要环节。是以后工作中理解、使用信息战中涉及的众多信息处理技术的重要知识储备。 本课程主要介绍统计模式识别的基本理论和方法,包括聚类分析,判别域代数界面方程法,统计判决、训练学习与错误率估计,最近邻方法以及特征提取与选择。 模式识别是研究信息分类识别理论和方法的学科,综合性、交叉性强。从内涵讲,模式识别是一门数据处理、信息分析的学科,从应用讲,属于人工智能、机器学习范畴。理论上它涉及的数学知识较多,如代数学、矩阵论、函数论、概率统计、最优化方法、图论等,用到信号处理、控制论、计算机技术、生理物理学等知识。典型应用有文字、语音、图像、视频机器识别,雷达、红外、声纳、遥感目标识别,可用于军事、侦探、生物、天文、地质、经济、医学等众多领域。 (二)课程基本理念 以学生为主体,教师为主导,精讲多练,以用促学,学以致用。使学生理解模式识别的本质,掌握利用机器进行信息识别分类的基本原理和方法,在思、学、用、思、学、用的循环中,达到培养理论素养,锻炼实践技能,激发创新能力的目的。 (三)课程设计思路 围绕培养科技底蕴厚实、创新能力突出的高素质人才的目标,本课程的培养目标是:使学生掌握统计模式识别的基本原理和方法,了解其应用领域和发展动态,达到夯实理论基础、锻炼理论素养及实践技能、激发创新能力的目的。 模式识别是研究分类识别理论和方法的学科,综合性、交叉性强,涉及的数学知识多,应用广。针对其特点,教学设计的思路是:以模式可分性为核心,模式特征提取、学习、分类为主线,理论上分层次、抓重点,方法上重比较、突出应用适应性。除了讲授传统的、经典的重要内容之外,结合科研成果,介绍不断出现的新理论、新方法,新技术、新应用,开拓学生视野,激发学习兴趣,培养创新能力。 教学设计以章为单元,用实际科研例子为引导,围绕基本原理展开。选择两个以上基本方法,辅以实验,最后进行对比分析、归纳总结。使学生在课程学习中达到一个思、学、用、

(完整版)哈工大-数值分析上机实验报告

实验报告一 题目:非线性方程求解 摘要:非线性方程的解析解通常很难给出,因此线性方程的数值解法就尤为重要。本实验采用两种常见的求解方法二分法和Newton法及改进的Newton法。 前言:(目的和意义) 掌握二分法与Newton法的基本原理和应用。 数学原理: 对于一个非线性方程的数值解法很多。在此介绍两种最常见的方法:二分法和Newton法。 对于二分法,其数学实质就是说对于给定的待求解的方程f(x),其在[a,b]上连续,f(a)f(b)<0,且f(x)在[a,b]内仅有一个实根x*,取区间中点c,若,则c恰为其根,否则根据f(a)f(c)<0是否成立判断根在区间[a,c]和[c,b]中的哪一个,从而得出新区间,仍称为[a,b]。重复运行计算,直至满足精度为止。这就是二分法的计算思想。

Newton法通常预先要给出一个猜测初值x0,然后根据其迭代公式 产生逼近解x*的迭代数列{x k},这就是Newton法的思想。当x0接近x*时收敛很快,但是当x0选择不好时,可能会发散,因此初值的选取很重要。另外,若将该迭代公式改进为 其中r为要求的方程的根的重数,这就是改进的Newton法,当求解已知重数的方程的根时,在同种条件下其收敛速度要比Newton法快的多。 程序设计: 本实验采用Matlab的M文件编写。其中待求解的方程写成function的方式,如下 function y=f(x); y=-x*x-sin(x); 写成如上形式即可,下面给出主程序。 二分法源程序: clear %%%给定求解区间 b=1.5; a=0;

%%%误差 R=1; k=0;%迭代次数初值 while (R>5e-6) ; c=(a+b)/2; if f12(a)*f12(c)>0; a=c; else b=c; end R=b-a;%求出误差 k=k+1; end x=c%给出解 Newton法及改进的Newton法源程序:clear %%%% 输入函数 f=input('请输入需要求解函数>>','s') %%%求解f(x)的导数 df=diff(f);

数值分析实验报告总结

数值分析实验报告总结 随着电子计算机的普及与发展,科学计算已成为现代科 学的重要组成部分,因而数值计算方法的内容也愈来愈广泛和丰富。通过本学期的学习,主要掌握了一些数值方法的基本原理、具体算法,并通过编程在计算机上来实现这些算法。 算法算法是指由基本算术运算及运算顺序的规定构成的完 整的解题步骤。算法可以使用框图、算法语言、数学语言、自然语言来进行描述。具有的特征:正确性、有穷性、适用范围广、运算工作量少、使用资源少、逻辑结构简单、便于实现、计算结果可靠。 误差 计算机的计算结果通常是近似的,因此算法必有误差, 并且应能估计误差。误差是指近似值与真正值之差。绝对误差是指近似值与真正值之差或差的绝对值;相对误差:是指近似值与真正值之比或比的绝对值。误差来源见表 第三章泛函分析泛函分析概要 泛函分析是研究“函数的函数”、函数空间和它们之间 变换的一门较新的数学分支,隶属分析数学。它以各种学科

如果 a 是相容范数,且任何满足 为具体背景,在集合的基础上,把客观世界中的研究对象抽 范数 范数,是具有“长度”概念的函数。在线性代数、泛函 分析及相关的数学领域,泛函是一个函数,其为矢量空间内 的所有矢量赋予非零的正长度或大小。这里以 Cn 空间为例, Rn 空间类似。最常用的范数就是 P-范数。那么 当P 取1, 2 ,s 的时候分别是以下几种最简单的情形: 其中2-范数就是通常意义下的距离。 对于这些范数有以下不等式: 1 < n1/2 另外,若p 和q 是赫德尔共轭指标,即 1/p+1/q=1 么有赫德尔不等式: II = ||xH*y| 当p=q=2时就是柯西-许瓦兹不等式 般来讲矩阵范数除了正定性,齐次性和三角不等式之 矩阵范数通常也称为相容范数。 象为元素和空间。女口:距离空间,赋范线性空间, 内积空间。 1-范数: 1= x1 + x2 +?+ xn 2-范数: x 2=1/2 8 -范数: 8 =max oo ,那 外,还规定其必须满足相容性: 所以

模式识别实验报告

实验一Bayes 分类器设计 本实验旨在让同学对模式识别有一个初步的理解,能够根据自己的设计对贝叶斯决策理论算法有一个深刻地认识,理解二类分类器的设计原理。 1实验原理 最小风险贝叶斯决策可按下列步骤进行: (1)在已知)(i P ω,)(i X P ω,i=1,…,c 及给出待识别的X 的情况下,根据贝叶斯公式计算出后验概率: ∑== c j i i i i i P X P P X P X P 1 ) ()() ()()(ωωωωω j=1,…,x (2)利用计算出的后验概率及决策表,按下面的公式计算出采取i a ,i=1,…,a 的条件风险 ∑== c j j j i i X P a X a R 1 )(),()(ωω λ,i=1,2,…,a (3)对(2)中得到的a 个条件风险值)(X a R i ,i=1,…,a 进行比较,找出使其条件风险最小的决策k a ,即 则k a 就是最小风险贝叶斯决策。 2实验内容 假定某个局部区域细胞识别中正常(1ω)和非正常(2ω)两类先验概率分别为 正常状态:P (1ω)=0.9; 异常状态:P (2ω)=0.1。

现有一系列待观察的细胞,其观察值为x : -3.9847 -3.5549 -1.2401 -0.9780 -0.7932 -2.8531 -2.7605 -3.7287 -3.5414 -2.2692 -3.4549 -3.0752 -3.9934 2.8792 -0.9780 0.7932 1.1882 3.0682 -1.5799 -1.4885 -0.7431 -0.4221 -1.1186 4.2532 已知类条件概率密度曲线如下图: )|(1ωx p )|(2ωx p 类条件概率分布正态分布分别为(-2,0.25)(2,4)试对观察的结果进 行分类。 3 实验要求 1) 用matlab 完成分类器的设计,要求程序相应语句有说明文字。 2) 根据例子画出后验概率的分布曲线以及分类的结果示意图。 3) 如果是最小风险贝叶斯决策,决策表如下:

MATLAB与数值分析实验报告一

MATLAB与数值分析实验报告 报告人:秦旸照 学号: 2015020901033 时间: 2016.4.8 电子科技大学电子工程学院

一、实验目的 实验一:MATLAB软件平台与程序设计实验 二、实验原理 1.熟练掌握矩阵的生成、加、减、乘、除、转置、行列式、逆、范数等运算操作。(用.m文件和Matlab函数编写一个对给定矩阵进行运算操作的程序) 2. 熟练掌握算术符号操作和基本运算操作,包括矩阵合并、向量合并、符号转换、展开符号表达式、符号因式分解、符号表达式的化简、代数方程的符号解析解、特征多项式、函数的反函数、函数计算器、微积分、常微分方程的符号解、符号函数的画图等。(用.m文件编写进行符号因式分解和函数求反的程序) 3. 掌握Matlab函数的编写规范。 4.掌握Matlab常用的绘图处理操作,包括:基本平面图、图形注释命令、三维曲线和面的填充、三维等高线等。(用.m文件编写在一个图形窗口上绘制正弦和余弦函数的图形,并给出充分的图形注释) 5. 熟练操作MATLAB软件平台,能利用M文件完成MATLAB的程序设计。 三、实验方案 1. 编程实现以下数列的图像,用户能输入不同的初始值以及系数。并以 x,y为坐标显示图像 x(n+1) = a*x(n)-b*(y(n)-x(n)^2); y(n+1) = b*x(n)+a*(y(n)-x(n)^2) 2. 编程实现奥运5环图,允许用户输入环的直径。 3. 实现对输入任意长度向量元素的冒泡排序的升序排列。 不允许使用sort函数。 四、实验结果 1. 编程实现以下数列的图像,用户能输入不同的初始值以及系数。并以 x,y为坐标显示图像

模式识别实验报告_2

模式识别理论与方法 课程作业实验报告 实验名称:Generating Pattern Classes 实验编号:Proj01-01 规定提交日期:2012年3月16日 实际提交日期:2012年3月13日 摘要: 在熟悉Matlab中相关产生随机数和随机向量的函数基础上,重点就多元(维)高斯分布情况进行了本次实验研究:以mvnrnd()函数为核心,由浅入深、由简到难地逐步实现了获得N 个d维c类模式集,并将任意指定的两个维数、按类分不同颜色进行二维投影绘图展示。 技术论述:

1,用矩阵表征各均值、协方差2,多维正态分布函数: 实验结果讨论:

从实验的过程和结果来看,进一步熟悉了多维高斯分布函数的性质和使用,基本达到了预期目的。 实验结果: 图形部分: 图1集合中的任意指定两个维度投影散点图形

图2集合中的任意指定两个维度投影散点图形,每类一种颜色 数据部分: Fa= 9.6483 5.5074 2.4839 5.72087.2769 4.8807 9.1065 4.1758 1.5420 6.1500 6.2567 4.1387 10.0206 3.5897 2.6956 6.1500 6.9009 4.0248 10.1862 5.2959 3.1518 5.22877.1401 3.1974 10.4976 4.9501 1.4253 5.58257.4102 4.9474 11.3841 4.5128 2.0714 5.90068.2228 4.4821 9.6409 5.43540.9810 6.2676 6.9863 4.2530 8.8512 5.2401 2.7416 6.5095 6.1853 4.8751 9.8849 5.8766 3.3881 5.7879 6.7070 6.6132 10.6845 4.8772 3.4440 6.0758 6.6633 3.5381 8.7478 3.3923 2.4628 6.1352 6.9258 3.3907

相关主题
文本预览
相关文档 最新文档