机器学习必备的数学知识

一、函数

1、函数的基本定义

世界是变化的,万物是有联系的。函数就是用来表征各个具有内在联系的量的变化规律。例如年龄和身高的变化规律,饭量与身高、体重、年龄的变化规律。

(1)函数定义

此处我们给出函数的定义:

函数定义.png

其中,集合A中的元素称为自变量,集合B中的元素称为因变量
函数则表示了非空集合之间的映射,如下图所示:
映射.png

(2)一一映射

集合A中的每一个元素都能在B中找到唯一的元素与之对应,且集合B中的元素也能在A中找到唯一的原像,那么集合A和B就形成了一一映射的关系。
例如:

平方关系.png

就不满足一一映射的关系,因为1个y能够找到2个x(正解和负解)。

线性.png

就满足一一映射的关系,1个x对应1个y,反过来1个y也对应1个x。
满足一一映射的函数存在反函数

(3)函数的表示方法

有三种方法,分别是“列表法”、“图形法”、“解析式”法。

1)列表法

函数列表法.png

优点是非常简单方便实用,尤其是对于特别复杂但用的频率很高的情况,比如统计学中的各种分布,t分布,F分布。如果函数解析式非常复杂,难以计算,通常采用查表获得函数值。

2)图形法

图形法.png

3)解析式法

这是最常用的一种方法,表达能力最强,最精确。解析式包含了函数的一切信息,例如:

解析式举例.png

(4)函数定义域和值域

1)定义域

定义域就是自变量的取值范围。

定义域举例.png

2)值域

值域就是函数值的与之范围。

值域举例.png

注意:定义域确定后,根据映射关系,值域随之确定。

(5)函数单调性

1)单调递增

自变量在一定范围时,函数值岁自变量增大而增大,称函数在此区间内单调递增。

2)单调递减

自变量在一定范围时,函数值岁自变量增大而减小,称函数在此区间内单调递减。
即:

函数的单调性.png

单调性举例.png

注意:对于复杂函数,在学习导数之前,判断单调性是很困难的。

(6)函数奇偶性

1)奇函数

定义域内的任何变量,都满足f(-x)=-f(x)。
奇函数的图像关于原点对称,定义域必须对称。

奇函数举例.png

2)偶函数

定义域内的任何变量,都满足f(-x)=f(x)。
奇函数的图像关于y轴对称,定义域必须对称。

偶函数举例.png

注意:大量函数既不是奇函数也不是偶函数。

(7)、函数周期性

周期函数:如果T≠0,对于任意x都有f(x)=f(x+T),则称T为该函数的函数周期。
最常见的周期函数式三角函数,如图:


周期函数举例.png

2、常用函数

(1)一次函数

·定义域:R(全体实数),值域:R
·y=ax+b,a>0时单调递增,a<0时单调递减
·a表示直线的斜率,是直线与x周夹角的正切值

例:
一次函数举例.png

(2)二次函数

二次函数.png

例:
二次函数举例.png

(3)正弦函数

正弦函数.png

正弦函数2.png

(4)余弦函数

余弦函数.png

余弦函数2.png

二、微积分

1、极限与导数

(1)极限

1)极限的定义

极限的定义:某一个函数中的某一个变量,此变量在变大(或变小)的永远变化的过程中,逐渐向某一个确定的数值A不断逼近的过程中,此变量的变化,被人们规定为“永远靠近而不停止”、其有一个“不断地极为靠近A点的趋势”称作极限。

数学表达式:当变量x无限趋近于某一个数值时,对应的函数结果:
A = \lim_{x→x_{0}}f(x)

2)极限的计算


image.png

y = \lim_{x→∞} {x^3+2x^2+1\over 2x^3+3x+2 } \\ y = \lim_{x→∞} {1+{2\over x}+{1\over x^3}\over 2+{3\over x^2}+{2\over x^3} } \\ y = {1+0+0\over 2+0+0 } = {1 \over 2}


image.png

y = \lim_{x→1}{x-1 \over 2x^2-x-1} \\ y = \lim_{x→1}{x-1 \over (2x+1)(x-1)} \\ y = \lim_{x→1}{1 \over 2x+1} \\ y = {1 \over 2+1} = {1 \over 3}

(2)导数

1)导数的定义

导数的定义:当函数y = f(x)的自变量x在一点x0上产生一个增量Δx时,函数输出值的增量Δy与自变量增量Δx的比值在Δx趋近于0时的极限如果存在,a即为在x0处的导数,记作f'(x_{0}){d f(x_{0}) \over d x_{0}}

