NoRM

Python测试:小心藏在简洁背后的那些陷阱

隐身守侯 提交于 2020-05-06 15:33:41
很多朋友都会疑问,自己写的代码为什么那么慢? 记得在读研究生的时候,我的导师到台湾去访学,跟我讲了他的亲身经历,说他写的算法,半个小时,计算机就出结果了,而且是在个人电脑上,台湾的学生2-3天都算不出来,问了之后,说还在计算。 导师说的问题是关于裂缝的应力分析的,简单讲,比如,一颗子弹打到玻璃上,玻璃会不会出现裂缝,裂缝周围的应力是怎么分布的,出现裂缝之后,玻璃还能不能继续达到使用的应力承载能力? 这是一个很复杂的计算,可以说导师的算法非常好。当然我们是做计算机数值计算的,对性能的追求可以说达到了极致,在应用领域,开发成本也是非常重要的考量。 我们公司的流体力学仿真软件一直非常追求性能,同时作为商业的软件开发公司,在开发成本上的考虑也是非常关注的。从计算性能,到可视化性能各个方面,都需要时间和经验的高度分析。 今天我们聊聊性能这件事。 关于性能和开发 1、编程之美的准则是什么? 美与丑,是做一个判别,既然是判别自然存在一个标准的问题,也就是准测。 作为算法工程师,首先自然是完成功能,然后才是性能。但是,功能这件事,通常很好描述,标准也相对清晰,而,性能这件事却无穷无尽。 一般情况下,我们的判别标准就是在功能满足客户需求的情况下,以当前市面上软件水平的客户体验效果为标准,别人一个操作等0.1秒,我们做到0.1秒以内就可以。 2、牺牲性能的背后,是组织形式的自由和更广泛的人才空间

基于sklearn进行文本向量化

女生的网名这么多〃 提交于 2020-05-06 01:47:39
sklearn中,计数向量化用 CountVectorizer ,tfidf向量化用 TfidfVectorizer : import pickle from sklearn.feature_extraction.text import TfidfVectorizer, CountVectorizer def test(vectorizer, word_bag, test_data): test_matrix = vectorizer.transform(test_data) print (test_matrix.shape) array = test_matrix.toarray() for rid in range(len(array)): print (test_data[rid], " \t " , "" .join([ " (%s, %.5f) " % (word_bag[cid], array[rid][cid]) for cid in range(len(word_bag))])) def vectorize(): train_data = [ " 我 来到 北京 清华大学 " , " 他 来到 了 网易 杭研 大厦 " , " 小明 硕士 毕业 与 中国 科学院 " , " 我 爱 北京 天安门 " ] # vectorizer = CountVectorizer

吴裕雄 数据挖掘与分析案例实战(6)——线性回归预测模型

做~自己de王妃 提交于 2020-05-05 15:44:35
# 工作年限与收入之间的散点图 # 导入第三方模块 import pandas as pd import seaborn as sns import matplotlib.pyplot as plt # 导入数据集 income = pd.read_csv(r'F:\\python_Data_analysis_and_mining\\07\\Salary_Data.csv') print(income.shape) print(income.head()) # 绘制散点图 sns.lmplot(x = 'YearsExperience', y = 'Salary', data = income, ci = None) # 显示图形 plt.show() # 简单线性回归模型的参数求解 # 样本量 n = income.shape[0] # 计算自变量、因变量、自变量平方、自变量与因变量乘积的和 sum_x = income.YearsExperience.sum() sum_y = income.Salary.sum() sum_x2 = income.YearsExperience.pow(2).sum() xy = income.YearsExperience * income.Salary sum_xy = xy.sum() # 根据公式计算回归模型的参数 b = (sum

文本挖掘预处理之向量化与Hash Trick

