机器学习开始-02逻辑回归

python机器学习手写算法系列——逻辑回归 从机器学习到逻辑回归 今天,我们只关注机器学习到线性回归这条线上的概念。别的以后再说。为了让大家听懂,我这次也不查维基百科了,直接按照自己的理解用大白话说,可能不是很严谨。 机器学习就是机器可以自己学习,而机器学习的方法就是利用现有的数据和算法,解出算法的参数。从而得到可以用的模型。 监督学习就是利用已有的数据(我们叫X,或者特征),和数据的标注(我们叫Y),找到x和y之间的对应关系,或者说是函... 阅读详情

业界名言:数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已

什么是逻辑回归

逻辑回归(Logistic Regression)是一种广泛应用于分类问题的统计学习方法,尽管名字中带有"回归",但它实际上是一种用于二分类或多分类问题的算法。

逻辑回归通过使用逻辑函数(也称为 Sigmoid 函数)将线性回归的输出映射到 0 和 1 之间,从而预测某个事件发生的概率。

逻辑回归的应用场景

信用评分:预测贷款申请人的违约风险。
医疗诊断:根据病人的症状预测疾病的可能性。
市场营销:预测用户是否会点击广告或购买产品
垃圾邮件检测(是垃圾邮件/不是垃圾邮件)
疾病预测(患病/不患病)
客户流失预测(流失/不流失)

逻辑回归几个重要概念

Sigmoid 函数

σ ( x ) = 1 1 + e − x \sigma(x) = \frac{1}{1 + e^{-x}} σ(x)=1+e−x1​
一个简单的图形表示,sigmoid函数将输出映射到了0和1之间,从而预测某个事件发生的概率
在这里插入图片描述

损失函数

是机器学习中用于量化模型预测结果与真实标签之间差异的数学工具。其核心目标是为模型优化提供一个可计算的目标,通过最小化损失函数,模型能逐步调整参数以逼近真实数据分布
逻辑回归常用的损失函数是对数损失,又叫交叉熵损失函数,来衡量模型预测的效果。

对于每个样本,它的损失可以表示为:
L ( θ ) = − [ y i log ⁡ ( y ^ i ) + ( 1 − y i ) log ⁡ ( 1 − y ^ i ) ] L(\theta) = -[y_i \log(\hat{y}_i) + (1-y_i) \log(1-\hat{y}_i) ] L(θ)=−[yi​log(y^​i​)+(1−yi​)log(1−y^​i​)]
对整个训练集的损失是对所有样本损失的平均:
L ( θ ) = − 1 N ∑ i = 1 N [ y i log ⁡ ( y ^ i ) + ( 1 − y i ) log ⁡ ( 1 − y ^ i ) ] L(\theta) = -\frac{1}{N} \sum_{i=1}^{N} \left[ y_i \log(\hat{y}_i) + (1-y_i) \log(1-\hat{y}_i) \right] L(θ)=−N1​i=1∑N​[yi​log(y^​i​)+(1−yi​)log(1−y^​i​)]
其中 N 是训练样本的数量,yi​ 是真实标签,y^​i​ 是预测概率值
下面是一个简单的图形,p是预测的概率,图表直观地展示了当真实标签固定时,损失如何随着预测概率的变化而变化
在这里插入图片描述

横轴(Predicted Probability, p):表示模型预测的概率为正类(通常标记为1)的概率值,范围从0到1。
纵轴(Loss):表示对应的损失值,反映了预测概率与真实标签之间的差异程度。
曲线:
红色曲线(y=1):当真实标签为1时,损失随预测概率的变化。
	当预测概率接近0时,损失非常大,因为模型严重错误地预测了负类。
	当预测概率接近1时,损失接近0,因为模型正确预测了正类。
蓝色曲线(y=0):当真实标签为0时,损失随预测概率的变化。
	当预测概率接近1时,损失非常大,因为模型严重错误地预测了正类。
	当预测概率接近0时,损失接近0,因为模型正确预测了负类。
虚线(p=0.5):表示预测概率为0.5的位置,此时模型对正负类的预测不确定。

构建逻辑回归模型的步骤

1.数据EDA
2.特征工程
3.模型构建与训练
4.模型评估与调优
5.模型解释与部署

举个例子

课题:Binary Classification with a Bank Dataset

#逻辑回归
import numpy as np 
import pandas as pd
from sklearn.linear_model import LogisticRegression

