求用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()进行类型转换
页:
[1]