闵老板帖子:数学表达式魔训
文章中的代码均由python实现.


Q1.将向量下标为偶数的分量 (x2, x4, …) 累加, 写出相应表达式.

∑imod2=0xi\sum_{i \mod 2=0}x_iimod2=0∑​xi​

Q2.各出一道累加、累乘、积分表达式的习题, 并给出标准答案.

  • 将向量x\mathbf{x}x中等于1的分量累加.
    ∑xi=1xi\sum_{x_i=1}x_ixi​=1∑​xi​
  • 计算10!10!10!
    ∏i=110i\prod_{i=1}^{10}ii=1∏10​i
  • 表示函数f(x)=3x2+x+2f(x)=3x^2+x+2f(x)=3x2+x+2在区间[1,5][1,5][1,5]上与x轴之间的面积.
    ∫15(3x2+x+2)dx\int_1^5(3x^2+x+2)\mathrm{d} x∫15​(3x2+x+2)dx

Q3.你使用过三重累加吗? 描述一下其应用.

没有, 但使用过三重循环.

Q4.给一个常用的定积分, 将手算结果与程序结果对比.

例如∫12(x2+1)dx\int_1^2(x^2+1)\mathrm d x∫12​(x2+1)dx,通过手算结果为103\frac{10}{3}310​

integration = 0.0
delta = 0.001
x = 1.0
while x <= 2:integration += (x ** 2 + 1) * deltax += delta
print(integration)

输出为:

3.336833499999815

可以发现是很接近的.
python中也有专门计算定积分的库.

from sympy import *
x = symbols('x')
print(integrate(x**2+1, (x, 1, 2)))

输出为:

10/3

Q5.自己写一个小例子(n=3,m=1)(n=3, m=1)(n=3,m=1)来验证最小二乘法.

例如

x\mathbf{x}x y\mathbf{y}y
47.4 71.5
54.3 82.4
60.3 97.3

我们假设存在f(xi)=wxi+bf(x_i)=wx_i+bf(xi​)=wxi​+b,使得f(xi)≈yif(x_i) \approx y_if(xi​)≈yi​.
很显然, 这是一个一元线性回归.
那么我们利用均方误差定义其损失函数:
L(w,b)=∑i=1n(f(xi)−yi)2L(w, b)=\sum_{i=1}^n(f(x_i)-y_i)^2L(w,b)=i=1∑n​(f(xi​)−yi​)2
(ps:有人在定义时乘上了一个12\frac {1}{2}21​, 可与求导后的222约掉.)
确定www和bbb的方法就是使得我们的损失最小, 即:
(w,b)=arg min⁡(w,b)∑i=1n(f(xi)−yi)2(w, b)= \argmin_{(w, b)}\sum_{i=1}^n(f(x_i)-y_i)^2(w,b)=(w,b)argmin​i=1∑n​(f(xi​)−yi​)2
以上的求解方法就可称为“最小二乘法”.
对于损失函数L(w,b)L(w, b)L(w,b), 它是一个凸函数, 我们可以利用求导找到它的最小值.
对www求导:
∂L(w,b)∂w=2(w∑i=1n−∑i=1n(yi−b)xi)\frac {\partial L(w, b)}{\partial w} =2(w\sum_{i=1}^n-\sum_{i=1}^n(y_i-b)x_i)∂w∂L(w,b)​=2(wi=1∑n​−i=1∑n​(yi​−b)xi​)
对bbb求导:
∂L(w,b)∂b=2(nb−∑i=1n(yi−wxi))\frac {\partial L(w, b)}{\partial b}=2(nb-\sum_{i=1}^n(y_i-wx_i))∂b∂L(w,b)​=2(nb−i=1∑n​(yi​−wxi​))
令上式都为零,解得:
w=∑i=1nyi(xi−x‾)∑i=1nxi2−1n(∑i=1nxi)2w= \frac{\sum_{i=1}^n y_i(x_i- \overline x)}{\sum_{i=1}^n{x_i}^2-\frac {1}{n}(\sum_{i=1}^n x_i)^2}w=∑i=1n​xi​2−n1​(∑i=1n​xi​)2∑i=1n​yi​(xi​−x)​
b=1n∑i=1n(yi−wxi)b= \frac{1}{n}\sum_{i=1}^n(y_i-wx_i)b=n1​i=1∑n​(yi​−wxi​)
其中x‾\overline xx为x\mathbf{x}x分量的均值.
带入表格中的数据, 可以算出:
w=1.989w =1.989w=1.989.
b=−23.702b = -23.702b=−23.702.
L(w,b)=1.866L(w, b) = 1.866L(w,b)=1.866.
f(x)=1.989x−23.702f(\mathbf{x})=1.989\mathbf{x}-23.702f(x)=1.989x−23.702
相关代码如下:

import numpy as np
# import matplotlib.pyplot as plt# 最小二乘法def lost_function(w, b, data):total_cost = 0m = len(data)# 逐点计算平方损失误差,然后求平均数for i in range(m):x = data[i, 0]y = data[i, 1]total_cost += (y - w * x - b) ** 2return total_cost / m# 定义一个求均值的函数,方便使用
def average(data):sum = 0m = len(data)for i in range(m):sum += data[i]return sum / mdef fit(data):m = len(data)x_avg = average(data[:, 0])sum1 = 0sum2 = 0sum_delta = 0for i in range(m):x = data[i, 0]y = data[i, 1]sum1 += y * (x - x_avg)sum2+= x ** 2# 根据公式计算ww = sum1 / (sum2 - m * (x_avg ** 2))for i in range(m):x = data[i, 0]y = data[i, 1]sum_delta += (y - w * x)b = sum_delta / mreturn w, bdata = np.genfromtxt('data1.csv', delimiter=',')# 获取x,y两列数据
x = data[:, 0]
y = data[:, 1]
w, b = fit(data)print("w is: ", w)
print("b is: ", b)cost = lost_function(w, b, data)print("cost is: ", cost)

输出为:

w is:  1.9895608351331777
b is:  -23.702951763858255
cost is:  1.8658615310775

data1.csv如下:

Q6.逻辑回归推导, 并说出这个方法的特点.

  • 推导过程省略.
  • 特点1: 使用Sigmoid函数将值压缩到[0,1][0,1][0,1]之间, 具有概率意义.
  • 特点2: 此“回归”非彼“回归”, 实际上它是一种分类方法.
  • 特点3: 利用极大化似然函数方法.
  • 特点4: 处理非线性数据较麻烦.
  • 特点5: 很难处理数据不平衡的问题.

补充Q5, X\mathbf{X}X应该是一个3×23 \times 23×2的矩阵.

假定X=[147.4154.3160.3]\mathbf{X}=\begin{bmatrix} 1 &47.4 \\ 1 &54.3 \\1&60.3 \end{bmatrix}X=⎣⎡​111​47.454.360.3​⎦⎤​,Y=[71.582.497.3]\mathbf{Y}= \begin{bmatrix} 71.5 \\ 82.4 \\97.3\end{bmatrix}Y=⎣⎡​71.582.497.3​⎦⎤​.

由w=(XTX)−1XTY\mathbf{w}=(\mathbf{X}^{\mathrm{T}}\mathbf{X})^{-1}\mathbf{X}^{\mathrm{T}}\mathbf{Y}w=(XTX)−1XTY

解得w=[−23.7021.989]\mathbf{w}=\begin{bmatrix}-23.702 \\ 1.989\end{bmatrix}w=[−23.7021.989​],Y^=[70.60284.33096.268]\hat\mathbf{Y}=\begin{bmatrix} 70.602 \\84.330 \\ 96.268\end{bmatrix}Y^=⎣⎡​70.60284.33096.268​⎦⎤​, L2\rm{L}2L2损失∣∣Xw−Y∣∣22=1.866||\mathbf{X}\mathbf{w}-\mathbf{Y}||_2^2=1.866∣∣Xw−Y∣∣22​=1.866

import numpy as npX = np.array([[1, 47.4], [1, 54.3], [1, 60.3]])
Y = np.array([71.5, 82.4, 97.3])
Y = np.matrix(Y)
Y = Y.T  # 1行3列转变为3行1列
print("矩阵Y为:")
print(Y)
print('--------')  # 分割符
X = np.matrix(X)
print("矩阵X为:")
print(X)
print('--------')
X_T = np.transpose(X)  # X的转置矩阵
print(X_T)
print('--------')
temp = np.matmul(X_T, X)  # 矩阵乘法
print(temp)
print('--------')
temp = temp.I  # 求得其逆矩阵
print(temp)
print('--------')
temp = np.matmul(temp, X_T)
print(temp)
print('--------')
w = np.matmul(temp, Y)  # 得到w的矩阵
print("矩阵w为:")
print(w)
print('--------')
Y_hat = np.matmul(X, w)
print("预测Y为:")
print(Y_hat)

输出为:

矩阵Y为:
[[71.5][82.4][97.3]]
--------
矩阵X为:
[[ 1.  47.4][ 1.  54.3][ 1.  60.3]]
--------
[[ 1.   1.   1. ][47.4 54.3 60.3]]
--------
[[3.00000e+00 1.62000e+02][1.62000e+02 8.83134e+03]]
--------
[[ 3.53225342e+01 -6.47948164e-01][-6.47948164e-01  1.19990401e-02]]
--------
[[ 4.60979122e+00  1.38948884e-01 -3.74874010e+00][-7.91936645e-02  3.59971202e-03  7.55939525e-02]]
--------
矩阵w为:
[[-23.70295176][  1.98956084]]
--------
预测Y为:
[[70.60223182][84.33020158][96.26756659]]

