mu

机器学习之数据分析

梦想的初衷 提交于 2021-02-18 06:28:56
熟话说,'巧妇难为无米之炊',数据和特征就是'米',模型和算法则是'巧妇',没有充足的数据、合适的特征,再强大的模型结构也无法得到满意的输出,为了更好的使用模型,必须先对数据有个正确的认识,本博将对数据分析的三种方法(描述性统计,数据可视化和相关性系数)进行总结,为数据预处理准备 1. sklearn数据集类型 - 自带的小数据集:sklearn.datasets.load_<name> 鸢尾花数据集:load_iris() 乳腺癌数据集:load_breast_cancer() 手写数字集:load_digits() - 可在线下载的数据集:sklearn.datasets.fetch_<name> - 计算机生成的数据集:sklearn.datasets.make_<name> - svmlight/libsvm格式的数据集:sklearn.datasets.load_svmlight_file() - 从买了data.org在线下载获取数据集:sklearn.datasets.fetch_mldata() 2. 数据分析 下面将以房价数据为例进行说明这个数据分析过程 2.1 获取数据 import pandas as pd housing = pd.read_csv('./datasets/housing/housing.csv') 2.2 查看列标信息 print

自然语言处理(五)时下流行的生成模型

不打扰是莪最后的温柔 提交于 2021-02-16 16:59:51
近期流行的生成模型 本次介绍近期大火的三大类生成模型,这三大类模型从三个不同角度切入,居然都能有惊人的效果。而且深入挖掘发现它们有很多相似的地方。 1. Generative Adversarial Nets 生成对抗网络(GANs)是当今最火的生成模型,从2014年 Goodfellow 论文发表开始,其引用量已是4000+了。而且GANs家族人丁兴旺,从最原始的GANs开始,家族明星是一个接一个,如cGAN, DCGAN, WGAN,WGAN-GP,LSGAN,BEGAN,infoGAN,seqGAN,cycle-GAN,star-GAN等等,每一个出来都是一个新闻。 GANs的火热最直接的原因,其原理直观,可解释。生成模型的目的常常是为得到数据X的分布p(X)。而常常我们对数据的分布一无所知,甚至很多数据分布是没有解析式的。GANs来求解p(X)时,走了一条不同寻常的路。GANs采用对抗的方式来学习,或者说是模仿(mimic)的方式来学习。GANs有个生成器(G),它的目的是生成可以以假乱真的数据,为了更好的训练G,GANs引入一个判别器(D),它的工作是当一个样本经过它之后,它能判别出样本是真实的数据样本还是生成器生成的样本,即它输入一个值来代表样本为真的程度。正如原文的例子一样,G相当于一个假币制造者,而D 是警察。就在这个互相对抗中,G生成的样本越来越像直实数据

4月训练题解合集

蓝咒 提交于 2021-02-14 09:31:40
  由于我太懒了,所以就不每题开一篇写了。题目大意也懒得写了。 DAY1 1A   显然最优策略是瞎走,在知道那条边断掉了之后才走最短路径。   先把以 $T$ 为根的最短路树求出来,然后可以用堆求出断掉每条边后端点到 $T$ 的最短路径。   最后像 dijk 那样 DP 一下就好了。 1B   直接线段树 + 凸包优化 DP 可以轻松做到 $O(n\log n)$   用 这个方法 可以优化到 $O(n)$ 1C   不同的环长只有 $O(\sqrt n)$ 种。   对每种环长算一下答案即可。 DAY2 2A   直接缩个点然后每个出度为 $0$ 的连通块扔掉最小值即可。 2B   用 这个东西 ,用平衡树维护序列即可。 DAY3 3A   如果可以修改一个 $a_i$ 满足 $\forall i,a_{i+1}<a_i+b_i \or a_{i+1}>a_i+c_i$,那么那一个人第一天就会发现。   如果可以修改两个,那么那两个人第二天都会发现。   现在就是要修改最少的 $a_i$ 满足上面那个东西。   可以 DP。枚举上一个没有修改的 $j$,那么要求 $[a_i-B_{i-1},a_i-C_{i-1}]\subseteq[a_j-B_{j-1},a_j-C_{j-1}]$。其中 $B,C$ 分别是 $b,c$ 的前缀和。   可以发现区间长度是单调的。   然后按

在 ESP32-S2 上试用 circuitpython