# 数据
test = pd.read_csv("../data/BankDataset/test.csv") # 验证集
train = pd.read_csv("../data/BankDataset/train.csv") # 训练集
# 合并测试集和训练集
test['type'] = 'test'
train['type'] = 'train'
all_data = pd.concat([test,train])
all_columns = all_data.columns.tolist()

数据EDA

print(all_columns)
"""
id → ID(标识符/唯一编号)
age → 年龄
job → 职业
marital → 婚姻状况
education → 教育程度
default → 是否有违约记录(通常指信贷违约,如“是否拖欠债务”)
balance → 账户余额
housing → 是否有住房贷款(或“住房贷款状态”)
loan → 是否有个人贷款(或“贷款状态”)
contact → 联系方式(或“沟通渠道”,如电话、邮件等)
day → 日期(日)(当月中的第几天)
month → 月份
duration → 通话时长(单位:秒,常见于电话营销场景)
campaign → 营销活动次数(客户被联系的次数)
pdays → 上次联系间隔天数(距离上次联系的间隔天数,999表示未联系过)
previous → 之前营销活动次数(客户在本次活动前参与的营销次数)
poutcome → 之前营销结果(如“成功”“失败”“未响应”等)
y → 目标变量(通常为二分类标签,如“是否购买产品”“是否响应营销”)
"""

#查看列类型
print("train",all_data.dtypes)
# 缺失值查看
missing_report = pd.DataFrame({
    'Missing_Count': all_data[all_columns].isnull().sum(),
    'Missing_Ratio': (all_data[all_columns].isnull().sum() / len(all_data[all_columns])).round(4),
    'Valid_Count': all_data[all_columns].count(),
    'Valid_Ratio': (all_data[all_columns].count() / len(all_data[all_columns])).round(4)
})
print(missing_report)

# 获取文本列和数值列
numeric_cols = all_data.select_dtypes(include=['number']).columns.tolist()
non_numeric_cols = all_data.select_dtypes(exclude=['number']).columns.tolist()
# 查看文本特征列的值
for col in non_numeric_cols:
    print(col)
    print(all_data[col].unique())

在这里插入图片描述
对于一些有顺序性的特征进行有序编码

# 对于一些有顺序性的特征进行有序编码
poutcome_map = {'failure':0,'unknown':1,'other':2,'success':3,None:1} #使用顺序编码,从失败~成功
default_map={'no':0,'yes':1,None:-1} # 
housing_map={'no':0,'yes':1,None:-1} #
loan_map={'no':0,'yes':1,None:-1} #
education_map = {
    'primary': 1,
    'secondary': 2,
    'tertiary': 3,
    'unknown': 0
}
order_columns=['poutcome','default','housing','loan','education']
all_data["poutcome_encode"]=all_data['poutcome'].map(poutcome_map)
all_data["default_encode"]=all_data['default'].map(default_map)
all_data["housing_encode"]=all_data['housing'].map(housing_map)
all_data["loan_encode"]=all_data['loan'].map(loan_map)
all_data["education_encode"]=all_data['education'].map(education_map)
#删除转换的列
all_data.drop(order_columns,axis=1, inplace=True)

对没有顺序性的列进行独热编码

# 对月份进行标签编码
from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
all_data['month_encoded'] = le.fit_transform(all_data['month'])
# 对职业进行独热编码编码
job_dummies = pd.get_dummies(all_data['job'], prefix='job')
job_dummies = job_dummies.astype(int)  # 转换为0/1
# 对婚姻状况进行独热编码
marital_dummies = pd.get_dummies(all_data['marital'], prefix='marital')
marital_dummies = marital_dummies.astype(int)  # 转换为0/1
# 对联系方式进行独热编码
contact_dummies = pd.get_dummies(all_data['contact'], prefix='contact')
contact_dummies = marital_dummies.astype(int)  # 转换为0/1

构建新的数据集

# 合并为新的数据集
finall_data=pd.concat([all_data,job_dummies,marital_dummies,contact_dummies],axis=1)
encode_col=['job','marital','contact','month']
finall_data.drop(encode_col,axis=1, inplace=True)
new_train = finall_data[finall_data['type']=='train'].copy()
new_test = finall_data[finall_data['type']=='test'].copy()
new_train.drop(['type'],axis=1, inplace=True)
new_test.drop(['type'],axis=1, inplace=True)
Y_train = new_train['y']
new_train.drop(['y','id'],axis=1, inplace=True)
new_test.drop(['y','id'],axis=1, inplace=True)