醉酒当歌 提交于 2020-05-04 10:40:14
    在 文本挖掘的分词原理 中,我们讲到了文本挖掘的预处理的关键一步:“分词”,而在做了分词后,如果我们是做文本分类聚类,则后面关键的特征预处理步骤有向量化或向量化的特例Hash Trick,本文我们就对向量化和特例Hash Trick预处理方法做一个总结。 1. 词袋模型     在讲向量化与Hash Trick之前,我们先说说词袋模型(Bag of Words,简称BoW)。词袋模型假设我们不考虑文本中词与词之间的上下文关系,仅仅只考虑所有词的权重。而权重与词在文本中出现的频率有关。     词袋模型首先会进行分词,在分词之后,通过统计每个词在文本中出现的次数,我们就可以得到该文本基于词的特征,如果将各个文本样本的这些词与对应的词频放在一起,就是我们常说的向量化。向量化完毕后一般也会使用TF-IDF进行特征的权重修正,再将特征进行标准化。 再进行一些其他的特征工程后,就可以将数据带入机器学习算法进行分类聚类了。     总结下词袋模型的三部曲:分词(tokenizing),统计修订词特征值(counting)与标准化(normalizing)。     与词袋模型非常类似的一个模型是词集模型(Set of Words,简称SoW),和词袋模型唯一的不同是它仅仅考虑词是否在文本中出现,而不考虑词频。也就是一个词在文本在文本中出现1次和多次特征处理是一样的。在大多数时候

matplotlib绘制热力图

安稳与你 提交于 2020-05-03 22:45:25
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/jin_tmac/article/details/82184457 以在sklearn的svm为例 plt.figure(figsize=(8, 6)) plt.subplots_adjust(left=.2, right=0.95, bottom=0.15, top=0.95) #设置标注前后左右的距离 plt.imshow(scores, interpolation='nearest', cmap=plt.cm.hot, norm=MidpointNormalize(vmin=0.2, midpoint=0.92)) plt.xlabel('gamma') plt.ylabel('C') plt.colorbar() plt.xticks(np.arange(len(gamma_range)), gamma_range, rotation=45) plt.yticks(np.arange(len(C_range)), C_range) plt.title('Validation accuracy') plt.show() 1 2 3 4 5 6 7 8 9 10 11 12 imshow(X, cmap=None,

三维点云处理技术二:三维点云表征概述

て烟熏妆下的殇ゞ 提交于 2020-05-02 17:39:37
课程来源: 睿慕课《三维点云处理技术和深度学习在点云处理中的应用》 讲师:索传哲 三维点云数据获取方式及原理 主要分为立体视觉测量法、结构光3D成像法、飞行时间TOF法。 立体视觉测量法 相机成像模型 视觉SLAM14讲——相机模型介绍 世界坐标系下的三维坐标点 P w ⟶ P_w\longrightarrow P w ​ ⟶ 相机坐标系下的坐标 P c ⟶ P_c\longrightarrow P c ​ ⟶ 归一化坐标 P n o r m ⟶ P_{norm}\longrightarrow P n o r m ​ ⟶ 畸变后的坐标 P d ⟶ P_d\longrightarrow P d ​ ⟶ 像素坐标 U ( u , v ) U(u,v) U ( u , v ) 被动双目立体视觉 双目立体视觉是利用视差原理来计算深度。两幅图片因为相机视角不同带来的图像差别构成视差,过程如下: 1,首先需要对双目相机进行标定,得到两个相机的内外参数、单应矩阵。 2,根据标定结果对原始图像校正,校正后的两张图像位于同一平面且互相平行。 3,对校正后的两张图像根据极线约束进行像素点匹配。 4,根据匹配结果计算每个像素的深度,从而获得深度图。 优点: 1、对相机硬件要求低,成本也低。因为不需要像TOF和结构光那样使用特殊的发射器和接收器,使用普通的消费级RGB相机即可。 2、室内外都适用

第4章 探索性数据分析(多因子与复合分析)

被刻印的时光 ゝ 提交于 2020-05-02 10:28:40
4.1、多因子 4.1.1 假设检验与方差检验   假设检验适用于( 数据样本较小时 )   方差检验适用于( 数据样本较大时 ) import numpy as np import scipy.stats as ss #生成一20个数的标准正态分布 norm_dist = ss.norm.rvs(size=20) #检测norm_dist是否是正态分布,使用的方法是基于峰度和偏度的 print(ss.normaltest(norm_dist)) #结果:NormaltestResult(statistic=0.2025598777545946, pvalue=0.9036800223028876) #第一个是统计值,第二个值是p值 (1) P分布 检验常用于比较 两种样本是否一致 (例如:临床医疗上药物是否有效); (2) 独立分布 t检验 用于检测 两组值的均值是都有比较大的差异性 print(ss. ttest_ind (ss.norm.rvs(size=10),ss.norm.rvs(size=20))) #结果:Ttest_indResult(statistic=-0.575484958550556, pvalue=0.5695598474341583)   由于 p值大于 0.05(假定),可以接受该假设 (3) 卡方检验 常常用于确定 两因素件是否有比较强的联系