smale学习之数学表达式(day3)相关推荐

  1. python 数学符号读法大全,Matplotlib数学表达式

    本篇文章帮大家学习Matplotlib数学表达式,包含了Matplotlib数学表达式使用方法.操作技巧.实例演示和注意事项,有一定的学习价值,大家可以用来参考. 可以将任何Matplotlib文本字 ...

  2. 数学表达式の学习笔记

    数学表达式の学习笔记 1 基础格式 2 二元关系 3 范数 3.1 R n \mathbb R^n Rn上的向量范数 3.2 连续函数空间 C [ a , b ] C[a,b] C[a,b]上的函数范 ...

  3. CSDN-markdown 文字样式设置(字体, 大小, 颜色, 高亮底色)与数学表达式设置

    文字样式1(内嵌HTML) Size:规定文本的尺寸大小,取值从 1 到 7 ,浏览器默认值是 3. <font face="黑体">我是黑体字</font> ...

  4. 小综述 | 深度学习在数学文本相关领域的研究梳理

    每天给你送来NLP技术干货! 作者|龚政 机构|中国人民大学硕士二年级 方向|自然语言处理 来自 | RUC AI Box 近年来,随着大规模语言模型和其他深度学习技术的迅速发展,人工智能在自然语言的 ...

  5. typora 分割线_最全Typora语法大全(含详细数学表达式及流程图)

    Typora是一款开源写作神器,如果还不会使用Typora,强烈建议花你最宝贵的30分钟去学习一下,就30钟就可以让你学会Typora. 相信我往下看完,你就会有不一样的收获 Typora介绍 Typ ...

  6. Sweep扫频信号的数学表达式

    Sweep扫频信号的数学表达式 近期,因评估测试中需要实现一个满足特定时延的上升(Linear rising up).下降沿(exp-falling down)的电平信号,在实现过程中用到了NI的模拟 ...

  7. 数学表达式: 从恐惧到单挑-作业day1

    1.6 作业 描述你在学习.使用数学表达式时的困难, 可举例说明. 答:数学矩阵的不同表达式形式,不容易理解矩阵的形式.例如:X={xi}i=1n={x1,x2.-,xn}\mathbf{X} = \ ...

  8. 自抗扰控制入门之TD篇(纯小白入门向和TD数学表达式的推导)

    笔者(萌新)的两三话:本科是海员专业,研究生转行,无任何基础,总算自认为把自抗扰的原理和各个公式部分搞懂了,希望个人的学习经历可以帮助其他人. 会有大量的转载别人的内容(会标明出处和链接) TD篇 一 ...

  9. 2021夏数学表达式魔训

    数学表达式魔训 Day 1 1.1 概述 学习第一天,感觉还好. 主要问题:矩阵和集合容易混 1.2 集合的表示与运算 A = { 3 , 5 } \mathbf{A} = \{3, 5\} A={3 ...

  10. 数学表达式一键变图,CMU开发实用工具Penrose,堪称图解界LaTeX(附链接)

    来源:七月在线实验室 本文长度为2000字,建议阅读5分钟 本文为大家介绍了卡内基梅隆大学开发的一款可自动生成的新工具. 有 A.B 两个集合,A 与 B 相交,C 是 A 与 B 的交集,分别将三个 ...

最新文章

  1. Spring中property-placeholder的使用与解析
  2. 回收站功能在 Linux 中的实现
  3. DL之MobileNetV2:MobileNetV2算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略
  4. nginx在Centos下的安装,转:http://www.linuxidc.com/Linux/2016-09/134907.htm
  5. php随机生成域名,php生成短域名函数,php生成域名函数
  6. 第7章 随机扭动的曲线(《Python趣味创意编程》教学视频)
  7. ios刺客信条一直显示连接服务器,刺客信条本色iOS进不去怎么办
  8. python 正则匹配 条件太多怎么办_python正则中re.findall匹配多个条件
  9. 聚合支付系统如何开发?
  10. vue 里面的slot属性
  11. SCCM 2012 R2部署,SCCM配置(五)
  12. 原生方式android 商城,WooCommerce商城原生android完整客户端源码(CiyaShop)
  13. 惠普m202dw_HP LaserJet Pro M202dw 激光打印机
  14. JWT的讲解以及JJWT的使用(另附JWT工具类)
  15. C语言有趣的代码大全,分享一段有趣的小代码
  16. Node.js详细下载与安装
  17. etc/xinetd.d目录介绍
  18. contiki学习心路历程
  19. 【JAVA】-- 期末考试复习题含答案(每章对应题、选择、填空、简答、编程)(下)
  20. 【牛客网】邮票;python set()集合函数,去重;“”、“|”、“-”求并集、交集、差集

热门文章

  1. 042 第一章 简介
  2. 数据-第9课-静态链表
  3. iQOO5G手机卡槽公布
  4. go-micro 框架初探
  5. 内存优化最后一弹——优化函数运行
  6. 在Docker和Kubernetes上运行MongoDB微服务
  7. NextApp —— 开源的手机博客 App 自动生成系统
  8. 加密解密学习--基本概念拾掇
  9. 在xml publisher中嵌入二维码(支持中文)
  10. ASP.NET基础教程-利用javascript将光标定位到文本框