构建模型

# 创建模型
from sklearn.linear_model import LogisticRegression
# 创建模型(可调整参数)
model = LogisticRegression(
    penalty='l2',  # 正则化类型(L1/L2)
    C=1.0,         # 正则化强度(越小正则化越强)
    solver='lbfgs', # 优化算法('lbfgs', 'liblinear', 'saga')
    max_iter=1000,  # 最大迭代次数
    random_state=42
)
#训练模型
model.fit(new_train,Y_train)

使用模型

y_pred = model.predict(new_test)
submission_df = pd.DataFrame(data={'id': test['id'], 'y': y_pred})
submission_df.to_csv('output.csv', index=False)

参数解释

penalty(正则化类型)
作用:指定正则化类型,用于防止过拟合。
可选值: ‘l2’(默认):L2 正则化(权重衰减),对大权重施加惩罚,使参数更平滑。 ‘l1’:L1 正则化,倾向于产生稀疏解(部分参数为零,适用于特征选择)。 ‘elasticnet’:L1 和 L2 的组合(需额外设置 l1_ratio 参数)。 None:无正则化(不推荐,易过拟合)。
调整建议: 如果特征较多,尝试 ‘l1’ 进行特征选择。 默认 ‘l2’ 通常表现稳定

== C(正则化强度)==
作用:控制正则化的强度,与模型复杂度负相关。
取值: 必须为正浮点数(如 C=0.1, C=1.0, C=10)。
越小:正则化越强,模型更简单(可能欠拟合)。
越大:正则化越弱,模型更复杂(可能过拟合)。
调整建议: 通过交叉验证(如 GridSearchCV)搜索最优值(例如 C=[0.01, 0.1, 1, 10])。 默认值 C=1.0 适合多数场景。
solver(优化算法)
作用:指定损失函数的优化算法,不同算法对参数的支持和效率不同。 可选值:
‘lbfgs’(默认):拟牛顿法,适合中小型数据集,支持 ‘l2’ 和 ‘none’。
‘liblinear’:坐标下降法,适合小型数据集,支持 ‘l1’ 和 ‘l2’。
‘saga’:随机梯度下降,适合大数据集,支持 ‘l1’、‘l2’ 和’elasticnet’。
‘newton-cg’:牛顿法,支持 ‘l2’ 和 ‘none’。
‘sag’:随机平均梯度下降,适合大数据集,仅支持 ‘l2’。
调整建议: 数据量小:‘liblinear’ 或 ‘lbfgs’。 数据量大:‘saga’ 或 ‘sag’。 需要 L1 正则化:选择 ‘liblinear’ 或 ‘saga’。
max_iter(最大迭代次数)
作用:控制优化算法的最大迭代次数,确保算法收敛。
默认值:100(可能不足,尤其是复杂数据)。
调整建议: 如果收敛警告(ConvergenceWarning),增加此值(如 max_iter=1000)。 对于大型模型或高维数据,可能需要更大值(如 5000)。
random_state(随机种子)
作用:控制随机数生成,确保结果可复现。
适用场景: 当 solver=‘lbfgs’、‘sag’ 或 ‘saga’ 时,影响权重初始化。在交叉验证或数据洗牌时固定随机性。
调整建议: 固定为整数(如 42)以保证结果一致性。

模型优化

努力码字中…
在这里插入图片描述

初学者入门机器学习 (ML)的推荐教程 了解基本的机器学习概念并不难。有大量免费的在线博客文章、视频和编码教程可以引导您了解基础知识——从介绍性内容到常见应用程序,再到算法和应用技能。这篇文章总结了一些用于介绍 ML 的最佳免费选项。它按逻辑顺序排列,每个概念都建立在上一个概念的基础上。 阅读详情

相关推荐

从头开始机器学习:逻辑回归

本篇实现线性回归的先决知识是:基本线性代数,微积分(偏导数)、梯度和、Python (NumPy);从线性方程入手,逐渐理解线性回归预测问题。

gongdiwudu的专栏 4063

机器学习之逻辑回归(Logistic Regression)

在公众号「python风控模型」里回复关键字:学习资料,免费领取。 python风控模型 持牌照金融公司模型专家,教学主页 https://ke.qq.com/teacher/231469242?tuin=dcbf0ba

fulk6667g78o8的专栏 2万+

用 PySpark ML 构建机器学习模型

