从零开始的机器学习0-基础知识及线性回归

【图书推荐】《Spark 3.0大数据分析与挖掘:基于机器学习》 Spark作为新兴的、应用范围广泛的大数据处理开源框架,吸引了大量的大数据分析与挖掘从业人员进行相关内容的学习与开发,其中ML是Spark 3.0机器学习框架使用的核心。本书用于Spark 3.0 ML大数据分析与挖掘入门,配套示例源码、PPT课件、数据集、思维导图、开发环境和作者答疑服务。 阅读详情

基础知识至线性回归

  从头学习周志华版的机器学习,同时准备使用Python实现一些相关的方法,以及一些小的项目。因为Python是新手,也准备借这次机会熟悉并掌握,代码方面有一些笨拙,希望慢慢改进、进步。

一些问题与概念

1、机器学习的概念是什么?机器学习学的是什么?
机器学习通过计算的手段利用经验(通常为数据)来改善系统自身性能。
研究的主要内容是关于计算机上从数据中产生“模型”的算法,即“学习算法”。P1
2、什么叫做泛化能力,我们可以通过哪些途径增强我们训练出的模型的泛化能力?
学得模型适用于新样本的能力成为“泛化能力”。
假设样本服从一个未知的分布 D \mathcal{D} D,得到关于 D \mathcal{D} D的信息越多,泛化能力越强。通常可以增加训练样本数目,保证每个样本是独立地从这个分布上采样获得。
3、假设空间与版本空间的区别与联系是什么?
假设空间:该问题所有假设组成的空间,即所有假设的集合。
版本空间:在假设空间中与训练集一致的假设的集合。
版本空间是属于假设空间的。
4、归纳偏好的概念以及它的作用是什么?
机器学习过程中对某类型假设的偏好称为“归纳偏好”。
因为训练集对应的版本空间包含的假设可能不唯一,对于某个具体的学习算法必须产生一个模型,这时学习算法的归纳偏好会确定采用哪个假设(有种做决策的感觉),可以看作学习算法对假设进行选择的启发式或“价值观”。
5、什么是过拟合、欠拟合?如何避免这些情况?
过拟合:将训练样本的某些自身特点(训练样本多有的)当作了所有潜在样本都会具有的一般性质。
欠拟合:与过拟合相对,指对训练样本的一般性质尚未学习好。
处理欠拟合:在决策树学习中扩展分支,在神经网络学习中增加训练轮次。
处理过拟合:控制模型复杂度,增加训练样本数目。
6、什么是交叉验证?什么时候要使用交叉验证?为什么?
交叉验证将数据集D划分为k个大小相似的互斥子集,使每个子集尽可能保持数据分布的一致性(即从D中采用分层采样得到)。然后每次将k-1子集作为训练集,剩下的1个作为测试集,进行k次训练和测试,返回k个测试结果的均值。
作用:对学习器的泛化误差进行评估。
可以增加评估结果的稳定性和保真性(跟k有关)。
7、如何评价模型性能?常用的性能指标有哪些,写出公式?
使用“性能度量”的方式。下面公式中D为样例集,m为样例个数,xi和yi分别为第i个样本及其对应的真实标记。
1)均方误差: E ( f ; D ) = 1 m ∑ i = 1 m ( f ( x i ) − y i ) 2 E(f;D)=\frac{1}{m}\sum^{m}_{i=1}(f({\bm x}_i)-y_i)^2 E(f;D)=m1​∑i=1m​(f(xi​)−yi​)2
对于数据分布 D \mathcal{D} D和概率分布函数 p ( ⸱ ) p(⸱) p(⸱): E ( f ; D ) = 1 m ∫ x − D ( f ( x ) − y ) 2 p ( x ) d x E(f;\mathcal{D})=\frac{1}{m}\int_{{\bm x}-\mathcal{D}}(f({\bm x})-y)^2p({\bm x})d{\bm x} E(f;D)=m1​∫x−D​(f(x)−y)2p(x)dx
2)错误率: E ( f ; D ) = 1 m ∑ i = 1 m Γ ( f ( x i ) ≠ y i ) 2 E(f;D)=\frac{1}{m}\sum^{m}_{i=1}\Gamma(f({\bm x}_i)\neq y_i)^2 E(f;D)=m1​∑i=1m​Γ(f(xi​)̸​=yi​)2
精度: acc ( f ; D ) = 1 m ∑ i = 1 m Γ ( f ( x i ) = y i ) 2 = 1 − E ( f ; D ) \textrm{acc}(f;D)=\frac{1}{m}\sum^{m}_{i=1}\Gamma(f({\bm x}_i)= y_i)^2=1-E(f;D) acc(f;D)=m1​∑i=1m​Γ(f(xi​)=yi​)2=1−E(f;D)
8、偏差与方差是什么?过拟合,欠拟合,分别对应偏差与方差的什么情况?
令 y D y_D yD​为 x {\bm x} x在数据集中的标记, f ˉ ( ) \bar f() fˉ​()为学习算法的期望预测。
方差: v a r ( x ) = E D [ ( f ( x ; D ) − f ˉ ( x ) ) 2 ] var({\bm x})= \mathbb{E}_D[(f(\bm{x};D)-\bar f (\bm{x}))^2] var(x)=ED​[(f(x;D)−fˉ​(x))2]
噪声: ε 2 = E D [ ( y D − y ) 2 ] \varepsilon^2= \mathbb{E}_D[(y_D-y)^2] ε2=ED​[(yD​−y)2]
偏差:期望输出与真实标记的差别: v a r ( x ) = E D [ ( f ˉ ( x ) − y ) 2 ] var({\bm x})= \mathbb{E}_D[(\bar f(\bm{x})-y)^2] var(x)=ED​[(fˉ​(x)−y)2]
欠拟合时偏差大(主导),过拟合时方差大(主导)。
9、特征归一化是什么?为什么要归一化?常用的归一化方法有哪些?
不同评价指标往往具有不同的量纲和量纲单位,这样的情况会影响到数据分析的结果,为了消除指标之间的量纲影响,需要进行数据标准化处理(特征归一化),以解决数据指标之间的可比性。原始数据经过数据标准化处理后,各指标处于同一数量级,适合进行综合对比评价。
线性函数归一化(Min-Max Scaling):将原始数据进行线性的变换,并确保新的数据均映射到[0,1]区间内,实现对原始数据的等比缩放:
X n r o m = X − X m i n X m a x − X m i n X_{nrom}=\frac{X-X_{min}}{X_{max}-X_{min}} Xnrom​=Xmax​−Xmin​X−Xmin​​
0均值归一化(Standardization):将原始数据均映射到均值为0,标准差为1的分布上。具体来说,假设原始特征的均值为μ、标准差为σ,那么归一化公式定义为:
z = x − μ σ z=\frac{x-\mu}{\sigma} z=σx−μ​
10、什么是梯度下降算法?写出具体公式,解释小批量随机梯度下降,随机梯度下降
梯度下降法(用到梯度的确定型最优化算法):梯度可以反映函数下降的陡峭程度,梯度下降算法沿着函数最陡峭(梯度最小)的方向往前走一定步长,反复此过程直至找到最优解。
随机梯度下降(Stochastics Gradient Descent, SGD):每次迭代只计算一个样本的损失函数(loss),再逐步遍历所有样本。特点:局部震荡,总体收敛。
小批量随机梯度下降(mini-batch SGD):为了兼顾稳定下降和随机特性以及小计算量。每次迭代选取总体样本中的一小批样本计算损失函数,逐步遍历所有样本。