image.png

f'(x_{0}) = {d f(x_{0}) \over d x_{0}} = \lim_{Δx→0}{Δy \over Δx}

对于线性函数来说,函数在x0的导数等于x0对应的斜率。
对于非线性函数来说,函数在x0的导数等于x0对应的切线的斜率。

2)导数的计算

常用导数公式:


图片.png

image.png

3)导数的意义

如果y = f(x)在x=x0的导数f'(x0) = 0,则x0为该函数的一个极值点。

2、模型求解与梯度下降法

(1)什么是梯度下降法

梯度下降法是寻找极小值的一种方法。通过向函数上当前点对应梯度(导数)的反方向的规定步长距离点进行迭代搜索,直到在极小点收敛。
J = f(p)的极小值

p_{i+1} = p_{i} - α{ ∂ \over ∂p_{i}}f(p_{i})

其中{ ∂ \over ∂p_{i}}f(p_{i}){d f(x_{0}) \over d x_{0}} 类似,也是求导,只不过是求偏导数,∂是偏导数的意思。α就是变量p方向上的规定步长,负号代表反方向。这一次求出来的pi+1会作为下一次的pi迭代到上述公式中继续求pi+1

(2)梯度下降法求极小值

求极小值过程.png
梯度下降法示例.gif

(3)实际问题求解

微信截图_20221026132958.png

本质上就是求解线性模型中最合适的a和b。
不同的a和b.png

如何找到最合适的a和b呢?
假设x为自变量,y为真实客观的对应结果(就是我们想求的),y'为我们的模型输出的结果,我们要让y’尽可能接近y,即y'无限趋近于y,用数学的表达就是y'-y的极小值:
minimise \{ \displaystyle \sum_{i=1}^m (y'_{i} - y_{i})^2 \} \\
其中,minimise是指求最小值,m是样本数,即已知的x和y的关系的数量。

损失函数:
为了方便计算,我们将上述数学表达式求导后的常量2和m约分掉,所以将其变换为损失函数J,即:
J = minimise \{ {1\over 2m } \displaystyle \sum_{i=1}^m (y'_{i} - y_{i})^2 \} \\

于是,算式演变为:

算式演变.png

因为样本的xi和yi都是已知的,所以就变成了求未知数a和b。
计算机计算方式.png

求解直观图.gif

3、积分

(1)积分的定义

1)不定积分

函数f的不定积分,是一个可导函数F且其导数等于原来的函数f,即F' = f。
例如函数 f(x) = 2x,它的不定积分有:
F(x) = x^2 \\ F(x) = x^2 + 3 \\ F(x) = x^2 - 10
函数的不定积分可以理解为其对应的反导数,有无穷多个。

2)定积分

①定积分的定义

对于一个给定了的正实数值函数f(x),在一个实数区间上的定积分可以理解为在坐标平面上由曲线、直线及坐标轴围成的曲边梯形的面积值。


定积分.png

定积分解析式.png

②定积分计算实例

image.png

计算函数y = 2x在区间[-5, 0] 及(0, 5]的定积分。
∵f(x)' = 2x
∴f(x) = x2 + C
y = 2x在区间[-5, 0] 及(0, 5]的定积分就等于:
f(0) - f(-5)及f(5) - f(0)
f(0) - f(-5) = 02 - (-5)2 = -25
f(5) - f(0) = 52 - 02 = 25

③定积分的应用

image.png

image.png

image.png

④常用积分公式

image.png

4、python函数实现微分和积分

参考链接:
Python sympy 求解微积分: https://blog.csdn.net/dfly_zx/article/details/106605143

Python sympy 包介绍:
https://www.sympy.org/en/index.html

(1)实战任务

image.png

1)任务1

①求f1
image.png
②求f2
image.png
③求f3
image.png

2)任务2

①求F1
image.png
②求F2
image.png
②求F3
image.png

3)任务3:求y1,y2,y3在x=0时的极限

image.png

三、矩阵

1、什么是矩阵

(1)矩阵的定义

矩阵式由m乘以n个数aij(i=1,2,......,m;j=1,2,......,n)排成的m行n列的数表。
例如:
\begin{matrix} a_{11} & a_{12} & ...... & a_{1n} \\ a_{21} & a_{22} & ...... & a_{2n} \\ ... & ... & ... & ... \\ a_{m1} & a_{m2} & ...... & a_{mn} \end{matrix}
我们就表示为
A= \begin{bmatrix} a_{11} & a_{12} & ...... & a_{1n} \\ a_{21} & a_{22} & ...... & a_{2n} \\ ... & ... & ... & ... \\ a_{m1} & a_{m2} & ...... & a_{mn} \end{bmatrix}

