数学建模社区-数学中国

标题: 求用MATLAB编程 [打印本页]

作者: rainnic    时间: 2012-11-19 16:07
标题: 求用MATLAB编程
已知数据{(1.6, 0),(1.9, 1),(1.88, 1),(1.7, 0),(1.85, 1),(1.6, 0),(1.7, 0),(1.8, 1),(1.95, 1),(1.9, 1),(1.8, 1),(1.75, 1)}。其中前面的数据表示身高,后面的数据对应类别矮和高。
(1)分割技术用于分类
假设线性回归公式为y=c0+ε,需要找到最优的值c0将身高的数值分割为矮和高两类。编程求出最优的c0。
方法:由训练数据可得 的值为{1.6, 1.9, 1.88, 1.7, 1.85, 1.6, 1.7, 1.8, 1.95, 1.9, 1.8, 1.75}。
极小化

对c0取导数并令其为零,可得

求解c0并画出分割图。

用所求分割值对如下身高数据做出分类。
1.51, 1.56, 1.61, 1.66, 1.71, 1.76, 1.81, 1.86, 1.91, 1.96


(2)一元线性回归预测技术
利用带有一个变量的回归公式:y=c0+c1*x1+ε
极小化

分别对c0和c1取偏导数并令其为零,可得




编程计算c1和c0得到回归方程y = c1*x+c0并画出预测分类图。


(3)用所求线性回归方程对如下身高数据做出分类。
1.51, 1.56, 1.61, 1.66, 1.71, 1.76, 1.81, 1.86, 1.91, 1.96
比较两种方法的分类结果有何异同?

提示:可用如下代码实现函数的求导运算
若函数x^2对x进行求导
syms x;    %定义符号变量
a = diff('x^2',x);

可使用solve函数对方程x^2=0进行求解
syms x;
a = solve('x^2');
b = double(a);    %把sym类型转换为double类型

使用solve函数对方程组x+y=0和x-y=10进行求解
syms x y;
a = solve('x+y=0',’x-y=10’);    %或者可以写成a = solve('x+y',’x-y-10’);
x = double(a.x);
y = double(a.y);           %所得结果为结构体a,可用a.x和a.y查看方程组x和y的解,
                                                并使用double()进行类型转换





欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5