线性回归的Python实现及测试

线性回归

线性回归模型

一般的线性方程
f ( x ) = w 1 x 1 + w 2 x 2 + . . . + w n x n + b f(x)=w_1x_1+w_2x_2+...+w_nx_n+b f(x)=w1​x1​+w2​x2​+...+wn​xn​+b   写成向量形式 ⇒ f ( x ) = w T x + b \Rightarrow f(\bm{x})= \bm{w} ^T\bm{x}+b ⇒f(x)=wTx+b

线性回归
线性回归使用一般的线性方程做回归,即为处理的数据 X \textbf{X} X建立一个合适的线性模型,也就是说需要确定一组合适的 w \bm{w} w和 b b b。值得注意的是将 X \textbf{X} X中的每组数据 x i \bm{x}_i xi​替换为 x ^ i = ( x i ; 1 ) \hat{\bm{x}}_i=(\bm{x}_i;1) x^i​=(xi​;1),则可以将 w \bm{w} w和 b b b用 w ^ = ( w ; b ) \hat{\bm{w}}=(\bm{w};b) w^=(w;b)代替。模型可以替换为 f ( x ^ i ) = w ^ T x i f(\hat{\bm{x}}_i)= \hat{\bm{w} }^T\bm{x}_i f(x^i​)=w^Txi​。在Python中:

'''线性回归模型'''
def modelLR(x, w):
    fx = dot(x, w)
    return fx

模型合不合适可以根据 f ( x ) f(x) f(x)和真实的 y y y之间的差距来判断,通常我们使用损失函数衡量它们之间差距。

损失函数

均方误差是在线性回归问题中常用的损失函数,写成:
L = 1 m ∑ i = 1 m ( f ( x i ) − y ) 2 L=\frac{1}{m}\sum^{m}_{i=1}(f(\bm{x}_i)-y)^2 L=m1​i=1∑m​(f(xi​)−y)2
通常我们认为损失函数越小,模型越合适,也就是说模型的求解转化为了一个最优化问题,在这个问题中目标函数是损失函数,决策变量为 w ^ \hat{\bm{w} } w^。(基于均方误差最小化来进行模型求解的方法称为最小二乘法)

'''损失函数'''
def lossFun(w, x, y):
    funError = 0
    x = mat(x)
    for i in range(0, size(y, 0)):
        x1 = x[i, :]
        y1 = y[i, 0]
        fx = modelLR(x1, w)
        funError += (fx - y1)**2
    return funError/size(y, 0)

最速下降法

有了优化问题就需要优化方法,回归问题中通常使用梯度下降法,它需要确定两样东西:方向和步长。
我使用的是最速下降法,方向 d k d_k dk​为梯度的负方向:
下面是梯度方向的计算

'''计算梯度'''
def calcGrad(h, x, y, w):   # 计算梯度
    dkCol = size(w, 0)
    dk = ones((1, dkCol))
    for i in range(0, size(w, 0)):
        w1 = w.copy()
        w2 = w.copy()
        w1[i] = w1[i] - h
        w2[i] = w2[i] + h
        y1 = lossFun(w1, x, y)
        y2 = lossFun(w2, x, y)
        dk[0, i] = (y2-y1)/(2*h)
    return dk

步长:精确法为:
α k = arg ⁡ min ⁡ α ≥ 0 f ( w ^ k + α d k ) \alpha_k=\arg \min\limits_{\alpha\geq0}f(\hat{\bm{w}} _k+\alpha d_k) αk​=argα≥0min​f(w^k​+αdk​)
其中: α k \alpha_k αk​需要满足:
ϕ ′ ( α ) = d d w ^ k f ( w ^ k + α d k ) ∣ α = α k = ∇ f ( w ^ k + α k d k ) T d k = 0 \phi'(\alpha)=\frac{\rm{d}}{{\rm d}\hat{\bm{w}} _k}f(\hat{\bm{w}} _k+\alpha d_k)|_{\alpha=\alpha_k}=\nabla f(\hat{\bm{w}} _k+\alpha_k d_k)^Td_k=0 ϕ′(α)=dw^k​d​f(w^k​+αdk​)∣α=αk​​=∇f(w^k​+αk​dk​)Tdk​=0

'''计算步长'''
def calcStep(dk, x, y, w):  # 计算步长
    ak = 1
    for i in range(0, 20):
        newF = lossFun(w+ak*dk, x, y)
        oldF = lossFun(w, x, y)
        if (newF<oldF):
            break
        else:
            ak = ak/2
    return ak

整体的最速下降法为:

'''最速下降法训练'''
def steepest(x, y, w):
    epsilon = 1e-5
    h = 1e-5
    maxIter = 1e3
    for i in range(0, int(maxIter)):
        grad = calcGrad2(h, x, y, w)
        dk = -grad.T
        ak = calcStep(dk, x, y, w)
        neww = w + ak*dk
        if abs(lossFun(neww, x, y)-lossFun(w, x, y)) <= epsilon:
            break
        w = neww
    return w, lossFun(w, x, y)

数据预处理(numpy)

