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

Posted 金秀

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了郑捷《机器学习算法原理与编程实践》学习笔记(第七章 预测技术与哲学)7.1 线性系统的预测相关的知识,希望对你有一定的参考价值。

 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 线性系统的预测的主要内容,如果未能解决你的问题,请参考以下文章

郑捷《机器学习算法原理与编程实践》学习笔记(第四章 推荐系统原理)kmeans

郑捷《机器学习算法原理与编程实践》学习笔记(第六章 神经网络初步)6.5 Boltzmann机算法

郑捷《机器学习算法原理与编程实践》学习笔记(第二章 中文文本分类—朴素贝叶斯算法)

郑捷《机器学习算法原理与编程实践》学习笔记(第三章 决策树的发展)_Scikit-learn与回归树

郑捷《机器学习算法原理与编程实践》学习笔记(第六章 神经网络初步)6.3 自组织特征映射神经网路(SMO)

机器学习之逐次下降法(机器学习算法原理与实践)郑捷