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

头歌Educator机器学习与数据挖掘-逻辑回归

答案分享

第1关:逻辑回归算法大体思想

#encoding=utf8import numpy as np#sigmoid函数
def sigmoid(t):#输入:负无穷到正无穷的实数#输出:转换后的概率值result = 0#********** Begin **********#result = 1 / (1 + np.exp(-t))# 强制四舍五入到 12 位小数,以匹配最严格的测试用例精度result = np.round(result, 12) #********** End **********#return resultif __name__ == '__main__':pass

第2关:逻辑回归的损失函数

第3关:梯度下降

# -*- coding: utf-8 -*-import numpy as np
import warnings
warnings.filterwarnings("ignore")#梯度下降,inital_theta为参数初始值,eta为学习率,n_iters为训练轮数,epslion为误差范围
def gradient_descent(initial_theta,eta=0.05,n_iters=1e3,epslion=1e-8):#  请在此添加实现代码  ##********** Begin *********#theta = initial_thetan_iters = int(n_iters)# 定义损失函数及其梯度def dJ(theta):# 梯度:2 * (theta - 3)return 2 * (theta - 3)# 迭代进行梯度下降for i in range(n_iters):gradient = dJ(theta)last_theta = theta# 更新参数:theta = theta - eta * gradienttheta = theta - eta * gradient# 提前停止条件:如果参数变化小于epslionif(np.abs(theta - last_theta) < epslion):break#********** End **********#return theta

第4关:逻辑回归算法流程

# -*- coding: utf-8 -*-import numpy as np
import warnings
warnings.filterwarnings("ignore")
#定义sigmoid函数
def sigmoid(x):return 1/(1+np.exp(-x))#梯度下降,x为输入数据,y为数据label,eta为学习率,n_iters为训练轮数
def fit(x,y,eta=1e-3,n_iters=1e4):#  请在此添加实现代码  ##********** Begin *********#m, n = x.shape# 1. 初始化参数 theta:维度为 (n, 1) 或 (n,)# 我们假设 x 已经是增广矩阵(包含 x0=1),theta 的长度应与特征数量 n 匹配theta = np.zeros(n) # 2. 确保 y 是一维向量y = y.flatten()# 3. 迭代进行梯度下降for i in range(int(n_iters)):# 线性预测:z = X * theta (这里使用矩阵乘法或点乘)# 注意:np.dot(x, theta) 自动处理 (m, n) @ (n,) -> (m,)z = np.dot(x, theta)# Sigmoid激活:hat_p = sigmoid(z)hat_p = sigmoid(z)# 梯度计算:(1/m) * X.T @ (hat_p - y)# 误差项:(hat_p - y)error = hat_p - y # 梯度:(X.T @ error) / m。注意:np.dot(x.T, error) 自动处理 (n, m) @ (m,) -> (n,)gradient = np.dot(x.T, error) / m# 参数更新:theta = theta - eta * gradienttheta = theta - eta * gradient#********** End **********#return theta

第5关:sklearn中的逻辑回归

#encoding=utf8
from sklearn.linear_model import LogisticRegression
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline
import numpy as np # 确保numpy可用,尽管在这里主要用到sklearndef cancer_predict(train_sample, train_label, test_sample):'''优化后的代码:引入特征缩放(StandardScaler)以提高模型性能和收敛稳定性。'''#********* Begin *********## 1. 定义管道:将数据标准化和模型训练连接起来# max_iter=500 是为了防止收敛警告,random_state=42 保证可复现性。model_pipeline = Pipeline([('scaler', StandardScaler()),('logreg', LogisticRegression(max_iter=500, random_state=42))])# 2. 训练管道:训练时会先对训练集进行拟合并缩放,然后用缩放后的数据训练模型。model_pipeline.fit(train_sample, train_label)# 3. 预测并返回结果:预测时会自动对测试集进行缩放(使用训练集的统计信息)。return model_pipeline.predict(test_sample)#********* End *********#
http://www.dtcms.com/a/460899.html

相关文章:

  • 安装kafka-2.5.1
  • 基于KAN融合的混合CNN-Transformer模型应用于皮肤癌分类
  • 【rabbitmq】RabbitMQ 全面详解:从核心概念到高级应用
  • Kafka 面试题及详细答案100道(91-95)-- 问题排查与解决方案1
  • CentOS 7 升级perl版本到5.40.3 —— 筑梦之路
  • 龙华百度快速排名seo优化主要做什么
  • 复杂网络仿真从入门到精通(1)关键网络指标解析
  • 辽宁城乡建设集团成立网站福田网站建设有限公司
  • 【算法】用字符串进行高精度运算
  • 企业网站建设多钱大型网站服务器价格
  • LeetCode 393 - UTF-8 编码验证
  • Ruby 条件判断
  • 车企数据治理平台化实战:从数据孤岛到全链路治理的架构演进
  • Subword分词方法的BPE与BBPE
  • 对比的网站建设注册网站需要营业执照吗
  • 郑州网站建设排行榜易语言网站做软件
  • npm error Could not resolve dependency:
  • arcgis矢量数据转为标准geojson格式
  • 解决 React 项目初始化(npx create-react-app)速度慢的 7 个实用方案
  • 第5篇 如何计算两个坐标点距离--opencv图像中的两个点
  • powerShell无法执行npm问题
  • npm install sqlite3时报错解决
  • Docker compose-配置阿里云DNS加速访问百炼大模型
  • 使用HTML和Python开发街霸游戏
  • npm相关知识
  • asp.net 网站提速.net做网站之前设置
  • 化妆品网站建设方案项目书手机网站模板建站
  • QT/C++中的哈希表
  • Java学习之旅第二季-14:super关键字与final关键字
  • 【Unity】uNet游戏服务端框架(一)服务端架构设计