zoukankan      html  css  js  c++  java
  • 机器学习实战 logistic回归 python代码

    # -*- coding: utf-8 -*-
    """
    Created on Sun Aug 06 15:57:18 2017
    
    @author: mdz
    """
    '''http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=9162199&id=4223505'''
    import numpy as np
    #读取数据
    def loadDataSet():
        dataList=[];labelList=[]
        fr=open('testSet.txt')
        for line in fr.readlines():
            lineArr=line.strip().split()
            dataList.append([1.0,float(lineArr[0]),float(lineArr[1])])
            labelList.append(int(lineArr[2]))
        return dataList,labelList
    #引入Logistic函数
    def sigmoid(inx):
        return 1.0/(1+np.exp(-inx))
    #梯度下降法拟合回归系数
    def gradAscent(dataList,labelList):
        dataMat=np.mat(dataList)
        labelMat=np.mat(labelList).transpose()
        m,n=np.shape(dataMat)
        alpha=0.001
        maxCycles=500
        weights=np.ones((n,1))
        for k in range (maxCycles):
            h=sigmoid(dataMat*weights)
            error=(labelMat-h)
            weights=weights+alpha*dataMat.transpose()*error
        return weights 
    #画图呈现分类效果
    def plotBestFit(weights,dataList,labelList):
        import matplotlib.pyplot as plt
        weights=weights.getA()#返回narray
        dataArr=np.array(dataList)
        n=np.shape(dataArr)[0]
        xcord1=[];ycord1=[]
        xcord2=[];ycord2=[]
        for i in range(n):
            if int (labelList[i])==1:
                xcord1.append(dataArr[i][1]);ycord1.append(dataArr[i][2])
            else:
                xcord2.append(dataArr[i][1]);ycord2.append(dataArr[i][2])
        fig=plt.figure()
        ax=fig.add_subplot(111)
        ax.scatter(xcord1,ycord1,s=100,c='red',marker='s')
        ax.scatter(xcord2,ycord2,s=100,c='green',marker='o')
        x=np.arange(-3.0,3.0,0.1)
        y=(-weights[0]-weights[1]*x)/weights[2]
        ax.plot(x,y)
        plt.xlabel('X1')
        plt.ylabel('X2')
        plt.show()
        
    #脚本
    '''import temp
    dataList,labelList=temp.loadDataSet()
    weights=temp.gradAscent(dataList,labelList)
    temp.plotBestFit(weights,dataList,labelList)'''
    testSet.txt
    '''

    -0.017612 14.053064 0
    -1.395634 4.662541 1
    -0.752157 6.538620 0
    -1.322371 7.152853 0
    0.423363 11.054677 0
    0.406704 7.067335 1
    0.667394 12.741452 0
    -2.460150 6.866805 1
    0.569411 9.548755 0
    -0.026632 10.427743 0
    0.850433 6.920334 1
    1.347183 13.175500 0
    1.176813 3.167020 1
    -1.781871 9.097953 0
    -0.566606 5.749003 1
    0.931635 1.589505 1
    -0.024205 6.151823 1
    -0.036453 2.690988 1
    -0.196949 0.444165 1
    1.014459 5.754399 1
    1.985298 3.230619 1
    -1.693453 -0.557540 1
    -0.576525 11.778922 0
    -0.346811 -1.678730 1
    -2.124484 2.672471 1
    1.217916 9.597015 0
    -0.733928 9.098687 0
    -3.642001 -1.618087 1
    0.315985 3.523953 1
    1.416614 9.619232 0
    -0.386323 3.989286 1
    0.556921 8.294984 1
    1.224863 11.587360 0
    -1.347803 -2.406051 1
    1.196604 4.951851 1
    0.275221 9.543647 0
    0.470575 9.332488 0
    -1.889567 9.542662 0
    -1.527893 12.150579 0
    -1.185247 11.309318 0
    -0.445678 3.297303 1
    1.042222 6.105155 1
    -0.618787 10.320986 0
    1.152083 0.548467 1
    0.828534 2.676045 1
    -1.237728 10.549033 0
    -0.683565 -2.166125 1
    0.229456 5.921938 1
    -0.959885 11.555336 0
    0.492911 10.993324 0
    0.184992 8.721488 0
    -0.355715 10.325976 0
    -0.397822 8.058397 0
    0.824839 13.730343 0
    1.507278 5.027866 1
    0.099671 6.835839 1
    -0.344008 10.717485 0
    1.785928 7.718645 1
    -0.918801 11.560217 0
    -0.364009 4.747300 1
    -0.841722 4.119083 1
    0.490426 1.960539 1
    -0.007194 9.075792 0
    0.356107 12.447863 0
    0.342578 12.281162 0
    -0.810823 -1.466018 1
    2.530777 6.476801 1
    1.296683 11.607559 0
    0.475487 12.040035 0
    -0.783277 11.009725 0
    0.074798 11.023650 0
    -1.337472 0.468339 1
    -0.102781 13.763651 0
    -0.147324 2.874846 1
    0.518389 9.887035 0
    1.015399 7.571882 0
    -1.658086 -0.027255 1
    1.319944 2.171228 1
    2.056216 5.019981 1
    -0.851633 4.375691 1
    -1.510047 6.061992 0
    -1.076637 -3.181888 1
    1.821096 10.283990 0
    3.010150 8.401766 1
    -1.099458 1.688274 1
    -0.834872 -1.733869 1
    -0.846637 3.849075 1
    1.400102 12.628781 0
    1.752842 5.468166 1
    0.078557 0.059736 1
    0.089392 -0.715300 1
    1.825662 12.693808 0
    0.197445 9.744638 0
    0.126117 0.922311 1
    -0.679797 1.220530 1
    0.677983 2.556666 1
    0.761349 10.693862 0
    -2.168791 0.143632 1
    1.388610 9.341997 0
    0.317029 14.739025 0

      '''

    认准了,就去做,不跟风,不动摇
  • 相关阅读:
    [BZOJ1222/Luogu2224][HNOI2001]产品加工
    [BZOJ1079/Luogu2476][SCOI2008]着色方案
    [BZOJ3098]Hash Killer II
    [BZOJ1818][CQOI2010]内部白点
    [BZOJ1497/Luogu4174][NOI2006]最大获利
    [BZOJ2330/Luogu3275][SCOI2011]糖果
    [BZOJ1208/Luogu2286][HNOI2004]宠物收养场
    [BZOJ1054/Luogu4289][HAOI2008]移动玩具
    Com组件介绍
    webBrowse官方说明
  • 原文地址:https://www.cnblogs.com/mdz-great-world/p/7295282.html
Copyright © 2011-2022 走看看