在本文中,我们将介绍如何使用PySpark ML库构建机器学习模型。PySpark ML是Spark的机器学习库,它提供了一系列强大的工具和算法,用于构建和训练机器学习模型。至此,我们已经成功使用PySpark ML构建了一个简单的机器学习模型。PySpark ML提供了丰富的工具和功能,帮助您在大规模数据集上构建强大的机器学习模型。接下来,我们选择要使用的机器学习算法。我们将使用PySpark ML来构建一个分类模型,并使用一个示例数据集进行训练和测试。最后,我们可以使用训练好的模型对新的数据进行预测。

ByteNinja的博客 435

spark 逻辑回归算法案例_黄美灵的Spark ML机器学习实战

原标题:黄美灵的Spark ML机器学习实战本课程主要讲解基于Spark 2.x的ML,ML是相比MLlib更高级的机器学习库,相比MLlib更加高效、快捷;ML实现了常用的机器学习,如:聚类、分类、回归等算法。本课拒绝枯燥的讲述,将循序渐进从Spark2.x的基础知识开始,然后再透彻讲解各个算法的理论、详细展示Spark实现,最后均会通过实例进行解析实战,帮助大家真正从理论到实践全面掌握Spar...

weixin_29174385的博客 477

固定翼飞行器建模(一)——六自由度动力学

前两期文章讲完了气动力和气动力矩的模型,本期将来讲解一下六自由度部分的动力学与运动学方程。

2302_80148937的博客 1万+

Arduino程序设计(十四)舵机控制实验(SG90)

本文介绍SG90舵机控制原理及实验,主要内容有:1、介绍SG90舵机;2、舵机0°~180°来回转动;3、串口控制舵机转动固定角度。(1)舵机是一种位置(角度)伺服的驱动器。舵机只是一种通俗的叫法,其实质是一个伺服马达。在需要角度不断变化并可以保持的控制系统中应用广泛。如遥控机械人、飞机模型等。(2)舵机的转动角度为0~180°,其内部结构包括电机,控制电路和机械结构三部分。电机有三根线引出,分别接VCC、GNG和信号线。

Alice的博客 1万+

ML.NET 机器学习实用指南(一)

机器学习(ML)在许多行业中得到广泛应用,如科学、医疗保健和研究,其受欢迎程度仍在不断增长。2018 年 3 月,微软推出了 ML.NET,以帮助.NET 爱好者与机器学习(ML)进行工作。通过这本书,你将探索如何使用 C#代码构建 ML.NET 应用程序,并使用各种 ML 模型。本书首先为你概述了机器学习和使用的 ML 算法类型,同时介绍了 ML.NET 是什么以及为什么需要它来构建 ML 应用程序。然后,你将探索 ML.NET 框架、其组件和 API。本书将作为一本实用指南,帮助你使用 ML.NET 库

龙哥盟 2939

解读Autoware.Universe规划模块:Behavior Path Planner

Behavior Path Planner是一个基于行为生成不同形态路径的路径规划器,负责生成 基于交通状况的路径(path), 车辆可以移动的可行驶区域(drivable area)(在路径消息中定义), 将被发送到车辆接口的转向信号(turn signal) 命令。

策 5491

机器学习之逻辑回归算法

文章目录逻辑回归原理推导逻辑回归求解 逻辑回归(Logistic Regression)是机器学习中的一种分类模型,它是一种分类算法,虽然名字中带有回归,但是它与回归之间有一定的联系。 看到回归二字,很多人可能会认为逻辑回归算法是线性回归算法的升级,还是属于回归任务吧?其实并不是这样的,逻辑回归本质上是一个经典的二分类问题,要做的任务性质发生了变化,也就是一个是否或者说0/1问题,有了线性回归的基础,只需稍作改变,就能完成分类任务。 由于逻辑回归算法的简单和高效,在实际中应用非常广泛,比如判断是否为垃圾邮件

自成背后的博客 7591

SMPLify-X关键点映射与OpenPose格式转换实战

本文深入解析了SMPLify-X与OpenPose之间关键点映射与格式转换的实战方法。针对SMPL、SMPL-H、SMPLX等参数化人体模型与OpenPose 2D姿态估计标准之间的数据鸿沟,文章详细对比了双方的关键点定义差异,并提供了核心的Python转换代码与映射表构建思路。通过清晰的步骤讲解与调试技巧,帮助开发者实现3D关节数据到OpenPose标准格式的高效、准确转换,为动作捕捉、3D姿态估计等应用奠定数据基础。

