机器学习 | 算法模型 —— 回归:一元/多元/逻辑回归 (以深度学习框架TensorFlow实现)

逻辑回归及其python实现 逻辑回归算法介绍及其python实现 阅读详情

1.线性回归的基本假定

  1. 所有解释变量之间互不相关(无多重共线性)
  2. 假设变量(偏差)与随机变量不相关
  3. 随机扰动项满足正太分布
  4. 数据基本服从线性回归

2.一元线性回归[数据计算方式]

2.1 批量输入 and 批量计算

下部程序中在进行最后的数值迭代过程中,使用的是批量计算的方式进行计算

优点:一次性将所有数据加载到内存中,让计算模型在短时间内对数据进行处理

缺点:当数据量变大,数据变得更加的繁杂,回归结果会出现问题

np.random.randn(50):

 np.random.randn(100):

import os
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
os.environ["TF_CPP_MIN_LOG_LEVEL"] = "2"


# 生成标准正态分布随机数
x_data = np.random.randn(50)
# x_data = np.random.randn(100)
y_data = x_data * 0.3 + 0.15

weight = tf.Variable(0.5)
bias = tf.Variable(0.0)

y_model = weight * x_data + bias

loss = tf.pow((y_model - y_data), 2)
train_op = tf.train.GradientDescentOptimizer(0.01).minimize(loss)

sess = tf.Session()
init = tf.global_variables_initializer()
sess.run(init)

for _ in range(100):
    # 批量计算
    sess.run(train_op)
    print(weight.eval(sess), bias.eval(sess))

plt.plot(x_data, y_data, "ro", label="Original data")
plt.plot(x_data, sess.run(y_model), label="Fitted line")
plt.legend()
plt.show()

1.2 逐个输入 and 逐个计算

import tensorflow as tf
import os
import matplotlib.pyplot as plt
import numpy as np
os.environ["TF_CPP_MIN_LOG_LEVEL"] = "2"


threshold = 1.0e-2

x_data = np.random.randn(100).astype(np.float32)
y_data = x_data * 3 + 1

weight = tf.Variable(1.)
bias = tf.Variable(1.)
x_ = tf.placeholder(tf.float32)  # 输入值
y_ = tf.placeholder(tf.float32)  # 真实值
# y_model = weight * x_ + bias     # 预测值
y_model = tf.add(tf.multiply(x_, weight), bias)

# loss = tf.pow((y_model - y_), 2)
# 提高模型效率
loss = tf.reduce_mean(tf.pow((y_model - y_), 2))
train_op = tf.train.GradientDescentOptimizer(learning_rate=0.01).minimize(loss)

with tf.Session() as sess:
    init = tf.global_variables_initializer()
    sess.run(init)

    flag = True
    while flag:
        # zip: 返回两个iter的组合元组
        # 逐个输入输入
        for (x, y) in zip(x_data, y_data):
            sess.run(train_op, feed_dict={x_: x, y_: y})
        print("weight:", weight.eval(sess), "| bias:", bias.eval(sess))

        # 当损失值小于阙值threshold时停止模型训练
        if sess.run(loss, feed_dict={x_: x_data, y_: y_data}) <= threshold:
            flag = False

    plt.plot(x_data, y_data, "ro", label="Original data")
    plt.plot(x_data, sess.run(y_model, feed_dict={x_: x_data, y_: y_data}), label="Fitted line")
    plt.legend()
    plt.show()

2.多元线性回归

import numpy as np
import os
import matplotlib.pyplot as plt
import tensorflow as tf
from mpl_toolkits.mplot3d import Axes3D
os.environ["TF_CPP_MIN_LOG_LEVEL"] = "2"


houses = 100
features = 2

x_data = np.zeros([houses, 2])
for i in range(houses):
    x_data[i, 0] = np.round(np.random.uniform(50., 150.))
    x_data[i, 1] = np.round(np.random.uniform(3., 7.))
weights = np.array([[2.], [3.]])
y_data = np.dot(x_data, weights)

x_data_ = tf.placeholder(tf.float32, [None, 2])
y_data_ = tf.placeholder(tf.float32, [None, 1])
weights_ = tf.Variable(np.ones([2, 1]), dtype=tf.float32)
y_model = tf.matmul(x_data_, weights_)

loss = tf.reduce_mean(tf.pow((y_model - y_data_), 2))

# 学习速率的设置要多加小心
train_op = tf.train.GradientDescentOptimizer(0.0001).minimize(loss)

# with tf.Session() as sess:
sess = tf.Session()
init = tf.global_variables_initializer()
sess.run(init)

