算法
小飞鱼_bigdata
大数据、算法
展开
-
Spark GraphX实现Bron–Kerbosch算法-极大团问题
本文使用Spark GraphX实现了Bron–Kerbosch算法,用来求解无向图中的极大团(即完全子图)问题原创 2017-10-22 22:56:53 · 1739 阅读 · 1 评论 -
基础算法五:最长公共子序列问题
计算字符串a和b之间的最长公共子序列(LCS),同样是一个动态规划问题。我们需要分两步解决这个问题。首先,我们要找到字符串a和b之间的最长公共子序列的长度。然后通过逆序查找找到最长公共子序列。我们用table[i][j]表示字符串a[1:i],b[1:j]之间的最长公共子序列的长度。很显然如果a[i]等于b[j],table[i][j]等于table[i-1][j-1]+1。如果a[i]不等于...原创 2019-03-23 22:49:40 · 413 阅读 · 0 评论 -
基础算法四:编辑距离和文本相似度计算
编辑距离是对两个字符串差异化的量化,其含义是将一个字符串转化为另一个字符串所需的最少操作次数,允许的编辑操作包括将一个字符替换为另一个字符,插入一个字符,删除一个字符。编辑距离可用在自然语言处理中,用于计算两个文本之间的相似度。算法的基本原理:对于字符串a[1:i]和字符串b[1:j]来说,用edit[i][j]表示它们间的编辑距离。如果a[i]和b[j]相同,则edit[i][j]=ed...原创 2019-03-18 23:58:40 · 1544 阅读 · 0 评论 -
基础算法三:归并排序
归并排序也是采用分而治之的思想,也是一个效率比较高的算法,它通过将已有的有序子序列合并得到完全有序的序列,时间复杂度为O(NlogN)。JDK底层的排序算法中也用到了归并排序。归并排序的主要步骤如下:1.分解:将原序列在中间位置划分为两部分。2.解决:对分解得到的两个子序列进行递归排序。3.合并:将排好序的两个子序列进行合并,使合并后的序列有序。关键在于第三步合并,这里需要创建...原创 2019-03-16 22:32:20 · 188 阅读 · 0 评论 -
卷积神经网络文本分类模型TextCNN及Tensorflow实现
卷积神经网络的核心思想是捕捉局部特征。对于文本来说,局部特征就是由若干单词组成的滑动窗口,类似于N-gram。卷积神经网络的优势在于能够自动对N-gram特征进行组合和筛选,获得不同抽象层次的语义信息,并且由于权值共享机制,训练速度也比较快。用于文本分类任务的卷积神经网络模型为TextCNN,具体原理见论文Convolutional Neural Networks for Sentence C...原创 2019-03-12 00:11:06 · 2795 阅读 · 0 评论 -
基础算法二:快速排序
快速排序也是面试中经常问到的算法,人人都应该掌握。快速排序是对冒泡排序的改进,它的基本思想是:采用分而治之的思想,选取一个基准,一趟排序后把数据分成两部分,一部分都比基准小,另一部分都比基准点大,然后再对这两部分分别进行上述的操作,直到整个序列有序。快速排序因为数据的交换是跳跃的,所以速度比只和相邻数据交换的冒泡排序要快,平均时间复杂度为O(NlogN)。该算法主要有两种实现方法:递归和非递归...原创 2019-03-16 12:47:38 · 162 阅读 · 0 评论 -
基础算法一:二叉树层次遍历
二叉树的层次遍历是面试时经常问到的一道编程题,人人都应该掌握。二叉树的层次遍历就是按照二叉树的层次从上到下,从左到右依次遍历树中的节点。如下图所示:二叉树该二叉树层次遍历顺序为:1 2 3 4 5 6 7如果按行输出就是:12 34 5 6 7二叉树的层次遍历可以借助队列来实现,代码如下(结果按行输出):class Node(object): # 节点类...原创 2019-03-15 23:59:12 · 914 阅读 · 1 评论 -
Python实现分类器性能度量(混淆矩阵,正确率,准确率,召回率,ROC,AUC)
1.混淆矩阵对于二分类问题,可将样例根据其真实类别与分类器预测类别的组合划分为:真正例(true positive):将一个正例正确判断为正例假正例(false positive):将一个反例错误判断为正例真反例(true negative):将一个反例正确判断为反例假反例(false negative):将一个正例错误判断为反例令TP、FP、TN、FN分别表示对应的样例数...原创 2018-04-16 23:00:54 · 14229 阅读 · 5 评论 -
TensorFlow用训练好的CNN模型检测
已预先训练好了一个识别猫、狗的二分类CNN模型,持久化在了一个cat_vs_dog.pb的文件中。现需要用其进行图片检测。1.代码读取训练好的pb文件,用来进行图片的检测,代码为:import tensorflow as tfimport numpy as npfrom PIL import ImageFILEPATH = 'F:/PycharmProjects/deepLearning/...原创 2018-04-11 00:21:18 · 5178 阅读 · 8 评论 -
TensorFlow实现AlexNet并持久化训练结果
1.参数设置数据的读取采用上篇博客中的方法https://blog.csdn.net/zryowen123/article/details/79796387,将上篇的代码命名为TFRecord.py,在本篇中进行了引用。import tensorflow as tfimport TFRecord as tfr # 自定义模块,用于进行tfrecords相关处理from tensorflow.p...原创 2018-04-10 23:28:19 · 1178 阅读 · 0 评论 -
用Python实现B2M算法:将二进制文件映射为灰度图片
其具体过程如下:对于给定的恶意代码可执行文件,即二进制文件,读取8位为一个无符号的整形(范围为0-255),固定的行宽为一个向量,整个文件最后生成一个二维数组。将此数组可视化为一个灰阶图像,该二维数组中每个元素的范围为0-255,正好为灰度图像中每个像素的取值范围,即每个数组元素对应图像中的一个像素。例子:将如下文件映射为图片:代码为:import numpy, scipy, os, array...原创 2018-03-08 00:48:55 · 3254 阅读 · 0 评论 -
基础算法六:求平方根的问题
求解,也是面试中经常问的一个问题。该问题有两种解法:二分法和牛顿法。首先说二分法,首先给定个初始区间范围[0,n],因为一定是在这个范围内,然后比较这个区间的中值的平方和n,如果小于n,将范围缩小为[m,n],如果大于n,将范围缩小为[0,]。然后重复这个步骤,直到误差小于设定的阈值。代码如下:def binary_search(n, e=1e-5): '''...原创 2019-04-11 00:44:11 · 1187 阅读 · 0 评论