NumPy实现逻辑回归

news/2025/2/19 17:27:42/

说明:数据集 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.ppmy.cn/news/701026.html

相关文章

Charles 乱码问题解决

❤️ 前段时间发现了一个 人工智能学习网站,通俗易懂,风趣幽默,分享一下给大家。👈🏻 学习链接 Charles 乱码问题解决 乱码显示 解决方法 修改Charles.ini 文件(可选); vmarg.5-Df…

flash乱码解决方案

flash乱码解决方案 转到https://get.adobe.com/flashplayer/?loccn 下载其中的.tar.gz包,提取其中的libfalshplayer.so,替换原有的即可。 转到flash的目录 cd /usr/lib/usr/lib/flashplugin-installer 保存原来的 cp libflashplayer.so libflashp…

解决中文乱码问题

Web 应用的中文乱码由来 Tomcat 默认使用字符集 ISO-8859-1,属于西欧字符集解决乱码的核心思路是将 ISO-8859-1 转换为 UTF-8Controller 中请求与响应都需要设置 UTF-8 字符集 中文乱码的配置 1. Get 请求乱码 - server.xml 增加 URIEncoding 属性 在自己电脑中…

windows下命令行乱码解决

一:现象 有时候我们在cmd命令行执行命令时发现有乱码,如图 二:解决方案: 1:临时解决命令行乱码问题 在命令行执行CHCP查看当前命令行活动代码页编号 一些常见的代码页编号含义如下: 65001 UTF-8代码页…

手机打开html乱码怎么解决,打开网页出现乱码怎么办 打开网页出现乱码解决方法【详解】...

时代不断发展,科技不断进步,电脑已经成为我们日常生活中不可取代的通讯工具,它可以让我们及时的浏览到世界各地的信息,也可以让我们及时得出里自己的工作文件,极大的方便了人们的生活,但电脑叶总实惠出现各种各样的问题让我们手足无措,对于一些电脑白痴来说出来电脑故障…

Mac电脑jmeter中文乱码问题解决方案

极有可能是因为Mac电脑适配展示问题所导致,只需要进行如下操作: 1)点击【选项】-》点击【外观】-》点击“Metal”-》终端切换到jmeter下bin目录下输入“sh jmeter”重启,即可解决中文乱码问题 ​​​​​​​

Mac 中文乱码解决笔记

Mac 中文乱码解决笔记 1.搜索软件“自动操作”(automator)新建文稿 2.选取“快速操作” 3.搜索“运行 shell 脚本” 拖至空白处 4.将以下脚本内容粘贴至空白处 for f in "$" dofileName$(basename ${f})filePath$(dirname ${f})# 两种乱码…

mysql 乱码解决方案

第一种方法,总结: 经常更换虚拟主机,而各个服务商的MYSQL版本不同,当导入数据后,总会出现乱码等无法正常显示的问题,查了好多资料,总结出自己的一点技巧: WINDOWS 下导入应该这样 使用MYSQL的命令 在DOS命令下进入mysql的bin目录下,输入mysql -uroot -p…