for _ in range(10):
    for x, y in zip(x_data, y_data):
        z1 = x.reshape(1, 2)
        z2 = y.reshape(1, 1)
        sess.run(train_op, feed_dict={x_data_: z1, y_data_: z2})
    print(weights_.eval(sess))

3.逻辑回归

重点:

  1. 逻辑回归并不是回归算法,而是无监督学习中的一种重要的分类算法
  2. 逻辑回归返回的结果是一个整数,而线性回归返回的是一个符合实际的预测数值
  3. 对于二维图像,逻辑回归的特征是一个二维矩阵,而线性回归的特征是一个一个的列向量
  4. 对于损失函数,逻辑回归是预测结果的正确或错误的比较,而线性回归则是预测值与真实值差值之间的比较
  5. 逻辑回归常用于二分类中

3.1 特征变换

numpy.ndarray.flatten(order="C"): 将矩阵转换为一维矩阵

order:

C(按列进行转换)

F(按行进行转换)

A(如果a在内存中是Fortran连续的,则表示按列-大数顺序扁平,否则为行-主要顺序)

K(‘k’的意思是按内存中元素出现的顺序使a变平)

import tensorflow as tf
import os
import numpy as np
import cv2
os.environ["TF_CPP_MIN_LOG_LEVEL"] = "2"


# img = cv2.imread("pic\\001\\pic_0000.jpg", cv2.IMREAD_GRAYSCALE)
img = np.array([[1, 2, 3], [4, 5, 6]])
print(type(img))
print(img.shape)       # (100, 100)

# 特征变换
img_line = img.flatten(order="C")  # [1, 2, 3, 4, 5, 6]
img_line = img.flatten(order="F")  # [1, 4, 2, 5, 3, 6]
print(img_line)
print(type(img_line))

3.2 结果转换

对于线性回归来说,其生成值为某一个取值范围内的任意一个数值,即本身就是一条特定的曲线,通过确定特征值能够很好的在曲线上找到对应的值,而逻辑回归的生成值是一系列非连续的数值。

为了解决生成值的非连续性问题,逻辑回归的结果被转换成了单独的向量,向量中的元素代表着逻辑回归应当属于的分类,每一个数据元素都对应着一个概率,其概率有大小之分,概率得分最高的元素则被认定为其分类结果。

3.3 损失函数

one-hot编码:将不同的类型转化成相同维数的向量

交叉熵:(y:真实的输出值,a:模型的模拟值)

softmax激活函数:(元素所在队列中元素与所有元素指数和的比值)

逻辑回归损失函数:(Y:真实结果转换成one-hot的向量;yi: 模型计算值)

3.4 逻辑回归:胃癌转移判断

数据集:shape(100, 7)

label=tf.stack([col1, col2])

features=tf.stack([col3, col4, col5, col6, col7])

import tensorflow as tf
import numpy as np
import os
os.environ["TF_CPP_MIN_LOG_LEVEL"] = "2"


def readFile(filename):
    filename_queue = tf.train.string_input_producer(filename, shuffle=False)

    # 定义reader(逐行读取)
    reader = tf.TextLineReader(skip_header_lines=1)
    key, value = reader.read(filename_queue)

    # 读取数据时对应的匹配类型
    # [1.0]:float
    # [1]:int
    # ["null"]:string
    record_defaults = [[1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0]]
    # record_defaults = []
    # for i in range(7):
    #     record_defaults.append([1.0])
    col1, col2, col3, col4, col5, col6, col7 = tf.decode_csv(value, record_defaults=record_defaults)

    # tf.stack:按照给定方向堆叠
    label = tf.stack([col1, col2])
    features = tf.stack([col3, col4, col5, col6, col7])

    # 注意min_after_dequeue < capacity
    example_batch, label_batch = tf.train.shuffle_batch([features, label], batch_size=3, capacity=100, min_after_dequeue=10)
    return example_batch, label_batch


if "__main__" == __name__:
    example_batch, label_batch = readFile(["cancer.txt"])

    weight = tf.Variable(np.random.rand(5, 1).astype(np.float32))
    bias = tf.Variable(np.random.rand(3, 1).astype(np.float32))
    x_ = tf.placeholder(tf.float32, [None, 5])

    # 调用softmax激活函数
    y_model = tf.nn.softmax(tf.matmul(x_, weight) + bias)
    y = tf.placeholder(tf.float32, [3, 2])

    # 损失函数:交叉熵
    loss = -tf.reduce_mean(y*tf.log(y_model))
    train = tf.train.GradientDescentOptimizer(0.01).minimize(loss)

    with tf.Session() as sess:
        sess.run(tf.group(tf.local_variables_initializer(), tf.global_variables_initializer()))
        # 数据读取必须要创建线程协调器
        coord = tf.train.Coordinator()
        threads = tf.train.start_queue_runners(sess=sess, coord=coord)

        flag = 1
        while flag:
            e_val, l_val = sess.run([example_batch, label_batch])
            sess.run(train, feed_dict={x_: e_val, y: l_val})
            if sess.run(loss, feed_dict={x_: e_val, y: l_val}) <= 0:
                flag = 0
            print(sess.run(weight))

        # coord.request_stop()
        # coord.join(threads)

 