一个numpy中的 矩阵运算方法帖子

读取文件

# 载入数据
path = "D:/事项/机器学习学习/week1/"
train = pd.read_csv(path + 'train.csv', engine='python', encoding='gbk')
test = pd.read_csv(path + 'test.csv', engine='python', encoding='gbk')
yt = pd.read_csv(path + 'answer.csv', engine='python', encoding='gbk')
setTrainX = train.values
setTestX = test.values
setTrainX[setTrainX == "NR"] = 0 #替换操作
setTestX[setTestX == "NR"] = 0

此时读取出的文件为panda的DataFrame格式,通过DataFrame.values可以得到ndarray格式的数据。

numpy中的矩阵调整

使用hstack(A, B) 横向结合两个矩阵,需要保证AB矩阵列数相等;vstack(A, B)纵向结合两个矩阵,需要保证AB矩阵行数相等。
因为在这次数据处理中需要循环着结合矩阵,启动时需要有一个矩阵,使用empty(a, b)产生的矩阵并不会被覆盖,所以用了一个很蠢的办法:

tempX = ones((18, 1))
for i in range(0, size(setTrainX, 0) - 18, 18):
	tempXX = setTrainX[i:i+18, :]
    tempX = hstack((tempX, tempXX))
tempX = tempX[:, 1:]

ndarray中的数据类型转化

矩阵形式的ndarray的数据不能使用强制类型转换的方法改变数据类型,它的数据类型可以通过ndarray.dtype查看,直接更改dtype会引起数据的解释错误,即内存中存储的内容不变,仅改变了解释方式。
接着上面的处理,目前的数据的dtype为 “U32” 是字符串类型,不能参与运算,需要改为浮点型,此时需要用到 ndarray.astype(type) 函数。

x = x.astype(float)

值得注意的是,参数float实际上是转换为 “float64” 类型(默认的浮点类型)。

标准化

标准化会影响算法的收敛速度。

ss= StandardScaler()
for i in range(0, size(x, 1)):
    ss.fit(x[:, i].reshape(-1, 1))
    x[:, i] = ss.transform(x[:, i].reshape(-1, 1)).T

注意ndarray格式的数据需要 .reshape(-1, 1) 才能使用 .fit() 函数,原因暂时不知道

矩阵调用

ndarray下的向量似乎不能使用类似A[a, b]的调用方法,但是用mat(A)转化为matrix类型就可以使用了。

【Python】机器学习-线性回归 在我们深入任何机器学习算法之前,必须首先面对一个根本性的问题:我们选择的工具——Python,其性能的本质是什么?Python以其语法的简洁和开发的迅速而著称,但在计算密集型任务中,纯Python代码的执行效率是出了名的低下。然而,整个Python科学计算生态(NumPy, SciPy, Pandas, Scikit-learn)却表现出惊人的高性能。这种矛盾的背后,隐藏着一个我们必须理解的核心秘密:Python的科学计算能力,本质上是建立在由C、C++和Fortran等编译型语言构建的高性能计算库之上的。 阅读详情

相关推荐

Machine Learning From Scratch--从零开始机器学习

该项目的目的不是尽可能优化和计算高效的算法,而是以透明和可访问的方式呈现它们的内部工作。图:OpenAI健身房中对CartPole-v1环境的深度Q网络解决方案。图:显示了在训练过程中网络如何在重建MNIST数据集中的数字2时变得更好。本项目是用Python实现的一些基本的机器学习模型和算法。数据来自2016年瑞典林雪平测得的温度数据。图:生成手写数字的生成性对抗性网络的训练进度。图:通过进化神经网络对数字数据集进行分类。图:使用 CNN 对数字数据集进行分类。图:使用DBSCAN的卫星数据集聚类。

2301_77778490的博客 9154

机器学习教程(非常详细)从零基础入门到精通,看完这一篇就够了

从广义上来说,机器学习是一种能够赋予机器学习的能力以此让它完成直接编程无法完成的功能的方法。但从实践的意义上来说,机器学习是一种通过利用数据,训练出模型,然后使用模型预测的一种方法。

Python84310366的博客 3万+

十步教你从0开始学习机器学习