在日常生活中我们也会遇到矩阵,比如excel表,或者人员方阵:


图片.png

(2)同型矩阵

行数、列数分别相同的一组矩阵。
例如:
A= \begin{bmatrix} 1 & 3 \end{bmatrix}

B= \begin{bmatrix} 1 & 3 & 5 & 4 \\ 4 & 3 & 2 & 1 \end{bmatrix}

C= \begin{bmatrix} 2 & 3 & 4 & 1 \\ 3 & 1 & 3 & 2 \end{bmatrix}

D= \begin{bmatrix} 3 & 5 & 2 \\ 1 & 1 & 7 \\ 1 & 1 & 9 \end{bmatrix}

E= \begin{bmatrix} 2 & 7 \\ 9 & 3 \\ 1 & 5 \end{bmatrix}

F= \begin{bmatrix} 5 & 2 \\ 4 & 3 \\ 1 & 1 \end{bmatrix}
这6个矩阵中,B和C,E和F分别是同行矩阵。

(3)负矩阵

矩阵元素互为相反数关系的矩阵。
若矩阵
A= \begin{bmatrix} a_{11} & a_{12} & ...... & a_{1n} \\ a_{21} & a_{22} & ...... & a_{2n} \\ ... & ... & ... & ... \\ a_{m1} & a_{m2} & ...... & a_{mn} \end{bmatrix}

矩阵
B= \begin{bmatrix} -a_{11} & -a_{12} & ...... & -a_{1n} \\ -a_{21} & -a_{22} & ...... & -a_{2n} \\ ... & ... & ... & ... \\ -a_{m1} & -a_{m2} & ...... & -a_{mn} \end{bmatrix}
则A和B互为负矩阵。
记为A = -B
注:负矩阵一定是同型矩阵。

2、矩阵的运算

(1)矩阵的加减法

注意:只有同型矩阵之间才能做加减法。
矩阵的元素分别相加。
若矩阵
A= \begin{bmatrix} a_{11} & a_{12} & ...... & a_{1n} \\ a_{21} & a_{22} & ...... & a_{2n} \\ ... & ... & ... & ... \\ a_{m1} & a_{m2} & ...... & a_{mn} \end{bmatrix}

矩阵
B= \begin{bmatrix} b_{11} & b_{12} & ...... & b_{1n} \\ b_{21} & b_{22} & ...... & b_{2n} \\ ... & ... & ... & ... \\ b_{m1} & b_{m2} & ...... & b_{mn} \end{bmatrix}
A+B=\begin{bmatrix} a_{11} +b_{11} & a_{12}+b_{12} & ...... & a_{1n}+b_{1n} \\ a_{21}+b_{21} & a_{22}+b_{22} & ...... & a_{2n}+b_{2n} \\ ... & ... & ... & ... \\ a_{m1}+b_{m1} & a_{m2}+b_{m2} & ...... & a_{mn}+b_{mn} \end{bmatrix}

例如:
A= \begin{bmatrix} 2 & 7 \\ 9 & 3 \\ 1 & 5 \end{bmatrix} B= \begin{bmatrix} 5 & 2 \\ 4 & 3 \\ 1 & 1 \end{bmatrix}
A+B = \begin{bmatrix} 7 & 9 \\ 13 & 6 \\ 2 & 6 \end{bmatrix}

矩阵的加法满足交换律和结合律,即:
A+B=B+A
A+B+C=A+(B+C)
矩阵的减法和加法相同,即:
A-B=A+(-B)

(2)矩阵的乘法

1)数乘

即数与矩阵的元素分别相乘。
例如:
3 \cdot \begin{bmatrix} 3 & 1 & 2 \\ 7 & 1 & 5 \\ 0 & 4 & 2 \\ 3 & 1 & 2 \end{bmatrix} = \begin{bmatrix} 9 & 3 & 6 \\ 21 & 3 & 15 \\ 0 & 12 & 6 \\ 9 & 3 & 6 \end{bmatrix}
矩阵的数乘满足交换律、结合律和分配律,即:
\lambda \cdot A = A \cdot \lambda,
\lambda \cdot A \cdot \mu = \lambda \cdot (A \cdot \mu),
\lambda \cdot (A+B) = \lambda \cdot A + \lambda \cdot B

2)矩阵与矩阵相乘

