十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
python中eval函数用法如下:
创新互联建站长期为上千客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为儋州企业提供专业的成都网站设计、成都网站建设,儋州网站改版等技术服务。拥有十年丰富建站经验和众多成功案例,为您定制开发。
1、计算字符串中有效的表达式,并返回结果。
2、将字符串转成相应的对象(如list、tuple、dict和string之间的转换)。
3、将利用反引号转换的字符串再反转回对象。
函数作用域:eval()函数并不会创建一个新的作用域,并且它的作用域就是它所在的作用域,有时候需要将eval()函数的作用域设置为全局,当然可以将eval()在全局作用域中使用,这个时候可以用window.eval()的方式实现。
参数情况:
(1)如果参数是一个表达式,eval() 函数将执行表达式。
(2)如果参数是Javascript语句,eval()将执行 Javascript 语句。
注意:如果执行结果是一个值就返回,不是就返回undefined,如果参数不是一个字符串,则直接返回该参数。
在 python实现资产配置(1)----Markowitz 投资组合模型 中, 我们已经见过如何使用Markowitz求得最优资产配比. 这是一种在已知未来各资产的概率分布,然后再求解的方法.
Markowitz模型输入参数包括历史数据法和情景分析法两种方法,情景分析法的缺点是主观因素,随意性太强,因此使用历史数据法, 将资产的均值和协方差输入模型是比较常见的作法. 不过, 不足之处很明显: 未来的资产收益率分布不一定与过去相同. 此外, Markowitz 模型结果对输入参数过于敏感.
Black-Litterman模型就是基于此的改进. 其核心思想是将投资者对大类资产的观点 (主观观点) 与市场均衡收益率 (先验预期收益率)相结合,从而形成新的预期收益率(后验预期收益率). 这里的先验预期收益率的分布可以是贝叶斯推断中的先验概率密度函数的多元正态分布形式,投资者的主观观点就是贝叶斯推断中的似然函数(可以看作新的信息, 因为做出主观判断必然是从外界获取得到了这些资产的收益率变化信息), 而相应的, 后验预期收益率也可以从后验概率密度函数中得到. 具体的推导可以看我的这篇文章: 从贝叶斯定理到贝叶斯推断 .
BL模型的求解步骤包括下面几步:
(1) 使用历史数据估计预期收益率的协方差矩阵作为先验概率密度函数的协方差.
(2) 确定市场预期之收益率向量, 也就是先验预期收益之期望值. 作为先验概率密度函数的均值. 或者使用现有的期望值和方差来反推市场隐含的均衡收益率(Implied Equilibrium Return Vector), 不过在使用这种方法时, 需要知道无风险收益率 的大小.
(3) 融合投资人的个人观点,即根据历史数据(看法变量的方差)和个人看法(看法向量的均值)
(4) 修正后验收益.
是均衡收益率协方差的调整系数,可以根据信心水平来判断. 是历史资产收益率的协方差矩阵, P是投资者的观点矩阵, 是似然函数(即投资者观点函数)中的协方差矩阵,其值为 的对角阵, 是先验收益率的期望值.
(5) 投资组合优化: 将修正后的期望值与协方差矩阵即 重新代入Markowitz投资组合模型求解.
(1)定义求解函数,输入为投资者观点P,Q以及目前资产的市场收益率矩阵,输出为后验的市场收益率和协方差矩阵.
(2) 实列分析
我们继续研究 python实现资产配置(1)----Markowitz 投资组合模型 中的五支股票: 白云机场, 福建高速, 华夏银行, 生益科技和浙能电力. 假设现在分析师的观点为:
获取股票数据, 并且获得后验的均值和方差:
这时候,已经可以使用Markowitz模型进行资产的配置. 定义新的函数blminVar以求解资产配置权重. 该函数的输入变量为blacklitterman函数的输出结果, 以及投资人的目标收益率goalRet.假设目标收益率为年化70%,则goalRet = 0.7:
输出结果为:
0-5分别对应上面的五只股票.
In logistic regression, a line L1 defines a probability distribution over the input space. A line L1 is said to be better than line L2, if the the distribution defined by L1 is low at class ‘-1’ points and high at class ‘+1’ points, on average, compared to the distribution defined by line L2.我们采用一个简单的数据集:
![1559268940560](assets/1559268940560.png)
我们对标志变量进行回归分析,以虚线表示最小二乘回归,以实线代表logistic回归。
![1559269066887](assets/1559269066887.png)
当然,对于这样的非线性问题,线性回归的效果显然很差,这里采用逻辑回归去逼近。
## 2.逻辑回归理解
logistic回归曲线是如何产生的呢?考虑在给定 $X=x$情况下 $Y$ 的条件均值,表示为$E(Y|x)$。该式表示在给定预测变量值的情况下,期望的响应变量值。回忆前述内容,在线性回归中,响应变量被认为是一个定义为$Y=B_0 + B_1 +\varepsilon$的随机变量。现在,当误差项 $\varepsilon$均值为0时,利用线性回归,得到$E(Y|x)=B_0 +B_1x$,其可能的取值包含整个实数域。简单来说,将条件均值$E(Y|x)$定义为$\pi (x)$。则,logistic回归的条件均值具有与线性回归不同的形式。
π(x)=eβ0+β1x1+eβ0+β1x
π(x)=eβ0+β1x1+eβ0+β1x
等式中的曲线被称为sigmoidal,因为其形状是S型,而且是非线性的。
观察这个式子,当$\lim _{a \rightarrow-\infty}\left[\frac{e^{a}}{1+e^{a}}\right]=0$时,$\pi (x)$取得最小值;而当$\lim _{a \rightarrow-\infty}\left[\frac{e^{a}}{1+e^{a}}\right]=1$时,$\pi (x)$取得最大值。因此,$\pi (x)$成为$0\pi(x) \leqslant 1$时能够用概率来解释的一种表示形式。也就是说,$\pi (x)$可以被解释为$X=x$的记录取值(例如,某种疾病)的概率,或解释为$1-\pi (x)$,表示该记录与取值间的概率差。
综上所述,当我们的响应是二元分类变量的时候,误差就只可能是两种可能形式的另一种,比如:Y=1(患有某种疾病),则对于这个记录$X=x$来说,其概率就是$\pi (x)$,因此,这个判断的误差就是$\varepsilon=1-\pi(x)$,这是数据点Y=1与其曲线$\pi(x)=\frac{e^{\beta_{0}+\beta_{1} x}}{1+e^{\beta_{0}+\beta_{1} x}}$之间的垂直距离。然而,如果真实标签$Y=0$(未患有某种疾病),其出现的概率为$1-\pi (x)$(响应概率为负值)对于这个记录$X=x$而言,误差$\varepsilon=0-\pi(x)=-\pi(x)$,为数据点$Y=0$与在其下的曲线$\pi (x)$的垂直距离。
logistic回归可以用对数转换:
g(x)=ln[π(x)1−π(x)]=β0+β1x
g(x)=ln[π(x)1−π(x)]=β0+β1x
## 3.最大似然估计
我们需要利用最大似然估计方法来获得参数估计,以使得观察到的观察数据似然性最大化。
$l(\boldsymbol{\beta} | x)$是归于参数$\boldsymbol{\beta}=\beta_{0}, \beta_{1}, \ldots, \beta_{m}$的函数,表示观察数据 $x$ 的概率。通过获得$\boldsymbol{\beta}=\beta_{0}, \beta_{1}, \ldots, \beta_{m}$的值,使$l(\boldsymbol{\beta} | x)$最大化,从而发现最大似然估计,获得最能反应观察数据的参数值。
其给定数据的肯定响应的概率为$\pi(x)=P(Y=1 | x)$,否定响应的概率为$1-\pi(x)=P(Y=0 | x)$,当相应为肯定值的时候,$\left(X_{i}=x_{i}, Y_{i}=1\right)$,将使 $\pi (x)$ 概率到达似然值,而当观察的响应为否定值时:$\left(X_{i}=x_{i}, Y_{i}=0\right)$,将使 $1-\pi (x)$概率达到似然。这样,当$Y_i=0$或 1 时,第 $i$ 个观察记录对似然的贡献可以表示为$\left[\pi\left(x_{i}\right)\right]^{y_{i}}\left[1-\pi\left(x_{i}\right)\right]^{1-y_{i}}$。观察的假设是独立的,使得我们可以将似然函数$l(\boldsymbol{\beta} | x)$表示为独立项的乘积:
l(β|x)=∏i=1n[π(xi)]yi[1−π(xi)]1−yi
l(β|x)=∏i=1n[π(xi)]yi[1−π(xi)]1−yi
上式采用对数似然$L(\boldsymbol{\beta} | x)=\operatorname{In}[l(\boldsymbol{\beta} | x)]$的话,计算就能更加方便:
L(β|x)=In[l(β|x)]=∑i=1n{yiIn[π(xi)]+(1−yi)In[1−π(xi)]}
L(β|x)=In[l(β|x)]=∑i=1n{yiIn[π(xi)]+(1−yi)In[1−π(xi)]}
若对极大似然函数不熟悉的话,可以参考:
最大似然估计可以通过获得每个参数的 $L(β|x)$获得,并将所得到的结果形式设置为0。遗憾的是,与线性回归不同,无法获得这些结果形式的封闭形式解。因此,需要采用其他方法,例如,迭代加权最小二乘法(可参考McCullagh和Nelder撰写的文献)。
## 4.回归结果解释
如果我们采用本博客开头使用的数据集,对未知参数 $\beta_0$ 和$\beta_1$进行最大似然估计,有结果:$\beta_{0}=-4.7372, \quad \beta_{1}=0.06696$。因此,对$\pi_{(x)}=\frac{e^{\beta_{0}+\beta_{1} x}}{1+e^{\beta_{0}+\beta_{1} x}}$的估计如下:
π^(x)=eg^(x)1+eg^(x)=e−4.372+0.06696(age)1+e−4.372+0.06696(age)
π^(x)=eg^(x)1+eg^(x)=e−4.372+0.06696(age)1+e−4.372+0.06696(age)
采用了对数估计的结果:$\hat{g}(x)=-4.372+0.06696(a g e)$。
这样,我们就能使用此式来估计病人的患病概率。比如,病人年龄为50岁时,有:
g^(x)=−4.372+0.06696(50)=−1.024
g^(x)=−4.372+0.06696(50)=−1.024
π^(x)=eg^(x)1+eg˙(x)=e−1.0241+e−1.024=0.26
π^(x)=eg^(x)1+eg˙(x)=e−1.0241+e−1.024=0.26
对于72岁的病人来说:
g^(x)=−4.372+0.06696(72)=0.449
g^(x)=−4.372+0.06696(72)=0.449
π(x)=eg˙(x)1+eg^(x)=e0.4491+e0.449=0.61
π(x)=eg˙(x)1+eg^(x)=e0.4491+e0.449=0.61
## 5.回归预测的显著性
当均方回归(mean square regression,MSR)比均方误差(mean squared error,MSE)大时,回归模型被认为是有意义的。(有关这部分的内容可以查看本系列博客的《18 多元回归与模型回归》那一节对此的讲解)
回想线性回归,如果MSR较大,测试统计$F=\frac{M S R}{M S E}$也将会较大,采用线性回归模型是有意义的。
logistic回归的系数是否有意义的判断与此类似。本质上说,我们是通过比较包括特定预测因子的模型与不包括该预测因子的模型,检验前者是否对响应变量的拟合程度比后者更好,从而判断其是否有意义的。
为模型定义全模型(饱和模型)意味着参数与数据点数量一样多,例如,简单的线性回归模型仅包含两个点。显然,全模型能够更完美地预测响应变量,不会产生预测误差。我们将考察全模型中响应变量的观察值和预测值。为比较拟合模型(不含的参数比数据点少)的预测值和全模型的预测值,采用偏差比较方法,偏差定义如下:
Deviance=D=−2ln[likelihood of the fitted model likelihood of the saturated model ]
Deviance=D=−2ln[likelihood of the fitted model likelihood of the saturated model ]
公式中包含两个似然的比值,因此结果假设检验被称为似然比率检验。为建立分布是已知的度量,我们必须采用 -2ln[似然比率] ,将来自你和模型的估计 $\pi(x)$定位为$\hat{\pi_i}$。然后,按照logistic回归,利用上个式子,偏差定义为:
Deviance=D=−2ln∑i=1n{yiln[π^iyi]+(1−yi)ln[1−π^i1−yi]}
Deviance=D=−2ln∑i=1n{yiln[π^iyi]+(1−yi)ln[1−π^i1−yi]}
偏差表示预测因子计算完成后,模型剩余的误差。类似于线性回归中的误差平方和。
该过程确定某一特定预测因子是否有意义,由没有预测因子的模型的偏差减去包含预测因子的模型的偏差得到,即:
G=deviance(model without predictor)−deviance(model with predictor)=−2ln[likelihood without predictor likelihood with predictor ]
G=deviance(model without predictor)−deviance(model with predictor)=−2ln[likelihood without predictor likelihood with predictor ]
令$n_{1}=\sum y_{i}$且$n_{0}=\sum\left(1-y_{i}\right)$,则在近包含单一预测因子的情况下,有:
G=2{∑i=1n[yiln[π^i]+(1−yi)ln[1−π^i]]−[n1ln(n1)+n0ln(n0)−nln(n)]}
G=2{∑i=1n[yiln[π^i]+(1−yi)ln[1−π^i]]−[n1ln(n1)+n0ln(n0)−nln(n)]}
如果使用本节的数据集,其对数似然为-10.101,则:
G=2{−10.101−[7ln(7)+13ln(13)−20ln(20)]}=5.696
G=2{−10.101−[7ln(7)+13ln(13)−20ln(20)]}=5.696
## 6.概率比比率 和 相对风险
在线性回归之中梯度系数 $\beta_1$ 被解释为作为响应边来那个的对预测单位增加而发生的变化。同样,在逻辑回归中是一样的,只是这是采用的对数的形式。也就是说,梯度系数$\beta_1$可以被解释为预测变量值 每增加一个单位对数变化值。以公式表示如下:
β1=g(x+1)−g(x)
β1=g(x+1)−g(x)
在上例分析之中,我们已然明白二分变量使用逻辑回归之后的意义。比如,我们知道72岁的人患病概率有61%,未患病概率比有39%,则其患病概率比为$odds =\frac{0.61}{0.39}=1.56$;而50岁的人患病概率为26%,未患病74%,则概率比为$odds =\frac{0.26}{0.74}=0.35$。
我们可以发现,当一件事的发生概率大于不发生概率的时候,$odds1$;而发生概率小于不发生概率时,$odds1$。于此,我们可以多注意一下**概率**与**概率比**的不同,概率的取值范围在0~1之间,而概率比的范围在$\text{0~}\infty $之间。
对于记录 $x=1$ 的情况,响应的概率比为:
π(1)1−π(1)=eβ0+β11+eβ0+β111+eβ0+β1=eβ0+β1
π(1)1−π(1)=eβ0+β11+eβ0+β111+eβ0+β1=eβ0+β1
同理,对于记录 $x=0$的情况,响应的概率比为:
π(0)1−π(0)=eβ01+eβ011+eβ0=eβ0
π(0)1−π(0)=eβ01+eβ011+eβ0=eβ0
清楚了上面的含义,我们引入概念:**概率比比例(odds ratio)**:定义为当记录 $x=1$ 时,响应变量发生(y=1)的概率比与当记录在 $x=0$ 时响应变量发射功能的概率比的比值。用公式表达:
Odds ratio =OR=π(1)/(1−π(1)]π(0)/(1−π(0)]=eβ0+β1eβ0=eβ1
Odds ratio =OR=π(1)/(1−π(1)]π(0)/(1−π(0)]=eβ0+β1eβ0=eβ1
通常,我们为了使概率比比例OR能够准确地估计相对风险,我们必须使$\frac{[1-\pi(0)]}{[1-\pi(1)]} \approx 1$, $x=1$ 和$x=0$,响应发生可能性小的时候可能性小的时候可得到OR值。
Relativerisk=π(1)π(0)
Relativerisk=π(1)π(0)
概率比比率在研究领域被广泛应用,因为它简略地表达了概率比比率与梯度系数之间的关系。例如,假如某个临床试验报告表明在患子宫内膜癌的患者中使用过雌激素替代疗法的与未使用雌激素替代疗法的概率比比率为5.0,则可以解释为,平均来说,采用雌激素替代疗法的病人患子宫内膜癌的可能性是未使用雌激素替代疗法的病人的5倍。然而,这一解释仅在 $\frac{[1-\pi(0)]}{[1-\pi(1)]} \approx 1$ 时有效。
font color=#66ccff(记得查看书P360 13.6节,是例子。)/font
剩下的章节没有写嗯。。
文章知识点与官方知识档案匹配
算法技能树首页概览
30688 人正在系统学习中
点击阅读全文
打开CSDN,阅读体验更佳
最新发布 逻辑回归实现二分类问题
文章目录逻辑回归前言线性回归sigmoid梯度上升算法逻辑回归分类演示实战演示数据集预测结语 逻辑回归 前言 logistic回归是被用于解决分类问题的机器学习方法,以下我们将对逻辑回归在二分类的应用上展开介绍,涉及的内容有激活函数sigmoid,梯度上升算法,以及在数据集上的实际应用。 本次实践的代码已上传到 线性回归 在此之前,我们了解一下线性回归,线性回归是利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计
继续访问
吴恩达机器学习之逻辑回归(二分类)
机器学习之逻辑回归逻辑回归二分类逻辑回归python代码实现(含详细代码注释): 逻辑回归 二分类逻辑回归 在训练的初始阶段,我们将要构建一个逻辑回归模型来预测,某个学生是否被大学录取。 设想你是大学相关部分的管理者,想通过申请学生两次测试的评分,来决定他们是否被录取。 现在你拥有之前申请学生的可以用于训练逻辑回归的训练样本集。对于每一个训练样本,你有他们两次测试的评分和最后是被录取的结果。 python代码实现(含详细代码注释): import numpy as np import pandas as p
继续访问