资源简介

内含完整的逻辑回归数据集,已经逻辑回归训练,训练完成后的模型测试部分(包括代码和完成数据集),用python3编码,可直接运行。训练完成后可直接显示点的颜色和分布,以及训练得到的直线。

资源截图

代码片段和文件信息

# coding:UTF-8
import numpy as np


# 逻辑回归训练模型用函数
def sig(x):
    “““
    # sigmoid函数
    :param x:
    :return:
    “““
    return 1.0 / (1 + np.exp(-x))


def load_file(filename):
    “““
    input:filename(string)训练数据的位置
    output:feature_data(mat)特征
            label_data(mat)标签
    “““
    f = open(filename)  # 打开文件
    feature_data = []
    label_data = []
    for line in f.readlines():
        feature_tmp = []
        label_tmp = []
        lines = line.strip().split(‘\t‘)  # strip移除末尾换行符   #通过指定分隔符对字符串进行切片
        feature_tmp.append(1)  # 偏置项
        for i in range(len(lines) - 1):
            feature_tmp.append(float(lines[i]))
        label_tmp.append(float(lines[-1]))
        feature_data.append(feature_tmp)
        label_data.append(label_tmp)
    f.close()
    return np.mat(feature_data) np.mat(label_data)


def error_rate(h label):
    “““
    计算当前损失函数的值
    :param h(mat): 预测值
    :param label(mat) :实际值
    :return:err/m(float):错误率
    “““
    m = np.shape(h)[0]

    sum_err = 0.0
    for i in range(m):
        if h[i 0] > 0 and (1 - h[i 0]) > 0:
            sum_err -= (label[i 0] * np.log(h[i 0])) + \
                       (1 - label[i 0]) * np.log(1 - h[i 0])
        else:
            sum_err -= 0
    return sum_err / m


def lr_train_bgd(feature label maxCycle alpha):
    “““
    利用梯度下降法训练LR模型
    :param feature (mat):特征
    :param label(mat):标签
    :param maxCycle(int):最大迭代次数
    :param alpha(float):学习速率
    :return:w(mat)权重
    “““
    n = np.shape(feature)[1]  # 特征个数,特征第一维的长度
    w = np.mat(np.ones((n 1)))  # 初始化权重
    i = 0
    while i <= maxCycle:
        h = sig(feature * w)  # 计算Sigmoid值
        err = label - h
        if i % 100 == 0:
            print(“\t-----------iter = “ + str(i) + \
                  “  train error rate = “ + str(error_rate(h label)))
        w = w + alpha * feature.T * err  # 权重修正
        i += 1
    return w


def save_model(filename w):
    “““
    保存最终的模型
    :param filename(string):模型保存的文件名
    :param w(mat):LR模型的权重
    :return:
    “““
    m = np.shape(w)[0]
    f_w = open(filename ‘w‘)
    w_array = []
    for i in range(m):
        w_array.append(str(w[i 0]))
    f_w.write(‘\t‘.join(w_array))
    f_w.close()


# 测试用函数
def load_weight(w):
    “““
    导入LR模型
    :param w:(string)权重所在的文件位置
    :return:np.mat(w)mat权重的矩阵
    “““
    f = open(w)
    w = []
    for line in f.readlines():
        lines = line.strip().split(“\t“)  # strip()去除首尾空字符#split切片
        w_tmp = []
        for x in lines:
            w_tmp.append(float(x))
        w.append(w_tmp)
    f.close()
    return np.mat(w)


def load_teData(filename n):
    “““
    导入测试数据集
    :param filename:文件名
    :param n:特征个数
    :return:np.mat(feature_data)(mat)测试集的特征
    “““
    f = open(filename)
    feature_data = []
    for line in f.readlines():
        feature_temp = []
        lines = line.strip()

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-10-30 16:33  逻辑回归\
     目录           0  2018-10-30 16:34  逻辑回归\.idea\
     文件         637  2018-10-23 11:30  逻辑回归\.idea\Case1.iml
     文件         128  2018-10-05 20:40  逻辑回归\venv\pyvenv.cfg
     文件         294  2018-10-05 20:40  逻辑回归\.idea\misc.xml
     文件         269  2018-10-05 20:40  逻辑回归\.idea\modules.xml
     文件         239  2018-10-23 11:30  逻辑回归\.idea\other.xml
     文件       31539  2018-10-30 16:34  逻辑回归\.idea\workspace.xml
     文件        4498  2018-10-30 16:29  逻辑回归\LR_functions.py
     文件         714  2018-10-30 16:33  逻辑回归\LR_test.py
     文件        1520  2018-10-30 10:41  逻辑回归\LR_train.py
     目录           0  2018-10-15 11:02  逻辑回归\__pycache__\
     文件        2498  2018-10-15 11:02  逻辑回归\__pycache__\LR_functions.cpython-36.pyc
     文件       28312  2018-10-05 20:40  逻辑回归\venv\scripts\winsound.pyd
     文件         799  2018-10-30 16:32  逻辑回归\testResult
     文件        6850  2018-10-30 15:20  逻辑回归\test_data
     文件        5361  2018-10-14 22:28  逻辑回归\trainingData
     目录           0  2018-10-30 11:41  逻辑回归\venv\
     文件       87888  2018-10-05 20:40  逻辑回归\venv\scripts\vcruntime140.dll
     目录           0  2018-10-13 21:45  逻辑回归\venv\Lib\
     目录           0  2018-10-13 21:45  逻辑回归\venv\Lib\site-packages\
     文件          55  2018-10-05 20:40  逻辑回归\venv\Lib\site-packages\easy-install.pth
     目录           0  2018-10-13 21:45  逻辑回归\venv\Lib\site-packages\pip-10.0.1-py3.6.egg\
     目录           0  2018-10-13 21:45  逻辑回归\venv\Lib\site-packages\pip-10.0.1-py3.6.egg\EGG-INFO\
     文件        2972  2018-10-05 20:40  逻辑回归\venv\Lib\site-packages\pip-10.0.1-py3.6.egg\EGG-INFO\PKG-INFO
     文件       12502  2018-10-05 20:40  逻辑回归\venv\Lib\site-packages\pip-10.0.1-py3.6.egg\EGG-INFO\SOURCES.txt
     文件           1  2018-10-05 20:40  逻辑回归\venv\Lib\site-packages\pip-10.0.1-py3.6.egg\EGG-INFO\dependency_links.txt
     文件          98  2018-10-05 20:40  逻辑回归\venv\Lib\site-packages\pip-10.0.1-py3.6.egg\EGG-INFO\entry_points.txt
     文件           2  2018-10-05 20:40  逻辑回归\venv\Lib\site-packages\pip-10.0.1-py3.6.egg\EGG-INFO\not-zip-safe
     文件          74  2018-10-05 20:40  逻辑回归\venv\Lib\site-packages\pip-10.0.1-py3.6.egg\EGG-INFO\requires.txt
     文件           4  2018-10-05 20:40  逻辑回归\venv\Lib\site-packages\pip-10.0.1-py3.6.egg\EGG-INFO\top_level.txt
............此处省略381个文件信息

评论

共有 条评论