weixin_29046035的博客 166

一张微服务地图的十年演进:Spring Cloud 核心、扩展与工具组件的定位、原理与选型

本文把 Spring Cloud 当作一张微服务地图来读:先说明它是由 Commons 抽象层、实现层和 Boot 装配层构成的发行版,再沿一次请求梳理注册发现、负载均衡、声明式调用、容错限流、网关、配置、追踪与总线七类核心组件的原理与换代,并扩展到云平台、服务网格、消息流、批处理、安全与周边生态。仿真实测:默认参数下实例宕机平均 242 秒才被感知,优雅下线降到 47 秒;一个慢实例让轮询的 P99 达 49 秒,P2C 仅 203 毫秒。最后给出退场替代表、技术栈组合、升级路线和决策树。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 169万+

用机器学习来驱动一个iOS应用:如何开始使用Create ML和Core ML

转:https://zhuanlan.zhihu.com/p/90919163 本文中提到的所有资源都可以从这里下载:GitHub repository 机器学习目前是科技行业最热门的话题之一。能够将以前依赖人工操作的任务自动化,为许多创新和令人兴奋的可能性打开了大门。 由于机器学习算法需要相当大的计算能力,过去它们只能在强大的后端实现。但是,随着手持设备嵌入了越来越强大的中央处理器(cpu),在这些设备上实现机器学习开始成为一个可行的选择。智能手机制造商抓住了这个机会。他们开始定期发布工具,使开发人

sharpyl的专栏 787

Calibre :Standard Verification Rule Format(SVRF) Manual (1-2)

