码迷,mamicode.com
首页 > 编程语言 > 详细

郑捷《机器学习算法原理与编程实践》学习笔记(第七章 预测技术与哲学)7.1 线性系统的预测

时间:2017-02-17 14:56:47      阅读:256      评论:0      收藏:0      [点我收藏+]

标签:.so   loaddata   rip   数据文件   回归   算法   append   float   self   

 7.1.1 回归与现代预测

 7.1.2 最小二乘法

 7.1.3 代码实现

(1)导入数据

def loadDataSet(self,filename):     #加载数据集
    X = [];Y = []
    fr = open(filename)
    for line in fr.readlines():
        curLine = line.strip().split(\t)
        X.append(float(curLine[0]))
        Y.append(float(curLine[-1]))
    return X,Y
(2)绘制图形函数
# (2)绘制图形函数
def plotscatter(Xmat,Ymat,a,b,plt):
    fig = plt.figure()
    ax  = fig.add_subplot(111) #绘制图形位置
    ax.scatter(Xmat,Ymat,c=blue,marker=o)#绘制散点图
    Xmat.sort()                #对Xmat元素进行排序
    yhat = [a.float(xi)+b for xi in Xmat] #计算预测值
    plt.plot(Xmat,yhat,r)
    plt.show()
    return  yhat

(3)主函数

 

Xmat,Ymat = loadDataSet("regdataset.txt") #导入数据文件
meanX     = mean(Xmat)                      #原始数据的均值
meanY     = mean(Ymat)                      #原始数据的均值
dX        = Xmat-meanX                      #各元素与均值的差
dY        = Ymat-meanY                      #各元素与均值的差
#手工计算
# sumXY = 0;Sqx = 0
# for i in xrange(len(dx)):
#     sumXY += double(dx[i])*double(dy[i])
#     Sqx   = double(dX[i])**2

sumXY = vdot(dX,dY) #返回两个向量的点乘multiply
Sqx   = sum(power(dX,2))#向量的平方:(X-meanX)^2

#计算斜率和截距
a = sumXY/Sqx
b = meanY-a*meanX
print a,b
#绘制图形
plotscatter(Xmat,Ymat,a,b,plt)
 7.1.4 正规方程组法
7.1.5 正规方程组的代码实现
 
#数据矩阵,分类标签
xArr,yArr = loadDataSet("regdataset.txt") #导入数据文件

m = len(xArr) #生成X坐标列
Xmat = mat(ones((m,2)))
for i in xrange(m):
    Xmat[i,1] = xArr[i]
Ymat = mat(yArr).T   #转化为Y列
xTx = Xmat.T*Xmat

ws = [] #直线的斜率和截距
if linalg.det(xTx) != 0.0:    #行列式不为0
    ws = linalg.inv(Xmat.T*Xmat)*(Xmat.T*Ymat)#矩阵的正规方程组的公式:inv(X.T*X)*X.T*Y
else:
    print  u"矩阵为奇异阵,无逆矩阵"
    sys.exit(0)#退出程序
print  "ws:",ws
 

资料来源:郑捷《机器学习算法原理与编程实践》 仅供学习研究

郑捷《机器学习算法原理与编程实践》学习笔记(第七章 预测技术与哲学)7.1 线性系统的预测

标签:.so   loaddata   rip   数据文件   回归   算法   append   float   self   

原文地址:http://www.cnblogs.com/wuchuanying/p/6409176.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!