好贷网好贷款

机器学习8回归问题

发布时间:2016-12-5 4:28:26 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"机器学习8回归问题",主要涉及到机器学习8回归问题方面的内容,对于机器学习8回归问题感兴趣的同学可以参考一下。

对于之前在分类问题中有逻辑回归,而对于这个线性回归以前一般是先讲述,将线性回归的结果通过函数映射到(0,1)区间,再以0.5作为区分形成分类问题。 具体的计算方法,在以前的blogs提到过,参考:http://www.cnblogs.com/fengbing/archive/2013/05/15/3079033.html 下面就直接实战 跟之前一样,第一步导入数据。 def loadDataSet(fileName): numFeat = len(open(fileName).readline().split('\t')) - 1 dataMat = []; labelMat = [] fr = open(fileName) for line in fr.readlines(): lineArr =[] curLine = line.strip().split('\t') for i in range(numFeat): lineArr.append(float(curLine[i])) dataMat.append(lineArr) labelMat.append(float(curLine[-1])) return dataMat,labelMat 下一步作者给出标准的回归函数 具体代码如下: def standRegres(xArr,yArr): xMat = mat(xArr); yMat = mat(yArr).T xTx = xMat.T*xMat if linalg.det(xTx) == 0.0: print "This matrix is singular, cannot do inverse" return ws = xTx.I * (xMat.T*yMat) return ws 这边先计算了xTx的行列式,考虑其是否可逆。对于ws的计算化简一下就是上面的式子,这边x跟θ都是向量可以互换。linalg是NumPy中提供的线性代数的库 运行: >>> import regression >>> xArr,yArr = regression.loadDataSet('ex0.txt') >>> ws = regression.standRegres(xArr,yArr) >>> ws matrix([[ 3.00774324], [ 1.69532264]]) 这样我们的拟合函数就计算出来了. 线性回归有一个问题就是可能出现欠拟合的问题,如果数据欠拟合的话,那就不能取得很好的预测效果,所以引入一些偏差,从而降低预测的均方误差。 局部加权也就是给每个点赋予一定的权重,离预测点靠近的点权重大一些,采用高斯核。 具体代码如下: def lwlr(testPoint,xArr,yArr,k=1.0): xMat = mat(xArr); yMat = mat(yArr).T m = shape(xMat)[0] weights = mat(eye((m))) for j in range(m): #next 2 lines create weights matrix diffMat = testPoint - xMat[j,:] # weights[j,j] = exp(diffMat*diffMat.T/(-2.0*k**2)) xTx = xMat.T * (weights * xMat) if linalg.det(xTx) == 0.0: print "This matrix is singular, cannot do inverse" return ws = xTx.I * (xMat.T * (weights * yMat)) return testPoint * ws 线性回归比较容易,在深度学习入门的时候就是线性回归,书的后续的几个例子挺好的,后续介绍。

上一篇:gentoo kde
下一篇:机器学习9树回归

相关文章

相关评论