python sklearn机器学习入门之logistic

记录一下使用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)