多元逻辑回归 · 数学推导过程及代码实现完全解析 多元逻辑回归模型解释参数的估计如何预测代码实现 本文是《从二元逻辑回归到多元逻辑回归 · 数学推导过程完全解析》的第二部分,具体介绍多元逻辑回归,及其背后的数学公式推导和具体python代码实现 对于模型概述请参见第一部分: 二元逻辑回归 · 数学推导过程及代码实现完全解析 阅读详情

相关推荐

人工智能、机器学习和深度学习的区别

人工智能、机器学习与深度学习的关系综述 本文系统阐述了人工智能、机器学习和深度学习三者的关系与发展现状。人工智能作为总领域,包含专家系统、机器学习等7大研究方向;机器学习作为其子集,通过算法解析数据实现智能预测;深度学习则是机器学习的分支,采用神经网络模拟人脑机制。文章重点介绍了10大机器学习算法及其应用场景,并列举了深度学习在图像识别、自动驾驶等11个领域的突破性进展。三者呈现金字塔式的包含关系:人工智能>机器学习>深度学习,共同依赖大数据和强大算力支撑。当前研究主要集中在"弱人工智

Hongwei_1990的博客 3935

使用鸢尾花数据集实现一元逻辑回归、多分类问题

目录原理【1】从线性回归到广义线性回归【2】逻辑回归【3】损失函数【4】总结TensorFlow实现一元逻辑回归 原理 【1】从线性回归到广义线性回归 广义线性回归通过联系函数,对线性模型的结果进行一次非线性变换,使他能够描述更加复杂的关系。 【2】逻辑回归 阶跃函数不是一个单调可微的函数、可以使用对数几率函数替代 sigmoid函数将(-无穷,+无穷)的输入转化到(0,1) 【3】损失函数 线性回归的处理值是连续值,不适合处理分类任务 用sigmoid函数,将线性回归的返回值映射

hanhan的博客 4377

传统机器学习和深度学习

传统机器学习 传统机器学习从一些观测(训练)样本出发,试图发现不能通过原理分析获得的规律,实现对未来数据行为或趋势的准确预测。 相关算法包括: 逻辑回归 隐马尔科夫方法 支持向量机方法 K 近邻方法 三层人工神经网络方法 Adaboost算法 贝叶斯方法 决策树方法 等 托马斯·贝叶斯(Thomas Bayes)同学的详细生平在这里。以下摘一段 wikipedia 上的简介: 所谓的贝叶斯方法源于他生前为解决一个“逆概”问题写的一篇文章,而这篇文章是在他死后才由他的一位朋友发表出来的。

sinat_22510827的博客 2588

实现一元逻辑回归

加载数据 import tensorflow as tf import numpy as np import matplotlib.pyplot as plt # 加载数据 x = np.array([137.97,104.50,100.00,126.32,79.20,99.00,124.00,114.00,106.69,140.05,53.75,46.91,68.00,63.02,81.26,86.21]) y = np.array([1,1,0,1,0,1,1,0,0,1,0,0,0,0,0,0])

weixin_45289300的博客 986

TensorFlow入门与实战:开源机器学习框架精髓

TensorFlow入门与实战:开源机器学习框架精髓 1. 背景介绍 1.1 人工智能与机器学习的兴起 在过去的几十年里,人工智能(AI)和机器学习(ML)技术取得了长足的进步,并逐渐渗透到我们生活的方方面面。

AI天才研究院 981

TensorFlow深度学习框架实战进阶之路

本文还有配套的精品资源,点击获取 简介:人工智能、机器学习、深度学习是当代技术创新的关键力量。TensorFlow作为谷歌的开源深度学习框架,在图像识别、自然语言处理等领域有广泛应用。本资料集带你从基础概念到深度学习模型的构建、训练与应用,全面掌握TensorFlow,成为深度学习领域的专家。 1. TensorFlow框架概述与应用领域 1.1 Tenso...

weixin_42593701的博客 1365