作者:禅与计算机程序设计艺术 1.简介 近年来,随着人工智能(AI)技术的发展,以及互联网、云计算等新型信息化技术的应用,使得机器学习(ML)在许多领域得到了广泛的应用。许多企业和个人都纷纷开始关注并投入到机器学习的研究开发中,获得更多的收益。而作为一个热门的话题,并不是所有人都能够快速入门。因此,本文

AI天才研究院 315

零基础小白如何自学机器学习?

机器学习的学习路径可以分为基础知识学习、算法理解、实战项目以及不断的提升与优化。通过有计划、循序渐进地学习,你将能够从零基础逐步掌握机器学习的核心技能,最终能够独立进行机器学习项目的开发与应用。

小宝哥Code的专栏 1968

机器学习入门——从零开始构建一个线性回归算法

作者:禅与计算机程序设计艺术 1.简介 在现代互联网公司和科技创新领域,机器学习(Machine Learning)已成为一个热门话题。它可以帮助公司更好地理解数据、提升产品质量、预测结果和发现模式。本文将以线性回归模型作为基础知识点,带领读者从零开始构建一个简单的机器学习模型,其目的是为了帮助读者掌握

AI天才研究院 759

A. 从零开始构建一个机器学习系统——从线性回归到深度学习

作者:禅与计算机程序设计艺术 1.简介 自然语言处理(NLP)、计算机视觉(CV)、自然语言生成(NLG)等领域的研究热点均指向深度学习(DL)的最新突破。基于深度学习技术的机器学习模型可以有效地解决多种复杂的问题。而近年来,以深度学习为代表的强化学习(RL)技术也被越来越多地应用于各种AI领域,比如A

AI天才研究院 1332

小白从0学习推荐系统 ---03 机器学习基础

文章目录机器学习机器学习是什么?机器学习的定义机器学习的过程机器学习的分类无监督学习无监督学习应用监督学习监督学习应用监督学习的深入介绍监督学习的三要素监督学习实现步骤模型评估策略训练集和测试集损失函数损失函数分类经验风险训练误差和测试误差过拟合和欠拟合模型的选择正则化奥卡姆剃刀交叉验证分类和回归分类问题精确率和召回率精确率召回率回归问题模型求解算法(学习算法)梯度下降法牛顿法和拟牛顿法 机器学习...

chanweiliang7439的博客 439

OpenClaw:深度学习驱动的智能编程工具实战解析

智能编程工具通过深度学习技术革新传统开发流程,其核心在于代码语义理解与实时协作能力。这类工具采用AI代码补全、错误预测等技术,显著降低开发者认知负荷,尤其适用于复杂业务逻辑开发和遗留系统维护场景。以OpenClaw为例,其智能填充和上下文感知功能可提升40%编码效率,减少65%调试时间。关键技术实现包含自然语言处理、代码静态分析等,在金融科技、电商系统等领域具有广泛应用前景。热词提示:代码理解引擎、智能工作流整合展现了当前AI辅助开发的最新趋势。

chubaisheng8627的博客 320

Python机器学习入门:从零开始,10天学会

Python是一种高级编程语言,具有以下特点:简单易学:Python的语法简洁明了,容易理解和学习。灵活强大:Python具有强大的功能,可以用于各种应用。开源免费:Python是开源软件,可以免费使用和修改。

明飞的博客 1630

如何设计QR反激变换器

摘要:本文分析了基于GaN技术的PD适配器市场现状,重点探讨了准谐振反激变换器(QR Flyback)的工作原理及设计方法。文章首先介绍了反激变换器的三种工作模式(CCM、DCM、CRM/QR)及其特点,指出QR模式通过谷底开通技术能显著降低开关损耗。随后以65W适配器为例,详细阐述了变压器参数设计流程,包括匝比确定、原边电感计算和绕组匝数设计等关键步骤。文章强调QR反激变换器凭借高效率、小体积和低成本优势,已成为20W-65W PD适配器的主流拓扑方案,配合GaN技术进一步提升了功率密度和便携性。

m0_62868254的博客 1498

Unity游戏开发实战:用Flow Field实现RTS百人军团流畅寻路(附完整代码)

