python机器学习记录3、岭回归、局部回归、向前逐步回归

  • 注释:Ctrl+K Ctrl+C;取消注释:Ctrl+K Ctrl+U
  • 单元线性回归,单元指的是一个属性,有m个样本。python机器学习记录3、岭回归、局部回归、向前逐步回归_第1张图片

多元线性回归,多元是指有n个属性,m个样本。

 

python机器学习记录3、岭回归、局部回归、向前逐步回归_第2张图片

  •  多元回归部分代码:用五个样本更新权重,numiter是迭代次数。loss是损失函数。
  •     for j in range(numIter):
           for i in range(l):
               h= sigmoid(dataMatrix[i:i+5]*weights)
               error = labelMat[i:i+5]-h
               weights = weights + alpha * dataMatrix[i:i+5,:].T*error
               loss= (labelMat[i:i+5].T)*log(abs(h))+((1-labelMat[i:i+5]).T)*log(abs(1-h))
           sum_loss.append(sum(loss)/m)

  • 报错:SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 112-113: truncated \uXXXX escape
出错的代码:
scrapePage(lgX, lgY,'E:\aastudy\研一下\机器学习\lego10196.html', 2009, 3263, 249.99)

改正为:scrapePage(lgX, lgY,r'E:\aastudy\研一下\机器学习\lego10196.html', 2009, 3263, 249.99)

  •  dot:矩阵相乘
  • 局部回归,有个回归系数k,回归结果不同
  • 岭回归:表现出变量的重要程度,从而删除一些变量,具体作用参考大神的:岭回归总结_weixin_41911765的博客-CSDN博客_岭回归的作用
  • 向前逐步回归:找出变量的重要性,下一次只引入重要的新变量。
  • 乐高模型预测,机器学习实战这本书上的部分代码不可用,改成下面的代码
    def scrapePage(lgX, lgY,inFile,yr,numPce,origPrc):
        fr = open(inFile,'r',encoding='UTF-8'); #fw=open(outFile,'a') #a is append mode writing
        soup = BeautifulSoup(fr.read())
        i=1
        currentRow = soup.findAll('table', r="%d" % i)
        while(len(currentRow)!=0):
            currentRow = soup.findAll('table', r="%d" % i)
            title = currentRow[0].findAll('a')[1].text
            lwrTitle = title.lower()
            ###查找是否有全新标签
            if (lwrTitle.find('new') > -1) or (lwrTitle.find('nisb') > -1):
                newFlag = 1.0
            else:
                newFlag = 0.0
            #查找是否已经标志出售,只收集已出售的数据
            soldUnicde = currentRow[0].findAll('td')[3].findAll('span')
            if len(soldUnicde)==0:
                print ('item #%d did not sell' % i)
            else:
                #解析当前价格
                soldPrice = currentRow[0].findAll('td')[4]
                priceStr = soldPrice.text
                priceStr = priceStr.replace('$','') #strips out $
                priceStr = priceStr.replace(',','') #strips out ,
                if len(soldPrice)>1:
                    priceStr = priceStr.replace('Free shipping', '') #strips out Free Shipping
                sellingPrice=float(priceStr)
                #去掉不完整的价格
                if  sellingPrice > origPrc * 0.5:
                    print ("%d\t%d\t%d\t%f\t%f" % (yr,numPce,newFlag,origPrc, sellingPrice))
                    lgX.append([yr, numPce, newFlag, origPrc])
                    lgY.append(sellingPrice)
    
            i += 1
            currentRow = soup.findAll('table', r="%d" % i)
       
    
    #读取六种套装的价格,并生成数据矩阵
    def setDataCollect(lgX, lgY):
        scrapePage(lgX, lgY,r'E:/aastudy/研一下/机器学习/lego10030.html', 2006, 800, 49.99)#改成自己文件所在的位置
        scrapePage(lgX, lgY,r'E:/aastudy/研一下/机器学习/lego10030.html', 2002, 3096, 269.99)
        scrapePage(lgX, lgY,r'E:/aastudy/研一下/机器学习/lego10179.html', 2007, 5195, 499.99)
        scrapePage(lgX, lgY,r'E:/aastudy/研一下/机器学习/lego10181.html', 2007, 3428, 199.99)
        scrapePage(lgX, lgY,r'E:/aastudy/研一下/机器学习/lego10189.html', 2008, 5922, 299.99)
        scrapePage(lgX, lgY,r'E:/aastudy/研一下/机器学习/lego10196.html', 2009, 3263, 249.99)
    

你可能感兴趣的:(机器学习,机器学习,python,回归)