行列元素依次相乘并求和,且第一个矩阵的列数要等于第二个矩阵的行数,即:
C = \begin{bmatrix} a_{11} & a_{12} & a_{13} \\ a_{21} & a_{22} & a_{23} \\ a_{31} & a_{32} & a_{33} \\ a_{41} & a_{42} & a_{43} \end{bmatrix} \begin{bmatrix} b_{11} & b_{12} \\ b_{21} & b_{22} \\ b_{31} & b_{32}\end{bmatrix} = \begin{bmatrix} a_{11}b_{11} + a_{12}b_{21} + a_{13}b_{31} & a_{11}b_{12} + a_{12}b_{22} +a_{13}b_{32} \\ a_{21}b_{11} + a_{22}b_{21} + a_{23}b_{31} & a_{21}b_{12} + a_{22}b_{22} + a_{23}b_{32} \\ a_{31}b_{11} + a_{32}b_{21} + a_{33}b_{31} & a_{31}b_{12} + a_{32}b_{22} +a_{33}b_{32} \\ a_{41}b_{11} + a_{42}b_{21} + a_{43}b_{31} & a_{41}b_{12} + a_{42}b_{22} + a_{43}b_{32} \end{bmatrix}
矩阵和矩阵相乘,不满足交换律,但满足结合律和分配律,即:
AB \neq BA,
(AB)C = A(BC),
A(B + C) = AB + AC

3、向量

(1)向量的定义

只有一行的矩阵,即:
A= \begin{bmatrix} a_{1} & a_{2} & a_{3} & …… a_{n} \end{bmatrix}
称为行矩阵,也称为行向量。

只有一列的矩阵,即:
B= \begin{bmatrix} a_{1} \\ a_{2} \\ a_{3} \\ \vdots \\ a_{n} \end{bmatrix}
称为列矩阵,也称为列向量。

其中,B为A的转置,即B = A^T

(2)向量的基本运算

  • 遵循矩阵几百年运算原则
  • 矩阵与向量相乘,结果仍为向量

(3)向量的应用

1)问题抛出

举例,房价预测问题:加入你想买一套110㎡的房子,房东售价150万,值得投资吗?


房价趋势

线性关系

Tips:根据线性关系表算出售价y,然后和房东的出价进行对比。

2)实际应用

①根据房屋面积、房间数、区域人口密度、房龄等因子,预测合理售价。
已有数据

解决思路:
建立价格与因子之间的关系:y = f(x_{1}, x_{2}, x_{3} \dots x_{n})
\begin{cases} y_{1} = f(x_{11}, x_{12}, x_{13}, x_{14}, x_{15}) \\ y_{2} = f(x_{21}, x_{22}, x_{23}, x_{24}, x_{25}) \\y_{3} = f(x_{31}, x_{32}, x_{33}, x_{34}, x_{35}) \\y_{4} = f(x_{41}, x_{42}, x_{43}, x_{44}, x_{45}) \\y_{5} = f(x_{51}, x_{52}, x_{53}, x_{54}, x_{55}) \\ \end{cases}
so:
y_{m} = f(x_{m1}, x_{m2}, x_{m3}, x_{m4}, x_{m5})
假设:每个因子与价格之间存在线性关系,即:
y = f(x_{1}, x_{2}, x_{3} \dots x_{n}) = θ_{1}x_{1} + θ_{2}x_{2} + \dots +θ_{n}x_{n} + b
那么:
\begin{cases} y_{1} = f(x_{11}, x_{12}, x_{13}, x_{14}, x_{15}) \\ y_{2} = f(x_{21}, x_{22}, x_{23}, x_{24}, x_{25}) \\y_{3} = f(x_{31}, x_{32}, x_{33}, x_{34}, x_{35}) \\y_{4} = f(x_{41}, x_{42}, x_{43}, x_{44}, x_{45}) \\y_{5} = f(x_{51}, x_{52}, x_{53}, x_{54}, x_{55}) \\ \end{cases}
y= \begin{bmatrix} x_{11} & x_{12} & x_{13} & x_{14} & x_{15} \\ x_{21} & x_{22} & x_{23} & x_{24} & x_{25} \\ \vdots \\x_{51} & x_{52} & x_{53} & x_{54} & x_{55} \\ \end{bmatrix} \begin{bmatrix} θ_{1} \\ θ_{2} \\ θ_{3} \\ θ_{4} \\ θ_{5}\end{bmatrix} + b
抽象来说,y = Xθ + b
管不θ和b的求解,就需要用到计算机程序来计算了。