本文深入探讨了在Unity中利用流场寻路技术解决RTS游戏大规模单位移动性能瓶颈的实战方案。通过解析从Dijkstra算法生成成本场、积分场到最终向量场的核心原理,并结合分块、缓存及与DOTS/ECS架构集成的优化策略,实现了百人军团的流畅群体寻路。文章提供了完整的代码示例,助力开发者构建高性能的RTS寻路系统。

weixin_28363123的博客 587

机器学习0——基础知识和线性回归

师兄的博客,毕业了他没维护了,我转过来 从零开始的机器学习0-基础知识及线性回归基础知识至线性回归一些问题与概念线性回归的Python实现及测试线性回归线性回归模型损失函数最速下降法数据预处理(numpy)读取文件numpy中的矩阵调整ndarray中的数据类型转化标准化矩阵调用 基础知识至线性回归   从头学习周志华版的机器学习,同时准备使用Python实现一些相关的方法,以及一些小的项目。因为Python是新手,也准备借这次机会熟悉并掌握,代码方面有一些笨拙,希望慢慢改进、进步。 一些问题与概念 1、

雾隐雾现的至渝博客 2万+

告别环境配置噩梦:用Docker Desktop + WSL2在Windows上5分钟搞定vLLM运行环境

本文详细介绍了如何在Windows系统上使用Docker Desktop和WSL2快速搭建vLLM开发环境,5分钟内完成配置。通过容器化技术解决传统环境配置中的依赖冲突、环境污染等问题,提供一键复用的高效方案,特别适合AI开发者快速部署和测试vLLM框架。

weixin_28728495的博客 503

【线性回归】线性回归的详细介绍&代码完全实现

早上没睡醒!又是在梦中被坏女人骗走感情的一天。

艰难困苦,玉汝于成。 8387

【硬件的单元测试 UT 3】PCIe 3.0及信号完整性测试方法

PCIe标准自从推出以来,1代和2代标准已经在PC和Server上逐渐普及,用于满足高速显卡、高速存储设备对于高速数据传输的要求。出于支持更高总线数据吞吐率的目的,PCI-SIG组织在2010年制定了PCIe 3.0,即PCIe 3代的规范,数据速率达到8Gbps。

qq_43416206的博客 1415

LangGraph 实战教程:搭建一个智能办公多Agent协作平台

只存储必要的信息:不要把所有的原始数据都存储在状态中,比如销售数据可以存储在数据库或向量数据库中,状态中只存储数据的 ID 或摘要。使用类型提示:避免类型错误,提高代码的可维护性。支持增量更新:LangGraph 默认支持状态的增量更新(通过reduce函数),比如messages列表可以通过追加新消息的方式更新,而不是每次都重新创建整个列表。Normal Edge 的定义非常简单,只需要在StateGraph对象(稍后会详细讲解)上调用add_edge# 创建一个 StateGraph 对象。

SuperAGI2025 222

【机器学习】线性回归模型

线性回归是机器学习中最基础的算法之一。它主要用于回归任务,即预测一个连续的数值输出。本文将从零开始,带领你构建线性回归模型,逐步推演损失函数、梯度下降、学习率等核心概念,并使用`numpy`实现。最后,我们会通过`sklearn`快速实现线性回归模型。

2303_80346267的博客 1517

基于 Simulink 的双向 DC/AC 逆变器中 IGBT/MOSFET 寄生参数影响分析实战教程

摘要:本教程详细解析了Simulink中IGBT/MOSFET寄生参数对双向DC/AC逆变器的影响。通过对比理想模型与含寄生参数(如20nH内部电感、50nH回路电感)的仿真,揭示了电压尖峰、高频振荡等实际问题。建模步骤包括搭建基准电路、引入寄生参数、配置高精度求解器(步长10ns),并给出抑制措施:添加RC缓冲电路、调整驱动电阻。关键发现:寄生参数会显著增加开关损耗和EMI噪声,需通过参数扫描优化设计。教程还提供了代数环报错、仿真速度优化等实战技巧,帮助工程师从理想仿真过渡到高保真分析。

xiaoheshang_123的博客 68

ML Day2简单线性回归

机器学习100天,每天进步一点点。跟着GitHub开始学习! 英文项目地址https://github.com/Avik-Jain/100-Days-Of-ML-Code 中文项目地址https://github.com/MLEveryday/100-Days-Of-ML-Code 简单线性回归,使用单一特征来预测响应值,即根据特征或自变量的线性函数精确预测响应值。 怎样找到最佳的拟合线?...