《深度学习与逻辑回归模型的融合&&TensorFlow多元分类的高级应用》

案例精讲-多元分类模型-手写数字识别

令狐_JackieHao的博客 1431

线性回归的fortran程序

线性回归的fortran程序,可以自己替换数据进行计算

ML/DL科普向:从Sklearn到TensorFlow

本文为数据茶水间群友原创,经授权在本公众号发表。关于作者:Japson,职场新人。某人工智能公司AI平台研发工程师,专注于AI工程化及场景落地。持续学习中,期望与大家多多...

木东居士 775

光栅衍射有入射角时_衍射型多焦点人工晶体光学原理

多焦点人工晶体如何把光线分成多个焦点的?这个问题大部分专业书只是蜻蜓点水,并没有讲明白。希此文粗浅的解释,能帮您加深理解,请多指正。接下来,我将按照一下历史发展的顺序讲解一下:光的认识、菲涅尔灯塔(菲涅尔透镜)、菲涅尔波带盘(半波带盘)、多焦点人工晶体。一:首先复习一下光的认识历史。我们现在都知道光是一种电磁波,具有波粒二相性,但是认识光的本质也经历非常曲折漫长的过程。牛顿时代的几何光...

weixin_28963467的博客 2352

【AUTOSAR-RTE】-1-聊一聊RTE(Run-Time Environment)

RTE(Run-Time Environment)是AUTOSAR ECU架构的核心。

「汽车电子助手」的博客 6502

《机器学习》实验二:利用逻辑回归进行鸢尾花的分类

《机器学习》实验二:利用逻辑回归进行鸢尾花的分类

ProgramNovice的博客 3382

Vue3 - 最新实现在线预览Excel文件(xls/xlsx)多种方案,解析打开excel电子表格支持服务器链接在线URL形式、调用后端接口获取二进制文件流、文件地址(vue3实现excel预览)

vue3,预览excel文件,xlsx,xls,vue预览Excel表格,vue在线编辑xls文件,预览和编辑,vue3如何新开一页浏览器打开查看,手机h5页面打开在线EXCEL文档,在弹框中加载预览,在指定模态框中显示,基于Vue的Excel文件预览,加载失败白屏,报错没反应,详细示例代码教程,文件预览下载,nuxt3,excel预览插件,xlsx插件预览,纯前端vue中预览excel表格,接口调用的文件如何预览查看,文件url地址,vue移动端实现excel在线预览,vue移动端H5网页excel预览,

🏆 前端领域优质创作者 1万+

tensorflow手动实现算法之三逻辑回归

1.逻辑回归算法 逻辑回归是日常工作中最常用的算法之一。虽然逻辑回归很简单,出现的年代也比较久远,但是实现简单,可解释性强,一般效果也不会太差,尤其在处理海量数据集的时候具有性能上的巨大优势,因此逻辑回归一般会被用作线上算法的baseline版本之一。 之前逻辑回归系列文章 为什么要使用logistic函数 损失函数(cost function)详解 梯度下降训练方法 2.tensorflow实现...

bitcarmanlee的博客 835

.Net如何使用Web API实现数据交互?

数据模型代表了要交互的数据结构。例如,假设我们要创建一个简单的图书管理系统,我们可以定义一个Book类作为数据模型。set;set;set;

Code365 258

【软件系统架构】系列六:MBSE(基于模型的系统工程)

基于模型的系统工程(MBSE)是一种以模型为核心的系统工程方法论,通过结构化、可视化的模型取代传统文档,实现从需求到验证的全生命周期管理。MBSE采用SysML建模语言,包含需求、功能、架构和验证四大要素,支持自动追踪、仿真分析和代码生成。相比文档式工程,MBSE具有变更影响自动分析、跨团队协作和高可视化等优势,广泛应用于航空航天、汽车电子等领域。典型开发流程包括需求建模、行为建模、架构建模等阶段,配合MagicDraw、Cameo等工具链实现。MBSE正与数字孪生、AI技术融合,推动自动化建模和智能验证的

moton2017的博客 2783

【机器学习】框架三巨头:Scikit-Learn vs TensorFlow/Keras vs PyTorch 全方位对比与实战

在机器学习的浪潮中,选择合适的工具如同航海家选择合适的船只一样重要。机器学习框架极大地简化了从数据预处理、模型构建、训练到评估部署的复杂流程,让我们能更专注于算法设计和业务问题本身,显著提高开发效率。当前,市面上存在众多优秀的机器学习框架,其中 Scikit-Learn、TensorFlow (及其高级API Keras) 和 PyTorch 无疑是最为主流和强大的三大选择。对于初学者而言,面对这些框架可能会感到困惑:它们各自有何特点?适用于哪些场景?我应该从哪个开始学起?

