昆明理工大学人工智能大报告 房价问题Word格式.docx
- 文档编号:20558130
- 上传时间:2023-01-24
- 格式:DOCX
- 页数:12
- 大小:340.89KB
昆明理工大学人工智能大报告 房价问题Word格式.docx
《昆明理工大学人工智能大报告 房价问题Word格式.docx》由会员分享,可在线阅读,更多相关《昆明理工大学人工智能大报告 房价问题Word格式.docx(12页珍藏版)》请在冰豆网上搜索。
年月日
一、上机目的及内容
1.上机内容:
用于预测房价的线性回归(一元或二元的例子)
2.上机目的:
(1)掌握线性回归的实质;
(2)能够用MATLAB实现线性回归。
二、实验原理及基本技术路线图(方框原理图或程序流程图)、步骤
这个试验我采用机器学习的方法来进行实现,所谓的机器学习就是通过开始的时候拿数据(训练数据)给机器学习,当训练完成获得技能后,再将待测数据拿给机器进行解决,看效果如何,如果效果不好则返回去继续学习,直到能完美的解决数据后才算毕业。
流程图如下:
那么学习算法是如何工作的呢?
下面给出学习算法的流程图:
得到了训练数据之后就要进行实战演练,用x表示住房面积,可以得到一个目标函数
接下来用梯度下降法来得到minJ(
)
步骤:
①设置
的初始值(可任意设置,一般设置为0)
②按如下算法迭代修改
,直到J(
)最小或
收敛
(对所有的
求偏导数),α:
学习率(每次迭代的步长)流程图如下:
迭代之后的J(θ)是一抛物线
房价预测的具体步骤:
(1)用MATLAB生成训练数据,分别是sizeX.dat和priceY.dat;
(2)取测试数据,分别附给x和y;
(3)定义最大迭代次数,以及学习率,通过梯度下降法,进行迭代
grad=(1/m).*x'
*((x*theta)-y)
theta=theta-alpha.*grad
(4)如果没有得到预期目的,返回(3);
(5)如果得到回归曲线则停止,输出图形,否则返回(3)。
三、所用仪器、材料(设备名称、型号、规格等或使用软件),
1台PC及MATLAB软件
四、实验方法(或:
程序代码或操作过程)
首先生成训练数据;
cd'
D:
\我的文档\MATLAB'
%设置当前工作路径为桌面,每个人的路径不一样的
pwd%查看当前工作路径
x=[0.36;
0.44;
0.55;
0.64;
0.76;
0.87;
0.90;
1.21;
1.34;
1.67;
2.04;
2.26;
2.38;
2.43;
2.65;
3.22]%单位:
百平米
y=[0.275;
0.312;
0.408;
0.499;
0.513;
0.696;
0.766;
0.935;
0.925;
1.188;
1.356;
1.559;
1.618;
1.604;
1.961;
1.932]%单位:
百万元
t=ones(16,1)
x=[t,x]%x增加一列
savesizeX.datx-ascii;
%测试数据保存到文件
savepriceY.daty-ascii;
运行代码:
x=load('
sizeX.dat'
)%取测试数据,赋给xx
y=load('
priceY.dat'
m=length(y);
%m保存测试数据数,16条
figure;
plot(x(:
2),y,'
o'
)%画出数据点
xlabel('
百平米'
);
ylabel('
百万元'
theta=zeros(2,1);
fori=1:
200%迭代200次
*((x*theta)-y);
%求梯度
theta=theta-0.05.*grad;
%0.05是学习率
end
theta%打印最终theta值
holdon;
2),x*theta,'
-'
%Exercise2LinearRegression
%forhouse
%
%xreferstoahouse'
sarea
%yisahouse'
sprice
clearall;
closeall;
clc%清空所有记录和关闭之前打开的所有窗口
x=load('
ex2x.dat'
%从ex2x.da这个数据包中下载数据到x
y=load('
ex2y.dat'
%从ex2y.dat这个数据包中下载数据在y
m=length(y);
%numberoftrainingexamples
%定义训练的样本(y)的长度或大小
%Plotthetrainingdata(开始训练函数)
%openanewfigurewindow(打开一个新的窗口)
plot(x,y,'
%定义输出样本用O表示
priceofx*100万元'
)%定义y轴的值为住房的房价
areaofx*60squaremeter'
)%定义x轴的值为住房的面积,单位为平方米
%Gradientdescent
x=[ones(m,1)x]%Addacolumnofonestox(添加到x的那些列:
就是将m设为1的那些列)
theta=zeros(size(x(1,:
)))'
%initializefittingparameters(对theta进行初始化)
%将x中第一行和所有列初始化
MAX_ITR=5000;
%训练或者是迭代的最大次数为5000次
alpha=0.07;
%定义学习率为0.07
fornum_iterations=1:
MAX_ITR%梯度下降发开始,对回归函数开始迭代,从1到1500
%Thisisavectorizedversionofthe
%gradientdescentupdateformula
%It'
salsofinetousethesummationformulafromthevideos
%Hereisthegradient
grad=(1/m).*x'
%梯度下降发函数实现语句
%Hereistheactualupdate
theta=theta-alpha.*grad;
%计算theta的值
%Sequentialupdate:
Thewrongwaytodogradientdescent
%grad1=(1/m).*x(:
1)'
%theta
(1)=theta
(1)+alpha*grad1;
%grad2=(1/m).*x(:
2)'
%theta
(2)=theta
(2)+alpha*grad2;
%printthetatoscreen
theta
%Plotthelinearfit
%keeppreviousplotvisible
)%寻找一个最低点,并将其输出来
legend('
Trainingdata'
'
Linearregression'
)%对数据进行训练
holdoff%don'
toverlayanymoreplotsonthisfigure
%Closedformsolutionforreference
%Youwilllearnaboutthismethodinfuturevideos
exact_theta=(x'
*x)\x'
*y%确定theta值
%Predictvaluesforarea120and150
predict1=[80,120]*theta%预测距离工作地80万,120平米的住房是否符合训练样本的规律
predict2=[110,150]*theta%预测距离工作地110万,150平米的住房是否符合训练样本的规律
%CalculateJmatrix
%GridoverwhichwewillcalculateJ
theta0_vals=linspace(-3,3,100);
%theta0的值为-3到3,并分割为100等分,并将其用等高线输出
theta1_vals=linspace(-1,1,100);
%theta1的值为-1到1,并分割为100等分
%initializeJ_valstoamatrixof0'
s
J_vals=zeros(length(theta0_vals),length(theta1_vals))
fori=1:
length(theta0_vals)%开始迭代,i从1到1500
forj=1:
length(theta1_vals)%开始迭代,j从1到1500
t=[theta0_vals(i);
theta1_vals(j)];
J_vals(i,j)=(0.5/m).*(x*t-y)'
*(x*t-y);
end
%Becauseofthewayhouseinthesurfcommand,weneedto
%transposeJ_valsbeforecallingsurf,orelsetheaxeswillbeflipped
J_vals=J_vals'
;
%将J_vals'
矩阵付给J_vals
%Surfaceplot
surf(theta0_vals,theta1_vals,J_vals)%利用surf函数求theta0_vals、theta1_vals、J_vals的值
\theta_0'
ylabel('
\theta_1'
%x轴表示theta_0,y轴表示theta_1
%Contourplot
%PlotJ_valsas15contoursspacedlogarithmicallybetween0.01and100
contour(theta0_vals,theta1_vals,J_vals,logspace(-2,2,15))%输出梯度下降中的最低点,用等高线表示
五、运行截图
六、实验总结
在这个试验中,采用了梯度下降法在实现,梯度下降的原理可以理解为:
将函数比作一座山,我们站在某个山坡上,往四周看,从哪个方向向下走一小步,能够下降的最快;
梯度下降法有以下特点
(1)初始点不同,获得的最小值也不同,因此梯度下降求得的只是局部最小值;
(2)越接近最小值时,下降速度越慢;
通过实现掌握和了解了线性回归的基本特性,通过实验编程实现了住房价格和面积之间关系的线性分析。
在实验中遇到了很多的问题:
一开始的时候对软件不是很熟悉,不知道如何将数据写到数据包中,后来在老师的帮助下,解决了这个问题。
数据写到数据包有两种方式:
一是在matlab软件中手工输入或随机生成数据,然后用命令程序写到数据包(保存为数据包的形式);
而是利用存储技术,也就是利用数据库语言生成数据包;
其次遇到的问题是,迭代中出现了了问题,后来发现自己没有初始化学习率;
最后的问题是,画不出图像,经过老师的帮助和自己的努力,最后实现了。
总之,在这次实验中不但对MATLAB有了进一步的了解和认识,同时也获得了很多宝贵的经验和知识。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 昆明理工大学人工智能大报告 房价问题 昆明 理工大学 人工智能 大报 房价 问题