【机器学习】Exam4

实现线性不可分logistic逻辑回归

我们目前所学的都是线性回归,例如 y = w 1 x 1 + w 2 x 2 + b y = w_1x_1+w_2x_2+b y=w1x1+w2x2+b
用肉眼来看数据集的话不难发现,线性回归没有用了,那么根据课程所学,我们是不是可以增加 x 3 = x 1 x x , x 4 = x 1 2 , x 5 = x 2 2 x_3=x_1x_x,x_4=x_1^2,x_5=x_2^2 x3=x1xx,x4=x12,x5=x22呢?那么逻辑回归就可以变成
y = w 1 x 1 + w 2 x 2 + w 3 x 3 + w 4 x 4 + w 5 x 5 + b y=w_1x_1+w_2x_2+w_3x_3+w_4x_4+w_5x_5+b y=w1x1+w2x2+w3x3+w4x4+w5x5+b

import numpy as np
import pandas as pd
from matplotlib import pyplot as pltdef sigmoid(x):return 1/(1+np.exp(-x))def compute_loss(X, y, w, b, lambada):m = X.shape[0]cost = 0.cost_gradient = 0.for i in range(m):z_i = sigmoid((np.dot(X[i], w) + b))cost += -y[i] * np.log(z_i) - (1 - y[i]) * np.log(1 - z_i)cost_gradient += w[i] ** 2return cost / m + lambada * cost_gradient / (2 * m)def compute_gradient_logistic(X, y, w, b, eta, lambada):m, n = X.shapedb_w = np.zeros(n)db_b = 0for i in range(m):z_i = sigmoid((np.dot(X[i], w) + b))err_i = z_i - y[i]for j in range(n):db_w[j] += err_i * X[i][j]db_b += err_ireturn db_w / m, db_b / mdef gradient_descent(X, y, w, b, eta, lambada, iterator):m, n = X.shapefor i in range(iterator):w_tmp = np.copy(w)b_tmp = bdb_w, db_b = compute_gradient_logistic(X, y, w_tmp, b, eta, lambada)db_w += lambada * w / mw = w - eta * db_wb = b - eta * db_breturn w, bif __name__ == '__main__':data = pd.read_csv(r'D:\BaiduNetdiskDownload\data_sets\ex2data2.txt')X_train = data.iloc[:, 0:-1].to_numpy()y_train = data.iloc[:, -1].to_numpy()x1 = (X_train[:, 0] * X_train[:, 1]).reshape(-1, 1)x2 = (X_train[:, 0] ** 2).reshape(-1, 1)x3 = (X_train[:, 1] ** 2).reshape(-1, 1)X_train = np.hstack((X_train, x1, x2, x3))w_tmp = np.zeros_like(X_train[0])b_tmp = 0.alph = 0.1lambada = 0.01iters = 10000w_out, b_out = gradient_descent(X_train, y_train, w_tmp, b_tmp, alph, lambada, iters)count = 0for i in range(X_train.shape[0]):ans = sigmoid(np.dot(X_train[i], w_out) + b_out)prediction = 1 if ans > 0.5 else 0if y_train[i] == prediction:count += 1print('Accuracy = {}'.format(count/X_train.shape[0]))print(w_out, b_out)plt.scatter(X_train[:, 0], X_train[:, 1], c=y_train)# 绘制决策边界x_min, x_max = X_train[:, 0].min() - 0.1, X_train[:, 0].max() + 0.1y_min, y_max = X_train[:, 1].min() - 0.1, X_train[:, 1].max() + 0.1xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.01),np.arange(y_min, y_max, 0.01))# 创建与网格形状匹配的特征grid = np.c_[xx.ravel(), yy.ravel()]print('grid_shape : {}'.format(grid.shape))grid_x1 = (grid[:, 0] * grid[:, 1]).reshape(-1, 1)grid_x2 = (grid[:, 0] ** 2).reshape(-1, 1)grid_x3 = (grid[:, 1] ** 2).reshape(-1, 1)grid_features = np.hstack((grid, grid_x1, grid_x2, grid_x3))# 计算网格点的预测值Z = sigmoid(np.dot(grid_features, w_out) + b_out)Z = Z.reshape(xx.shape)# 绘制决策边界plt.contour(xx, yy, Z, levels=[0.5], colors='g')# 显示图形plt.xlabel('x1')plt.ylabel('x2')plt.title('Decision Boundary')plt.show()
一些图

