NumPy实现逻辑回归

说明:数据集 ex2data1.txt是吴恩达机器学习的作业的数据集。

# -*-coding:utf-8-*-
import matplotlib.pyplot as plt
import numpy as np
import pandas as pdclass Logitstic_Regression:def __init__(self, learning_rate=0.01, num_iterations=75000, threshold=0.5):self.learning_rate = learning_rateself.num_iterations = num_iterationsself.threshold = thresholdself.weights = Noneself.bias = Nonedef fit(self,X,y):#初始化参数num_samples,num_features=X.shapeself.weights=np.zeros((num_features,1))self.bias=0#梯度下降for i in range(self.num_iterations):#计算梯度linear_model=X @ self.weights+self.biasy_pred=self._sigmoid(linear_model)loss=(y_pred)-ydw=(1/num_samples) * (X.T @ (loss))db=(1/num_samples) * np.sum(loss)#updata W and bself.weights -= self.learning_rate*dwself.bias  -=  self.learning_rate*dbdef predict(self,X):#X必须是二维的,尺寸(m*2)linear_model=X @ self.weights +self.biasy_pred=self._sigmoid(linear_model)y_pred_class=[1 if i>self.thredshold else 0 for i in y_pred]return np.array(y_pred_class)def _sigmoid(self,x):return 1/(1+np.exp(-x))def draw(self,X, y):fig, ax = plt.subplots(figsize=(12, 8))ax.scatter(X[np.where(y == 1), 0], X[np.where(y == 1), 1], color="blue", s=30, marker="o")ax.scatter(X[np.where(y == 0), 0], X[np.where(y == 0), 1], color="green", s=30, marker="x")drawx2= ( 0-self.bias-X[:,0] * self.weights[0,0] ) / self.weights[1,0]ax.plot(X[:, 0], drawx2 , color="black")plt.show()
def loadData():df=pd.read_csv("ex2data1.txt",sep=",",header=None)data=np.array(df.values)# print(type(data))# print(data)#X是二维的,(m,2),y是二维的(m,1)X=data[:,0:2]y=data[:,2:3]# print(X)# print(y)return X,yif __name__=="__main__":X,y=loadData()model=Logitstic_Regression()model.fit(X,y)print(model.weights)print(model.bias)model.draw(X,y)

运行结果:

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

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

相关文章

element ui table 状态用switch展示

效果图如下 方法一:将图片封装成组件 1.:ImgswitchOpen.vue 2:页面引入组件 3:使用 方法二:引入图片 1:引入图片 2:在data中定义 3.使用

如何编写一条高质量测试用例

测试场景: 为登录功能设计测试用例 测试员为什么要会编测试用例 测试员的目标是要保证系统在各种场景下的功能是符合设计要求的。而测试用例就是测试员想到的测试场景。(这也是高级别的测试员即使不会代码也能找到较好工作的原因) 编写测试…

Uniapp中简单弹出层的使用

图示 思路 当派工单这个输入框获取到焦点后&#xff0c;弹出弹出层选择数据。 1、定义这个输入框 <view class"cu-form-group"><view class"title"><text class"text-red">*</text>派工单号: </view><input…

考虑微网新能源经济消纳的共享储能优化配置(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

leetcode消失的数字

题目描述 数组 nums 包含从 0 到 n 的所有整数&#xff0c;但其中缺了一个。请编写代码找出那个缺失的整数。你有办法在 O ( n ) O(n) O(n) 时间内完成吗&#xff1f; 示例 1&#xff1a; 输入&#xff1a;[3,0,1] 输出&#xff1a;2 leetcode链接&#xff1a;消失的数字 ⭕…

2023年无线蓝牙耳机排行榜,十款无线蓝牙耳机品牌推荐

蓝牙耳机作为现代生活必备的电子产品之一&#xff0c;我们在选购时的选择就显得尤为重要。随着各大科技公司对蓝牙耳机功能的不断完善&#xff0c;用户对于耳机的期望也越来越高&#xff0c;音质、性能、降噪、舒适度等方面都成为了用户选择蓝牙耳机时考虑的因素。接下来我们一…

C++ 数据结构B 树

目录 1. 常见的搜索结构 2. B树概念 3. B-树的插入分析 4. B-树的插入实现 4.1 B-树的节点设计 4.2 插入key的过程 4.4 B-树的简单验证 4.5 B-树的性能分析 4.6 B-树的删除 5. B树和B*树 5.1 B树 5.2 B*树 5.3 总结 6. B-树的应用 6.1 索引 6.2 MySQL索引简介 6…

计算机网络————运输层

文章目录 概述UDPTCP首部格式 连接管理连接建立连接释放 概述 从IP层看&#xff0c;通信双方是两个主机。 但真正进行通信的实体是在主机中的进程&#xff0c;是这个主机中的一个进程和另一个主机中的一个进程在交换数据。 所以严格的讲&#xff0c;两个主机进行通信就是两个…

关于邮件协议的理解、实验以及java mail的实现

目录 1、几种电子邮件系统组成 传统电子邮件系统 用户代理 UA (User Agent) 邮箱服务器 基于万维网的电子邮件系统 2、电子邮件协议 SMTP 连接建立 邮件传送 连接释放 局限 POP3 IMAP 补充 3、telnet实验电子邮件协议 SMTP POP3 4、java mail 参考文章 1、几…

el-carousel和el-image组合实现swiper左右滑动图片,点击某张图片放大预览的效果

<template><el-carousel class"image-swiper" :height"100%" :indicator-position"swiperItems.length < 1 ? none : ":arrow"swiperItems.length < 1 ? never : "><el-carousel-item v-for"(a, $i) in s…

websocket前端的连接与接收数据

什么是websocket 1, WebSocket是一种用于在客户端和服务器之间进行全双工通信的网络协议。它使得在单个TCP连接上可以进行双向通信&#xff0c;允许服务器主动地发送数据给客户端&#xff0c;同时客户端也可以向服务器发送数据。与传统的HTTP请求-响应模型不同&#xff0c;Web…

Scrapy框架--settings配置 (详解)

目录 settings配置 官网-参考配置 配置文档 Scrapy默认BASE设置 settings配置 Scrapy框架中的配置文件&#xff08;settings.py&#xff09;是用来管理爬虫行为和功能的关键部分。它是一个Python模块&#xff0c;提供了各种配置选项&#xff0c;可以自定义和控制爬虫的行为。…