②深度学习:根据用户基本信息,预测用户是否会购课消费

用户信息图

像这类问题,就是深度学习中的神经网络结构的模型问题。什么是神经网络结构系统?
神经网络概念图

↓↓↓ 抽象为
神经网络抽象逻辑

注意:这里的a12...an2并不是平方的意思,而是上角标。
以上图画用数学表达式展示就是:
\begin{cases} a_{1}^2 = Xθ_{1}^1 \\ \vdots \\a_{n}^2 = Xθ_{n}^1 \end{cases} \\ y = Aθ^2其中,X就是 \begin{bmatrix} x_{1} \\ x_{2} \\ x_{3} \\ \vdots \\ x_{n}\end{bmatrix} 的向量,A就是\begin{bmatrix} a_{1}^2 \\ a_{2}^2 \\ a_{3}^2 \\ \vdots \\ a_{n}^2\end{bmatrix} 的向量,我们先得到A,然后再由A得到y。

4、实战:python实现矩阵运算

image.png

(1)基础

安装python、Anaconda、Jupyter-notebook,这些功能详情见我的《python和相关工具介绍》。
安装matplotlib库,这个库是python的一个基础绘图库,几行代码即可生成绘图,比如直方图、条形图、散点图等。

(2)矩阵赋值

首先我们引入numpy包:import numpy as np
然后给矩阵A赋值:A = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
然后我们打印A:print(A)
则展示结果:

image.png

查看A的行数和列数:print(A.shape)
image.png

完成其他矩阵的赋值:
image.png

(3)矩阵计算

计算E:


image.png

计算F:


image.png

计算G = A·B:


image.png

计算H = -A:


image.png

计算I = A·D:


image.png

我们再计算一个J = A·C:


image.png

三、概率

1、概率与机器学习

(1)概率的定义

概率是在0到1之间的实数,是对随机事件发生的可能性的度量,反应某种情况出现的可能性(likelihood)的大小。

(2)机器学习中的概率

分类任务中,机器学习模型直接预测的结果是某种情况的概率。
例如:


猫狗二分类模型

金融预测中,操作建议基于对应股票的涨跌的概率。


image.png

2、条件概率与全概率

(1)条件概率的定义

定义:事件A已经发生的条件下事件B发生的概率,表示为P(B|A)。
P(B|A) = { P(AB) \over P(A) } \\

(2)全概率公式

问题引出:


image.png

image.png

解: ∵P(B|A) = { P(AB) \over P(A) } \\
P(A|B_{1}) = {P(B_{1}A) \over P(B_{1})} = {1 \over 4} \\ P(B_{1}A) = P(A|B_{1})P(B_{1}) = { 1 \over 4 } ×{ 1 \over 3 } = { 1 \over 12}
P(A|B_{2}) = { P(B_{2}A) \over P(B_{2})} = {1 \over 5} \\ P(B_{2}A) = P(A|B_{2})P(B_{2}) = { 1 \over 5 } × { 2 \over 3 } = { 2 \over 15}
P(A) = P(B_{1}A) +P(B_{2}A) = { 13 \over 60 } \\

全概率定义:将复杂事件A的概率求解问题,转化为在不同情况下发生的简单事件的概率的求和。
公式为:


全概率计算公式

image.png
image.png

3、贝叶斯公式与朴素贝叶斯

(1)贝叶斯公式

贝叶斯公式

注意:P(AB) = P(BA)但是P(B|A) ≠ P(A|B)。因为A和B发生的顺序会不同
贝叶斯公式延申

贝叶斯公式定义

其中,后验概率指的就是 P(B_{i}|A)
延申公式中的分子 P(B_{i}) × P(A|B_{i}) 就等于P(AB_{i}) 或者 P(B_{i}A),分母 Σ_{j=1}^nP(A|B_{j})P(B_{j}) 就是 P(A) ,最终这个式子就转化为了P(B_{i}|A) = { P(AB_{i}) \over P(A)}
究其原因,就是P(AB)或者P(BA)是相等的,他俩同时发生的概率不考虑先后顺序,所以除以P(A) 就是先发生A之后再发生B的概率,除以P(B)就是先发生B后再发生A的概率。
核心

(2)朴素贝叶斯

朴素贝叶斯公式

4、实战 :朴素贝叶斯判断客户消费意愿

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,539评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,911评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,337评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,723评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,795评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,762评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,742评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,508评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,954评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,247评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,404评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,104评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,736评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,352评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,557评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,371评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,292评论 2 352

推荐阅读更多精彩内容