摘要:SVRF规则文件是用于Calibre和ICverify工具的脚本文件,包含层定义、规则检查、注释、预处理指令等元素。规则文件支持全局/局部层定义、隐式层操作,以及条件编译指令(#DEFINE/#IFDEF等)。宏功能(DMACRO/CMACRO)可实现代码复用,支持参数化层操作和嵌套调用。预处理指令支持版本控制(#IFDEFCALIBRE_VERSION)和环境变量默认值设置(#PRAGMAENV)。宏中的层名具有局部作用域,可通过特殊语法实现全局层名指定,LOCAL()修饰符可创建调用作用域内的唯一

u013620135的博客 1334

机器学习02_逻辑回归作业

机器学习逻辑回归_02 在本次逻辑回归作业中,我们将建立逻辑回归模型,通过学生的两门成绩,来预测该考生能都被大学录取。 I.数据可视化 将作业下载好后,打开octave,cd到machine-learning-ex2/ex2目录中,加载‘ex2data2.txt’(load),编写plotData.m函数 function plotData(X, y) figure; hold on; ...

weixin_34015860的博客 311

AUTOSAR从入门到精通-诊断事件管理模块(DEM)(四)

在 Autosar 中,诊断事件是指在车辆电子系统中发生的特定事件,可以用于诊断和故障排除。DEM模块通过EventId和相关的EventName来表示每个诊断事件。诊断事件的状态代表了监控器的结果,DEM模块通过RTE或其他BSW模块从SW-C接收监控器的结果。DEM模块使用EventId来管理系统中每个诊断事件的状态,并对各个测试结果执行所需的操作,例如存储冻结帧/拓展帧。所有监控器和BSW模块使用EventId作为符号化的EventName来管理诊断事件。

getusushu的博客 1509

【KingSCADA】如何建立硬件系统及相关变量

本篇主要讲解如何定义设备,如何定义变量。KingSCADA3.8的采集系统是指负责和现场设备进行通讯,并采集现场数据和控制现场数据的模块,称之为采集器,也叫IOServer应用,它是一组独立的应用程序,可以脱离KingSCADA3.8软件,它依赖于KingSCADA3.8驱动产品,通过驱动与IO设备进行通讯。采集系统由通讯链路,设备,数据块组成。链路:链路是指计算机通过什么方式(接口)与设备进行连接,链路类别:串口,以太网,GPRS,Modem,通信卡,采集卡,无链路。

做有价值的事,积累有价值的笔记! 1万+

【机器学习】逻辑回归

Logistic回归是一种广义线性回归(generalized linear model),因此与多重线性回归分析有很多相同之处。它们的模型形式基本上相同,都具有 w’x+b,其中w和b是待求参数,其区别在于他们的因变量不同,多重线性回归直接将w’x+b作为因变量,即y =w’x+b,而logistic回归则通过函数L将w’x+b对应一个隐状态p,p =L(w’x+b),然后根据p 与1-p的大小决定因变量的值。

2301_82030102的博客 2269

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

机器学习——逻辑回归

逻辑回归的简述逻辑回归概述sigmod函数梯度下降 逻辑回归 概述 当一看到“回归”这两个字,可能会认为逻辑回归是一种解决回归问题的算法,然而逻辑回归是通过回归的思想来解决二分类问题的算法。(不是回归,是二分类算法;机器学习算法一般都是先选择逻辑回归再用复杂的)。 逻辑回归是将样本特征和样本所属类别的概率联系在一起,假设现在已经训练好了一个逻辑回归的模型为 f(x) ,模型的输出是样本 x 的标签是 1 的概率,则该模型可以表示 若得到了样本 x 属于标签 1 的概率后,很自然的就能想到当 0.5 时 x

qq_52669357的博客 1239

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

ML-From-Scratch:从零开始实现机器学习算法

ML-From-Scratch项目为那些希望深入理解机器学习算法原理的人提供了宝贵的学习资源。通过阅读和运行这些从零开始的实现,我们可以更好地掌握各种算法的核心思想和数学原理,而不仅仅是调用现成的库函数。该项目也启发我们在实际工作中,除了使用成熟的框架外,也要保持对算法本质的洞察和思考。

m0_75126181的博客 511

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Arma_ML: 高性能C++统计机器学习库

Arma_ML: 高性能C++统计机器学习库 项目介绍 Arma_ML 是一个基于 Armadillo 库的轻量级 C++ 机器学习实现,由 Yuzhen Liu 开始于 2019 年 3 月 22 日。该项目旨在提供一系列高效的统计机器学习算法,包括但不限于线性回归、逻辑回归分类器、Sofrmax 分类器、C4.5 决策树、随机森林、梯度提升决策树(GBDT)、因子分解机(FM)、朴素贝叶斯分类...

gitblog_00946的博客 468

ml-from-scratch:从零开始编写机器学习算法

ml-from-scratch:从零开始编写机器学习算法 项目介绍 ml-from-scratch 是一个开源机器学习项目,它致力于从零开始,使用纯 Python 和 Numpy 库手动实现机器学习算法,不依赖任何自动微分框架,如 Tensorflow、Pytorch 等。该项目涵盖了多种机器学习和深度学习算法,旨在帮助开发者更深入地理解算法背后的数学原理。 项目技术分析 ml-from-scra...

gitblog_00211的博客 1076

机器学习之逻辑回归

逻辑回归也称作logistic回归分析, 是一种广义的线性回归分析模型,属于机器学习中的监督学习。其推导的过程与计算方式类似回归的过程。但是实际上主要用于解决二分类问题(也可以解决多分类问题)。通过给定n组数据(训练集)来训练模型,并在训练结束后对给定的一组或者多组数据(测试集)进行分类。

qq_40861391的博客 1315

ML机器学习算法(一): 基于逻辑回归的分类预测

机器学习算法(一): 基于逻辑回归的分类预测 1 逻辑回归的介绍和应用 1.1 逻辑回归的介绍 逻辑回归(Logistic regression,简称LR)虽然其中带有"回归"两个字,但逻辑回归其实是一个分类模型,并且广泛应用于各个领域之中。虽然现在深度学习相对于这些传统方法更为火热,但实则这些传统方法由于其独特的优势依然广泛应用于各个领域中。 而对于逻辑回归而且,最为突出的两点就是其模型简单和模型的可解释性强。 逻辑回归模型的优劣势: 优点:实现简单,易于理解和实现;计算代价不高,速度很快,存

我就吃一口的BLOG 1683

机器学习之逻辑回归的数学设计

机器学习之逻辑回归中的数学之美1.机器学习基本的几种算法2.什么是线性回归2.1 什么是线性回归2.2 线性回归的公式3.逻辑回归公式及设计原理3.1 公式介绍3.2 为什么要使用激活函数3.3 损失函数是什么,为什么这么设计3.3.1 简介3.3.2 为什么要用这个函数作为损失函数3.3.3 为什么这么设计损失函数 这几天准备开一个新的专栏,记录一下自己学习的过程总结一些心得,希望和大家一起进步。虽然现在python的组件都是开盒即用,所有算法和api全部封装好,但是对于我来说,原理不明白是难以接受的。所

Darlight的博客 1560
上一篇: HDFS基础命令
Aronup
博客等级 码龄7年 75粉丝 35原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值