2019牛客多校 Round5

|▌冷眼眸甩不掉的悲伤 提交于 2020-05-01 21:29:58
Solved:4 Rank:122 补题:8/10 A digits 2 签到 把这个数写n遍 #include <bits/stdc++.h> using namespace std; int T; int n; int main(){ scanf( " %d " ,& T); while (T-- ){ scanf( " %d " ,& n); for ( int i= 1 ;i<=n;i++)printf( " %d " ,n); puts( "" ); } return 0 ; } digits 2 B generator 1 题意:求矩阵快速幂 幂超级大 题解:10进制模拟矩阵快速幂 #include <bits/stdc++.h> using namespace std; typedef long long ll; ll mod; struct node { ll c[ 2 ][ 2 ]; }; node mul(node x, node y) { node res; memset(res.c, 0 , sizeof (res.c)); for ( int i = 0 ; i < 2 ; i++ ) for ( int j = 0 ; j < 2 ; j++ ) for ( int k = 0 ; k < 2 ; k++ ) res.c[i][j] = (res.c[i

HOG算法基础

感情迁移 提交于 2020-04-29 11:52:30
实现思路步骤: 1.对原图像gamma校正,img=sqrt(img); 2.求图像竖直边缘,水平边缘,边缘强度,边缘斜率。 3.将图像每16*16(取其他也可以)个像素分到一个cell中。对于256*256的lena来说,就分成了16*16个cell了。 4.对于每个cell求其梯度方向直方图。通常取9(取其他也可以)个方向(特征),也就是每360/9=40度分到一个方向,方向大小按像素边缘强度加权。 5.每2*2(取其他也可以)个cell合成一个block,所以这里就有(16-1)*(16-1)=225个block。最后归一化直方图。 6.所以每个block中都有2*2*9个特征,一共有225个block,所以总的特征有225*36个。 当然一般HOG特征都不是对整幅图像取的,而是对图像中的一个滑动窗口取的。 形象化的用一个流程图显示: matlab实现代码:参考别人的修改的 clear;clc; img =imread( ' E:\mat\lena.jpg ' );% 图片位置 % 获取图像,尺寸,并将图像resize成step的最近整数倍 img = double (img); figure;imshow(img,[]); % 显示图像 step = 8 ; %step* step个像素作为一个cell [m1 ,n1] =size(img);% 获取图像尺寸 img

【趣味案例】只想听歌曲的高潮部分?让我用python来教你做个音乐高潮提取器!

微笑、不失礼 提交于 2020-04-28 19:40:26
有些时候,我们为了设定手机铃声或者发抖音视频时,会耗费大量时间在音乐剪辑上。尤其是想发布大量抖音视频的时候,我们得收集大量的短音乐,这是一个相当耗费时间的工作。那么,这个音乐高潮的提取能不能自动化呢?答案是:可以。 1.原理简介 不知道大家有没有这样的体会,大部分时候,歌曲的高潮部分通常是重复次数最多的部分。因此我们可以根据这一个特征,提出我们的算法: 1.遍历整首歌曲。 2.将选定长度的部分与其他部分比较并计算相似度,以查看是否重复。 3.寻找重复次数较大、且间隔长的片段。 2.代码编写 为了避免造轮子,我们找到了别人已经做过的类似的项目: https://github.com/vivjay30/pychorus 我们只需要分析这个源代码中最核心的部分,即求相似区段的源代码: def compute_similarity_matrix_slow(self, chroma): """ 虽然慢,但是直接的方法来计算区段相似矩阵 """ num_samples = chroma.shape[1] time_time_similarity = np.zeros((num_samples, num_samples)) for i in range(num_samples): for j in range(num_samples): # 检测每一段的相似度 time_time