全球旧事资料 分类
0,1之间,选择这样一个函数:
hxgTx
11e
Tx
Py1x
有了这个函数,对于对于一个样例,就可以得到它分类的概率值:
Py1xhxPy0x1hx
将上述公式组合起来,就可以得到公式如下:
y1yPyx(hx)1hx
而在logistic回归问题中的损失函数与线性回归中的损失函数不同,这里定义的为:
对上式求最大似然估计并用梯度下降法求解极值,得到参数的更新迭代公式:
yihxixji
i1
m
f根据上式,将预测得到的x
i
数据的分类hx
i
,标准分类yi带入上式
并迭代,直至算法收敛,就可以得到最终的参数。
3编程实现步骤:
(1)初始化参数,迭代步长;(2)导入数据;(3)计算损失函数;(4)梯度下降法求解;(5)参数更新;(6)测试数据,得到准确率。
4程序代码及解释:
clearall因为logistic只能进行2分类,而Yalea
dORL数据中却有很多类,从中选择两类的话难免数据两太少,所以,本程序用到了weather数据,同样可以进行正确的练习AloadC\UserslisaiDesktopweathermatdataADatalabelALabel原始数据有多类,但是由于logisticregressio
只能进行两分类的任务,所以,把数据的第二、三类挑出来,作为要处理数据的第0、1类。selectfi
dlabel1datadataselectlabellabelselectlabellabel20labellabel31dsizesizedatara
ra
dpermdsize1datadatara
labellabelra
o
esColumo
esdsize11datadatao
esColumtrai
_datadata1300随机选择测试样本和训练样本。test_datadata301dsize1test_labellabel301dsize1trai
_labellabel1300thetasizedsize21thetazerosthetasize1初始化theta的值。esp000001lossi
fiter0maxiter10000定义最大迭代次数,防止算法不收敛
falpha01初始化JalphaJ0flag1whileflagitermaxiterhypothesistrai
_datathetafori1300hypothesisi11exphypothesisie
dloss0更新theta值forj1thetasizeupdatahypothesistrai
_labeltrai
_datajalphathetajthetajupdatae
dJ_oldJfori1300计算损失函数JJhypothesisitrai
_labeli2e
difabsJJ_oldesp判断损失函数值是否收敛flag0e
diteriter1e
diterright0fori160对测试样本进行测试,计算准确率hypo11exptest_dataithetaifhypo05iftest_labeli1rightright1e
delseiftest_labeli0rightright1e
de
de
daccright60
5运行结果:
f6反思总结:
老师给的数据有好多种类,不适合用logistic进行分类,所以从中选择了两类数据进行分类。在r
好听全球资料 返回顶部