在这里插入图片描述

Accuracy = 0.8376068376068376
然后就是各个参数w1,w2,w3,w4,b
[ 2.12915132 2.82388529 -4.83135528 -8.64819153 -8.31828602] 3.7305124000753627

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/871190.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】Vim 使用教程

Linux - Vim Vim 是一款在 Linux 系统中广泛使用的文本编辑器,它是 Vi 编辑器的升级版。Vim 不仅功能强大,而且可高度定制化,是许多程序员和系统管理员的首选工具。以下是 Vim 在 Linux 系统中的安装、配置和使用过程的详细讲解。 附注&…

论文翻译:Large Language Models for Education: A Survey

目录 大型语言模型在教育领域的应用:一项综述摘要1 引言2. 教育中的LLM特征2.1. LLMs的特征2.2 教育的特征2.2.1 教育发展过程 低进入门槛。2.2.2. 对教师的影响2.2.3 教育挑战 2.3 LLMEdu的特征2.3.1 "LLMs 教育"的具体体现2.3.2 "LLMs 教育"…

Vue的import什么时候用大括号

在Vue.js(以及更广泛的JavaScript ES6模块系统中)中,使用大括号{}进行import操作的场景通常是在你想要从模块中导入具体的导出项时。这种导入方式被称为“命名导入”(Named Imports)。 命名导入(Named Imp…

linux——线程

线程概念 什么是线程? 在一个程序里的一个执行流叫做线程。一切进程至少有一个线程线程在进程内部运行,本质是在进程地址空间内运行在Linux系统中,在CPU眼中,看到的PCB都要比传统的进程更加轻量化 我们都知道在每一个进程都有属…

4层负载均衡和7层负载均衡

四层负载均衡(Layer 4 Load Balancing)指的是在网络传输层(TCP/IP模型中的第四层)进行负载均衡的技术。四层负载均衡通常使用IP地址、端口号和协议等信息来将网络流量分配到多个服务器上。它主要关心网络层的信息,不涉…

Ubuntu 22.04.4 LTS (linux) Auditd 安全审计rm命令 记录操作

1 audit增加rm 规则 #sudo vim /etc/audit/rules.d/audit.rules -w /bin/rm -p x -k delfile #重新启动服务 sudo systemctl restart auditd #查看规则 sudo auditctl -l -w /bin/rm -p x -k delfile 2 测试规则 touch test.txt rm test.tx 3 查看日志 sudo ausear…

Apache-Flink未授权访问高危漏洞修复

漏洞等级 高危漏洞!!! 一、漏洞描述 攻击者没有获取到登录权限或未授权的情况下,或者不需要输入密码,即可通过直接输入网站控制台主页面地址,或者不允许查看的链接便可进行访问,同时进行操作。 二、修复建议 根据业务/系统具体情况,结合如下建议做出具体选择: 配…

无人机之遥控器分类篇

一、传统遥控器 传统无人机遥控器一般包括开关键、遥控天线等基础装置。但是会随着无人机具体的应用和功能而开发不同的按键。它的信号稳定性远超对比其他遥控,而且遥控距离也更远(一般遥控范围在100米或以上)传统遥控器对于初学者来说比较难…

在uniapp中如何使用地图

1&#xff0c;技术选择 最好是使用webview html形式加载&#xff0c;避免打包app时的地图加载问题 2&#xff0c;webview使用 使用webview必须按照官方文档,官网地址&#xff1a;https://uniapp.dcloud.net.cn/component/web-view.html <template><view><!…

KNN分类算法与鸢尾花分类任务

鸢尾花分类任务 1. 鸢尾花分类步骤1.1 分析问题&#xff0c;搞定输入和输出1.2 每个类别各采集50朵花1.3 选择一种算法&#xff0c;完成输入到输出的映射1.4 第四步&#xff1a;部署&#xff0c;集成 2. KNN算法原理2.1 基本概念2.2 核心理念2.3 训练2.4 推理流程 3. 使用 skle…

ubuntu安装k8s+docker运行英伟达gpu cuda

安装k8sdocker sealos resetsealos run registry.cn-shanghai.aliyuncs.com/labring/kubernetes-docker:v1.27.7 registry.cn-shanghai.aliyuncs.com/labring/helm:v3.9.4 registry.cn-shanghai.aliyuncs.com/labring/cilium:v1.13.4 --single 英伟达Ubuntu驱动下载地址&…

android 混淆后报如错 java.lang.ClassCastException

android 升级 gradle 混淆后报如错 java.lang.ClassCastException Caused by: java.lang.ClassCastExceptionat androidx.appcompat.app.ToolbarActionBar$$ExternalSyntheticThrowCCEIfNotNull0.m(:0) 原因&#xff1a; retrofit 混淆问题 解决&#xff1a; 将如下加入混淆…

java设计模式(二十)迭代器模式(Iterator Pattern)

1、模式介绍&#xff1a; 迭代器模式是一种行为设计模式&#xff0c;它允许客户端通过统一的方式访问聚合对象中的各个元素&#xff0c;而不必暴露其内部表示。通过迭代器模式&#xff0c;可以在不知道聚合对象内部结构的情况下&#xff0c;顺序访问其中的元素。 2、应用场景…

elasticsearch 查询超10000的解决方案

前言 默认情况下&#xff0c;Elasticsearch集群中每个分片的搜索结果数量限制为10000。这是为了避免潜在的性能问题。 但是我们 在实际工作过程中时常会遇到 需要深度分页&#xff0c;以及查询批量数据更新的情况 问题&#xff1a;当请求form size >10000 时&#xff0c…

javascript设计模式总结

参考 通过设计模式可以增加代码的可重用性、可扩展性、可维护性 设计模式五大设计原则 单一职责&#xff1a;一个程序只需要做好一件事&#xff0c;如果结构过于复杂就拆分开&#xff0c;保证每个部分独立 开放封闭原则&#xff1a;对扩展开放&#xff0c;对修改封闭。增加需…

【FreeRTOS】IAR的FreeRTOSConfig.h中在添加头文件的问题

1、今天在\FreeRTOSConfig.h中添加个头文件&#xff0c;总是在头文件的函数定义处报错&#xff1a; Error[40]: Bad instruction 2、百度了半天也没有找到问题 3、原来是这个原因&#xff1a; IAR的Freertos中需加上一个portasm.s的驱动文件&#xff0c;而该文件需要调…

印尼Facebook直播网络需要达到什么要求?

在全球化浪潮的推动下&#xff0c;海外直播正受到企业、个人和机构的广泛关注和青睐。无论是用于营销、推广还是互动&#xff0c;海外直播为各种组织提供了更多机会和可能性。本文将探讨在进行印尼Facebook直播前&#xff0c;需要满足哪些网络条件以确保直播的质量和用户体验。…

南通网站制作基本步骤有哪些

南通网站制作是一个非常重要的工作&#xff0c;它可以帮助企业展示产品、服务和品牌形象&#xff0c;吸引更多的客户和创造更多的商机。网站制作的基本步骤包括需求分析、规划设计、页面制作、网站测试和上线等。 首先是需求分析。在南通网站制作的初期阶段&#xff0c;需要和客…

Spark SQL----CREATE FUNCTION

Spark SQL----CREATE FUNCTION 一、描述二、语法三、参数四、例子 一、描述 CREATE FUNCTION语句用于在Spark中创建临时或永久函数。临时函数的作用域位于会话级别&#xff0c;永久函数在持久目录中创建&#xff0c;并可用于所有会话。USING子句中指定的资源在第一次执行时可供…