当前位置: 首页 > news >正文

24/8/5算法笔记 逻辑回归sigmoid

今日是代码对sigmoid函数的实现和运用

#linear_model线性回归
#名字虽然叫逻辑回归,作用于分类
#分类:类别
#回归:预测
from sklearn.linear_model import LogisticRegression

实现函数

import numpy as np
import matplotlib.pyplot as pltdef sigmoid(x):return 1/(1+np.exp(-x))x = np.linspace(-5,5,100)y = sigmoid(x)plt.plot(x,y,color='green')

损失函数

from sklearn import datasets
from sklearn.linear_model import LogisticRegression
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
#Z-score归一化
from sklearn.preprocessing import scale,StandardScaler

加载数据

X,y=datasets.load_breast_cancer(return_X_y=True)X=X[:,:2]#切片两个特征
display(X.shape)
display(y.shape)

建模

model = LogisticRegression()#训练,和之前线性回归,类似
#后面其他方法,算法,类似
model.fit(X,y)

逻辑回归线性方程拿出来:系数
w1 = model.coef_[0,0]
w2 = model.coef_[0,1]
b = model.intercept_
print('方程系数',w1,w2)
print('截距',b)

sigmoid函数

def sigmoid(X,w1,w2,b):z = w1*X[0] + w2*X[1] + b#方程表示return 1/(1+ np.exp(-z))

损失函数

def loss_function(X,y,w1,w2,b):loss = 0for X_i,y_i in zip(X,y):p = sigmoid(X_i,w1,w2,b)#概率p=np.clip(p,0.0001,0.999)#裁剪loss+= -y_i * np.log(p) +(1-y_i)* np.log(1-p)return loss

定义参数w1,w2取值空间

w1_space= np.linspace (w1 - 2,w1 +2,100)w2_space = np.linspace(w2 - 2,w2 +2,100)

损失计算

loss1_ = np.array([loss_function(X,y,i,w2,b) for i in w1_space])
loss1_

loss2_ = np.array([loss_function(X,y,w1,i,b) for i in w2_space])
loss2_

可视化¶

fig1 = plt.figure(figsize=(12,9))plt.subplot(2,2,1)
plt.plot(w1_space,loss1_,color='green')plt.subplot(2,2,2)
plt.plot(w1_space,loss1_,color='red')

逻辑回归代码实现

import numpy as np
from sklearn import datasets
from sklearn.linear_model import LogisticRegression
#将数据拆分
from sklearn.model_selection import train_test_split
X,y = datasets.load_iris(return_X_y=True)
cood = y!=2#过滤数据:类别是2,过滤掉
X=X[cood]
y=y[cood]
y

加载数据并拆分
#将调练数据测试数据:80% 训练数据,保留20%,测试数据
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.2)display(X_train.shape,X_test.shape)
display(y_train.shape,y_test.shape)

训练
model = LogisticRegression()model.fit(X_train,y_train)y_pred = model.predict(X_test)
print('预测结果是:',y_pred)proba_ = model.predict_proba(X_test)
print('预测概率是:\n',proba_)

y_pred

proba_.argmax(axis=1)

概率手动计算
def sigmoid(x):return 1/(1+np.exp(-z))#方程系数和截距
w=model.coef_
b=model.intercept_#求解线性方程
z=X_test.dot(w.reshape(-1))+bp=sigmoid(z)#列合并
#np.column_stack([1-p,p])
np.concatenate([(1-p).reshape(-1,1),p.reshape(-1,1)],axis = 1)[:5]

model.predict_proba(X_test)

http://www.lryc.cn/news/419082.html

相关文章:

  • 适用于验证码的OCR,识别快速,使用简单!
  • 超简单适合练手的双指针题:判断子序列
  • 打破老美垄断,潘展乐商业价值起飞
  • java面试题:简化URL
  • 用 echarts 开发地图、点击展示自定义信息框
  • Android 应用兼容性变更调试
  • 76 多态
  • 数据采集工具之Canal
  • 【后端】消息中间件小册
  • 【进阶篇-Day14:JAVA中IO流之转换流、序列化流、打印流、Properties集合的介绍】
  • 【Material-UI】Checkbox 组件中的 Label Placement 设置详解
  • XJTUSE-离散数学-集合
  • 安徽省消防设施操作员题库
  • Singularity容器安装与使用
  • Linux 文件、重定向、缓冲区
  • WEB漏洞-SQL注入之MYSQL注入
  • mysql 查询 from a, b 和 a left join b 有什么区别
  • 禁用ssh 22端口
  • C++基础编程的学习3
  • Java中的Optional类:解锁优雅编程的秘密
  • 聆思CSK6大模型开发板语音控制风扇(上)
  • 代码随想录算法训练营第四十一天 | 121. 买卖股票的最佳时机、122. 买卖股票的最佳时机II、123. 买卖股票的最佳时机III
  • 延时队列与redis and rabbitmq
  • 数据结构--单链
  • 春秋云镜CVE-2023-38836
  • Linux 进程概念
  • 【秋招突围】2024届校招-米哈游笔试题-第二套
  • tklog v0.0.9 :Rust灵活高效日志管理
  • 长安链java-sdk打成jar包部署找不到配置文件,springBoot项目制作Docker镜像
  • AI问答:理解软件开发中的几个概念 / 软件逆向、加密、加固、脱壳、反编译