美文网首页
python sklearn机器学习入门之logistic

python sklearn机器学习入门之logistic

作者: 子龙爱弹琴 | 来源:发表于2018-09-15 23:43 被阅读53次

    记录一下使用sklearn做逻辑回归的一些代码,避免忘掉

    使用到的库主要是matplotlib.pyplot(用来画图),numpy(做一些数组和矩阵运算),sklearn(用来做机器学习的算法库包括了基本全部的机器学习算法呢)

    1. 加载一些库
    import matplotlib.pyplot as plt
    import numpy
    from sklearn import linear_model
    
    1. 数据处理的函数
    def loadDataSet(fileName):
        """
        对文件进行逐行解析,从而得到第行的类标签和整个特征矩阵
        Args:
            fileName 文件名
        Returns:
            dataMat  特征矩阵
            labelMat 类标签
        """
        dataMat = []
        labelMat = []
        fr = open(fileName)
        for line in fr.readlines():
            lineArr = line.strip().split('\t')
            dataMat.append([float(lineArr[0]), float(lineArr[1])])
            labelMat.append(float(lineArr[2]))
        return dataMat, labelMat
    
    1. 加载数据,训练算法
    dataMat, labelMat = loadDataSet('../dataSets/logistic/TextSet.txt') # 加载数据
    
    reg = linear_model.LinearRegression() # 加载线性逻辑回归模型
    reg.fit(dataMat, labelMat) #训练一下模型
    
    1. 用matplotlib画图显示一下分类直线
    b = reg.intercept_  # 模型训练完之后可以通过intercept_可以得到截距
    w1 = reg.coef_[0] # coef记录的是模型中各个特征的权重w的值
    w2 = reg.coef_[1]
    x = numpy.linspace(-4, 4, 10) # 随机生成-4到4之间的10个数
    y = -(b + w1 * x)/w2 #分类直线方程为:w1*x+w2*y+b=0从而计算出y的值
    
    plt.plot(x, y) #画一下(x,y)的直线
    
    1. 画出数据的样子
    length = len(labelMat)
    
    blackLists = []  # 正分类点集合
    redLists = [] #负分类点集合
    for i in range(length):
        if labelMat[i] == 1:
            blackLists.append(dataMat[i])
        else:
            redLists.append(dataMat[i])
    
    blackLists = numpy.array(blackLists)
    redLists = numpy.array(redLists)
    
    plt.scatter(blackLists[:,0], blackLists[:,1],  color='black') # 画点
    plt.scatter(redLists[:,0], redLists[:,1],  color='red') # 画点
    
    1. 显示图像
    plt.show()
    

    得到如下分类图片


    image.png

    相关文章

      网友评论

          本文标题:python sklearn机器学习入门之logistic

          本文链接:https://www.haomeiwen.com/subject/jaetnftx.html