weixin_40277254的博客 184

基于 MFC 和 C++ 的语音识别客户端实现方案

语音 SDK:[Microsoft Speech SDK](https://learn.microsoft.com/zh-cn/azure/cognitive-services/speech-service/speech-sdk)(建议使用最新版)1. **Azure 语音服务密钥**:需要在 [Azure 门户](https://portal.azure.com/) 中创建语音资源,获取密钥和区域(如 `eastasia`),替换代码中的占位符。

寒寒豆豆软件公司的博客 156

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

【从零开始的ML-02】LinearRegression 类别型变量引入线性回归的几种方法

1. Replace 直接替换 例如根据学生测验成绩(0-100分)划分为A(>90)B(80-90)C(70-80)D(<70)四个阶段. 2.map()替换 类似replace(),没有指定全部映射关系会出现NaN 3.LabelEncoding标签编码 作用是为变量的n个唯一取值分配一个[0,n-1]之间的编码,将该变量转化成连续的数值型变量。LabelEncoding根据原各唯一取值的先后顺序进行排序后为其转化为对应次序的数值,转化后的结果也在数值上体现了这一优势。 • 相较于

qq_45728434的博客 3417

深度学习工具包 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")

7天掌握机器学习:用studentscores数据集实现简单线性回归预测的完整指南

机器学习入门并不难!本教程将带你通过实际案例,使用`studentscores.csv`数据集从零开始构建简单线性回归模型,预测学生成绩。即使你没有编程经验,也能跟随步骤完成第一个机器学习项目。 ## 什么是简单线性回归? 简单线性回归是机器学习中最基础也最实用的算法之一,它通过建立两个变量之间的线性关系来进行预测。在教育场景中,我们可以用它来研究学习时间与考试成绩的关系,帮助教师和学生优化学

gitblog_00026的博客 947

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

机器学习&&深度学习——线性回归的从零开始实现

机器学习&&深度学习——线性回归的从零开始实现

m0_52380556的博客 695

从零开始手撕线性回归:代码实战带你深入理解机器学习基础

线性回归是机器学习中最基础且重要的算法之一,广泛应用于预测分析和数据建模。本文将带领读者从零开始理解线性回归的核心原理,并通过Python代码实战一步步实现一个简单的线性回归模型。无论你是机器学习初学者还是希望巩固基础的开发者,本文都将为你提供清晰的学习路径。线性回归是一种监督学习算法,用于建立输入变量(特征)与输出变量(目标)之间的线性关系。其核心思想是找到一条最佳拟合直线,使得预测值与真实值之间的误差最小。假设我们有一组数据点 ,线性回归试图找到参数 和 ,使得以下公式成立: y=wx+b y = w

平时不搬砖的博客 1050

线性回归的从零开始实现

接下来,我们必须定义模型,将模型的输入和参数同模型的输出关联起来。回想一下,要计算线性模型的输出, 我们只需计算输入特征X和模型权重w的矩阵-向量乘法后加上偏置b。注意,上面的Xw是一个向量,而b是一个标量。回想一下 数据操作中描述的广播机制: 当我们用一个向量加一个标量时,标量会被加到向量的每个分量上。"""线性回归模型"""因为需要计算损失函数的梯度,所以我们应该先定义损失函数。这里我们使用 线性回归中描述的平方损失函数。在实现中,我们需要将真实值y的形状转换为和预测值y_hat的形状相同。

woshilyc7890的博客 1231

ml-mastery-zh完全指南:从零开始掌握机器学习的终极资源

想要快速掌握机器学习但不知从何开始?ml-mastery-zh项目是您学习机器学习的终极指南!这个开源项目汇集了MachineLearningMastery博客的精华翻译,为中文用户提供了完整的学习路径。无论您是初学者还是有一定经验的开发者,这个资源库都能帮助您系统地学习机器学习算法、深度学习框架和实际应用技巧。从基础概念到高级技术,从理论讲解到实战案例,ml-mastery-zh为您提供了一站式

gitblog_00193的博客 780
下一篇: 从零开始的机器学习1-线性模型及多分类
LogHouse
博客等级 码龄9年 14粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值