随机数组合的方法:选取一个随机数发生器,生成1000个随机数,令这100个随机数生成数组并命名为t。同时令n=1,命名最终需要的随机数数组为x,选取第二个发生器,生成一个随机数j,且满足1而随机数组合的难点在于,步骤2步骤3的时候随机数种子的选取比较难。这里用的是第一个随机数发生器生成的随机数作为种子,也自己定义其他的种子。
原文链接:http://tecdat.cn/?p=13033
介绍
布丰投针是几何概率领域中最古老的问题之一。它最早是在1777年提出的。它将针头掷到有平行线的纸上,并确定针和其中一条平行线相交的可能性。令人惊讶的结果是概率与pi的值直接相关。
R程序将根据上段所述的情况估算pi的值并使用gganimate进行动态可视化。
第1部分
对于A部分,我们创建一个数据帧,该数据帧将在3个不同的区间上生成随机值,这些区间将代表x,y的范围以及每个落针点的角度。这是一个易于实现的随机数情况,需要使用runif函数。此功能要求输入数量,后跟一个间隔。生成数字后,我们会将值保存到数据框中。
rneedle <- function(n) {
x = runif(n, 0, 5)
y = runif(n,0, 1)
angle = runif(n,-pi, pi) #从-180到180的角度
values<-data.frame(cbind(x, y, angle))
return(values)
}
values<-rneedle(50)
#检查是否生成50×3矩阵
values
#我们的数据帧已经成功生成。
x y angle
1 4.45796267 0.312440618 1.3718465
2 3.43869230 0.462824677 2.9738367
3 2.55561523 0.596722445 -2.9638285
4 3.68098572 0.670877506 -0.6860502
5 0.03690118 0.202724803 -0.3315141
6 4.64979938 0.180091416 -0.3293093
7 4.92459238 0.172328845 -0.5221133
8 3.50660347 0.752147374 2.9100221
9 2.03787919 0.167897415 -0.3213833
10 0.38647133 0.539615776 -0.1188982
11 3.28149935 0.102886770 -1.6318256
12 3.68811892 0.765077533 1.2459037
13 1.52004894 0.682455494 -0.4219802
14 3.76151379 0.508555610 0.1082087
...
第2部分
我们绘制第一部分中的针。重要的是不要在这个问题上出现超过2条水平线。它使我们可以进行检查以了解此处描绘的几何特性的一般概念。话虽如此,让我们注意我们决定在每个方向上将图形扩展1个单位。原因是想象一个针尾从y = 1开始,其角度为pi / 2。我们需要假设该方向的范围最大为2。
plotneedle(values)
第3部分
在下面,将基于阅读布冯针和基本几何原理的知识,查看pi的估算值。
buffon(values)
第4部分
运行代码后,我们收到以下答案。
>buffon(X)
[1] 3.846154
set.seed(10312013)
X <- rneedle(50)
plotneedle(X)
buffon(X)
>buffon(X)
[1] 3.846154
第5部分
如前几节所述,当我们投掷更多的针头时,我们期望以最小的不确定性获得更准确的答案。从Approxpi函数运行代码后,我们收到了平均值= 3.172314和方差0.04751391的值。对于这样一个简单的实验,它对pi进行了很高的估计。
Approxpi(500)
mean(Approxpi(500))
var(Approxpi(500))
>mean(Approxpi(500))
[1] 3.172314
>var(Approxpi(500))
[1] 0.04751391
接下来对模拟次数从500~600的预测进行动态可视化,红色表示针投放到了直线上:
参考资料
Schroeder,L.(1974年)。布冯针问题:许多数学概念的激动人心的应用。
最受欢迎的见解
1.R语言动态图可视化:如何、创建具有精美动画的图
2.R语言生存分析可视化分析
3.Python数据可视化-seaborn Iris鸢尾花数据
4.r语言对布丰投针(蒲丰投针)实验进行模拟和动态
5.R语言生存分析数据分析可视化案例
6.r语言数据可视化分析案例:探索brfss数据数据分析
7.R语言动态可视化:制作历史全球平均温度的累积动态折线图动画gif视频图
8.R语言高维数据的主成分pca、 t-SNE算法降维与可视化分析案例报告
9.python主题LDA建模和t-SNE可视化
模式识别的三大核心问题包括:
特征选择 和 特征变换 都能够达到降维的目的,但是两者所采用的方式方法是不同的。
特征提取 主要是通过分析特征间的关系,变换原来特征空间,从而达到压缩特征的目的。主要方法有:主成分分析(PCA)、离散K-L变换法(DKLT)等。
特征选择 选择方法是从原始特征集中挑选出子集,是原始特征的选择和组合,并没有更改原始特征空间,特征选择的过程必须确保不丢失重要特征。主要方法有:遗传算法(GA)、统计检验法、分支定界法等。
这里主要讲讲特征选择中 遗传算法 以及它的R语言实现(因为要写作业,虽然不一定写对了)。
遗传算法受进化论启发,根据“物竞天择,适者生存”这一规则,模拟自然界进化机制,寻找目标函数的最大值。
采用遗传算法对男女生样本数据中的身高、体重、鞋码、50m成绩、肺活量、是否喜欢运动共6个特征进行特征选择。
由于有6个特征,因此选用6位0/1进行编码,1表示选中该特征。
适应度函数的实现
示例
结果如下
有什么不对的地方欢迎大家在评论区指出。