吴师兄大模型的博客 2991

VMware Horizon 8 2111 部署系列(十一)准备RDS主机

RDS (Remote Desktop Service),即远程桌面服务。我们可以使用 Microsoft 远程桌面服务 (RDS) 提供 RDS 主机上的桌面会话并将应用程序传送给多个用户。

白昼的技术专栏 3470

机器学习核心总结-概念、线性回归、损失函数、泛化及数据集划分、特征工程、逻辑回归和分类

机器学习与传统的为解决特定任务、硬编码的软件程序不同,机器学习是用大量的数据来“训练”模型,通过各种算法从数据中学习如何完成任务,最后使用模型对数据进行预测。

BoringError的博客 2649

AI人工智能 Agent:在仓储物流中的应用

AI人工智能 Agent:在仓储物流中的应用 1. 背景介绍 1.1 问题的由来 仓储物流行业是全球经济运行的基石之一,涉及商品的存储、运输、分拣和配送等多个环节。随着电子商务的普及和消费者对物流速度和精确性的要求不断提高,仓储物流

AGI×大数据,开启智能时代的认知跃迁;解码AGI,赋能数据驱动的智能革命。 863

DFIG风电场经LCC-HVDC外送系统SIMULINK建模与仿真

本文基于MATLAB/Simulink平台构建了DFIG风电场经LCC-HVDC外送系统的仿真模型。系统采用1000MW聚合DFIG模型与双极12脉动LCC-HVDC连接,详细阐述了参数设计、控制策略及接口协调方法。重点解决了风电场无功能力不足、功率波动影响换相等关键技术问题,为大规模风电基地外送提供了仿真研究框架。模型整合了官方DFIG和HVDC详细模块,通过参数缩放和控制系统优化,实现了完整系统的动态仿真分析。

huanghm88的专栏 119

用Tensorflow进行线性回归和逻辑回归(二)

本文介绍神经元及numpy实现。

lishaoan77的专栏 1133

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

pytorch01:概念、张量操作、线性回归与逻辑回归

2017年1月,FAIR (FacebookAI Research) 发布PyTorch,PyTorch是在Torch基础上用python语言重新打造的一款深度学习框架,Torch 是采用Lua语言为接口的机器学习框架,但因Lua语言较为小众导致Torch知名度不高。张量是一个多维数组,它是标量、向量、矩阵的高维拓展在深度学习中,张量(tensor)是一个广泛使用的数学和计算工具,它是多维数组的泛化。

慕溪同学的博客 1852

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

探索PlayPurEo的ML-and-DL:一个强大的机器学习与深度学习资源库

探索PlayPurEo的ML-and-DL:一个强大的机器学习与深度学习资源库 去发现同类优质开源项目:https://gitcode.com/ 在今天的数据驱动世界中,机器学习(Machine Learning)和深度学习(Deep Learning)成为了许多创新解决方案的核心。对于开发者、学生和研究人员来说,拥有一个全面且易于访问的资源库是至关重要的。现在,我们很高兴向您推荐,这是一个集成了...

gitblog_00077的博客 388

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

TensorFlow逻辑回归实战:二分类问题解决方案

逻辑回归是机器学习中最基础且实用的分类算法之一,特别适合解决二分类问题。在本文中,我们将通过TensorFlow实现一个完整的逻辑回归模型,使用真实数据集来预测低出生体重婴儿。通过这个实战案例,你将掌握如何使用TensorFlow构建和训练逻辑回归模型,解决实际业务中的分类问题。🤖 ## 什么是逻辑回归? 逻辑回归是一种用于预测二元结果的统计方法,通过sigmoid函数将线性回归的输出映射到

gitblog_00964的博客 763

Tensorflow 迭代完成逻辑回归模型

首先需要下载一个Tensorflow 内置的数据集mnist import numpy as np import tensorflow as tf import matplotlib.pyplot as plt from tensorflow.examples.tutorials.mnist import input_data print ("packs loaded") print ("Down...

yib0y的博客 287
上一篇: python3__深度学习:TensorFlow__数据的生成与读取(主要针对图像处理)
下一篇: Tensorflow调用tf.train.shuffle_batch函数报错“OutOfRangeError: RandomShuffleQueue”
博士僧小星
博士僧小星 新星创作者: 人工智能技术领域 新星创作者: 人工智能技术领域
博客等级 码龄10年 4638粉丝 351原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

博士僧小星

技术不易,奶茶鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值