昆明理工大学人工智能大报告 房价问题Word格式.docx

上传人:b****6 文档编号:20558130 上传时间:2023-01-24 格式:DOCX 页数:12 大小:340.89KB
下载 相关 举报
昆明理工大学人工智能大报告 房价问题Word格式.docx_第1页
第1页 / 共12页
昆明理工大学人工智能大报告 房价问题Word格式.docx_第2页
第2页 / 共12页
昆明理工大学人工智能大报告 房价问题Word格式.docx_第3页
第3页 / 共12页
昆明理工大学人工智能大报告 房价问题Word格式.docx_第4页
第4页 / 共12页
昆明理工大学人工智能大报告 房价问题Word格式.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

昆明理工大学人工智能大报告 房价问题Word格式.docx

《昆明理工大学人工智能大报告 房价问题Word格式.docx》由会员分享,可在线阅读,更多相关《昆明理工大学人工智能大报告 房价问题Word格式.docx(12页珍藏版)》请在冰豆网上搜索。

昆明理工大学人工智能大报告 房价问题Word格式.docx

年月日

一、上机目的及内容

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有了进一步的了解和认识,同时也获得了很多宝贵的经验和知识。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1