南笙酒味 提交于 2021-02-13 18:52:50
ESP32-S2 是乐鑫去年推出的 SOC,它可以看作是 ESP32 的低成本简化改进版本,在保持了 ESP32 的主要特点下,去掉了以太网、BLE、CAN、霍尔传感器等功能,但是增加了 USB OTG、摄像头接口、LCD接口 和 更多GPIO,进一步降低了成本,更加适合做通用控制。 ESP8266、ESP32 和 ESP32-S2 对比 (来自:https://maker.pro/esp8266/tutorial/a-comparison-of-the-new-esp32-s2-to-the-esp32) - ESP8266 ESP32 ESP32-S2 发布时间 2014 2016 2019 内核 Xtensa single-core 32-bit L106 Xtensa single/dual-core 32-bit LX6 Xtensa single-core 32-bit LX7 主频 80 MHz 160/240 MHz 240 MHz 协处理器 No ULP ULP (RISC-V) SRAM 160 KB 520 KB 320 KB ROM No 448 KB 128 KB RTC Memory No 16 KB 16 KB 扩展SPIRAM Up to 16MB Up to 16MB Up to 128MB 扩展 Flash No No Up to 1G Wi

【科研工具】基于SCI-HUB的文献下载工具

五迷三道 提交于 2021-02-13 12:00:26
Sci-Hub是由哈萨克斯坦软体开发暨神经技术研究生亚历珊卓·艾尔巴金(Alexandra Elbakyan)与俄罗斯的教育书籍和档案资料库创世纪图书馆合作建立。是目前已知 第一个提供大量自动且免费的付费学术论文的网站 , 使用者不需要事前订阅或付款 ,就能够使用原本存放在付费资料库的论文文章,并提供搜寻原先出版社网站内的文件档案服务。其中这些档案都是透过世界各地匿名学者提供的使用帐号,透过这些帐号使得网站能够取得JSTOR、施普林格科学+商业媒体、赛吉出版公司、爱思唯尔等出版社所拥有的论文,并将之加以集结。当用户向Sci-Hub提交论文请求时,网站会先搜寻创世纪图书馆是否有可提供的档案;如果创世纪图书馆并没有事先储存,Sci-Hub会以特定资料库的帐号下载文章,并送至创世纪图书馆备份以供将来使用。 2017年,宾夕法尼亚大学的Daniel Himmelstein研究了Sci-Hub,发现网站上的论文共有81,600,000篇,包含了所有学术论文的69%,基本能满足大部分的论文需求,因为剩下的31%是研究者不想获取的论文。(摘自《维基百科》) 当然,由于其侵犯出版商的利益以及论文版权,所以导致面临很多的法律纠纷,网站域名也是不定时的在更换,对于我们的科研工作者来说,如果离开学校,那么论文的获取将是一大难题,因此我们 总结了SCI-HUB的可用链接 ,同时由于SCI-HUB的实用性

莫比乌斯反演

做~自己de王妃 提交于 2021-02-13 05:31:23
整除分块: 好吧这就是一个前置小技巧,来看这样一个式子$$\sum_{i=1}^{n} \lfloor \frac{n}{i} \rfloor$$ 利用整除分块的方法,我们可以在$O(\sqrt(n))$的时间内计算出这个式子 容易发现,有许多$\lfloor \frac{n}{i} \rfloor$的值是一样的,而且它们都呈块状分布,经过一些小计算后可以发现,每一块的右边界即为$n/(n/l)$,于是我们就可以快速计算了 1 for ( int l = 1 , r; l <= n; l = r + 1 ) 2 { 3 r = n / (n / l); 4 ans += (r - l + 1 ) * (n / l); 5 } 莫比乌斯函数: 来看一些有趣的性质: 对于任意正整数$n$,$\sum_{d|n} \mu(d) = [n = 1]$ 对于任意正整数$n$,$\sum_{d|n} \frac{\mu(d)}{d} = \frac{\phi(n)}{n}$ 基于线性筛素数的方法,我们可以写出线性筛莫比乌斯函数的代码: 1 void get_mu( int n) 2 { 3 mu[ 1 ] = 1 ; 4 for ( int i = 2 ; i <= n; ++ i) 5 { 6 if (!vis[i]) {prim[++cnt] = i; mu[i] = - 1 ;} 7

c++11 多线程入门教程(一)

二次信任 提交于 2021-02-09 03:39:50
  原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/10945309.html      本网络编程入门系列博客是连载学习的,有兴趣的可以看我博客其他篇。。。。 c++ 网络编程课设入门超详细教程 ---目录        最近在找c++服务端开发的实习(大佬们有推荐吗QAQ。。),恰好写了一些c++11多线程有关的东西,就写一下笔记留着以后自己忘记回来看吧,也不是专门写给读者看的,我就想到哪就写到哪吧   c++11呢,就是c++升级之后的一个版本,现在马上就出c++20了,里面增加了很多对多线程支持的类,让多线程编程更加简单了,好了废话不多说,先来建立一个简单的多线程编程案例,看看c++11下多线程编程创建到底有多么的简单。 1.创建一个简单的多线程案例: 首先导入#include<thread>---用于创建线程 其次导入#include<chrono>--用于时间延时 获取时间之类的 定义一个线程对象t1,这就自动创建了一个线程,参数就是你要线程去执行的函数,t1是变量名字 随便取 std::thread t1(func); 下面这里返回一个毫秒级别的时间间隔参数值,间隔10毫秒 std::chrono::milliseconds(10) this_thread::sleep_for()就是让此线程休眠

【LeetCode】 118 字母异位词分组

余生长醉 提交于 2021-02-07 04:40:44
题目: 这题牛客网的题目我感觉出的有问题,如果有两三组呢,怎么能是ArrayList<String>返回值 解题思路: 由于互为字母异位词的两个字符串包含的字母相同,因此对两个字符串分别进行排序之后得到的字符串一定是相同的,故可以将排序之后的字符串作为哈希表的键。 https://leetcode-cn.com/problems/group-anagrams/solution/zi-mu-yi-wei-ci-fen-zu-by-leetcode-solut-gyoc/ 代码: import java.util.*; public class LC101 { public List<List<String>> groupAnagrams(String[] strs) { Map<String, List<String>> map = new HashMap<String, List<String>>(); for (String str : strs) { char[] array = str.toCharArray(); Arrays.sort(array); String key = new String(array); List<String> list = map.getOrDefault(key, new ArrayList<String>()); list.add(str

3. EM算法-高斯混合模型GMM

强颜欢笑 提交于 2021-02-02 14:35:45
1. EM算法-数学基础 2. EM算法-原理详解 3. EM算法-高斯混合模型GMM 4. EM算法-高斯混合模型GMM详细代码实现 5. EM算法-高斯混合模型GMM+Lasso 1. 前言 GMM(Gaussian mixture model) 混合高斯模型在机器学习、计算机视觉等领域有着广泛的应用。其典型的应用有概率密度估计、背景建模、聚类等。 2. GMM介绍 高斯混合模型(Gaussian Mixed Model)指的是多个高斯分布函数的线性组合,理论上GMM可以拟合出任意类型的分布,通常用于解决同一集合下的数据包含多个不同的分布的情况。 3. GMM原理解析 根据我们之前 EM算法-原理详解 ,我们已经学习了EM算法的一般形式: $$ Q_i(z^{(i)}) = P( z^{(i)}|x^{(i)},\theta^{j});;;;(1) $$ $$ \sum\limits_{z}Q_i(z^{(i)}) =1 $$ $$ L(\theta, \theta^{j}) = \sum\limits_{i=1}^m\sum\limits_{z^{(i)}}Q_i(z^{(i)})log{P(x^{(i)},z^{(i)}|\theta)} $$ 现在我们用高斯分布来一步一步的完成EM算法。 设有随机变量$\boldsymbol{X}$,则混合高斯模型可以用下式表示: $$

高斯混合模型的EM算法

孤者浪人 提交于 2021-02-02 13:04:05
高斯混合模型的EM算法 混合高斯模型 高斯混合模型的概率分布可以写成多个高斯分布的线形叠加,即 $$ p(\mathbf x) = \sum_{k=1}^{K}\pi_k\mathcal N(\mathbf x\ | \ \mathbf \mu_k, \mathbf \Sigma_k) $$ 引入一个$K$维的二值随机变量$\mathbf z$, 采用“$1$-of-$K$”编码,其中一个特定的元素$z_k$等于$1$,其余所有的元素都等于$0$。 于是$z_k$的值满足$z_k \in {0, 1}$且$\sum_k z_k = 1$,并且我们看到根据哪个元素非零,向量$\mathbf z$有$K$个可能的状态。$\mathbf z$的边缘概率分布可以根据混合系数$\pi_k$进行赋值,即 $$ p(z_k=1) = \pi_k $$ 其中参数${\pi_k}$必须满足 $$ 0 \leqslant \pi_k \leqslant 1 $$ 以及 $$ \sum_{k=1}^{K} \pi_k = 1 $$ 由于$\mathbf z$使用了“$1$-of-$K$”编码,也可以将这个概率分布写成 $$ p(\mathbf z) = \prod_{k=1}^{K}\pi_k^{z_k} $$ 对于$\mathbf z$给定的一个值, $\mathbf x$的条件概率分布是一个高斯分布