kmeans实现文本聚类
需求 拿到的需求是输入n个文本,对文本进行聚类,由于这些输入不能通过历史数据进行训练,所以这个主要就是用无监督学习来解决。 kmeans 谈到聚类就会想到kmeans,它的核心思想是给定的K值和K个初始质心将样本中每个点都分到距离最近的类簇中,当所有点分配完后根据每个类簇的所有点…
k-means 聚类算法
聚类 聚类主要内容是将样本进行归类,同种类别的样本放到一起,所有样本最终会形成 K 个簇,它属于无监督学习。 核心思想 根据给定的 K 值和 K 个初始质心将样本中每个点都分到距离最近的类簇中,当所有点分配完后根据每个类簇的所有点重新计算质心,一般是通过平均值计算,然后再将每个点分到距离最…
从 JDK 源码角度看 Boolean
Java 的 Boolean 类主要作用就是对基本类型 boolean 进行封装,提供了一些处理 boolean 类型的方法,比如 String 类型和 boolean 类型的转换。 主要实现源码如下: public final class Boolean implements java.io.Se…
开源一个文本分析项目
Github https://github.com/sea-boat/TextAnalyzer TextAnalyzer a text analizer that can analyze text. so far, it can extract hot words in a t…
如何让你的传输更安全——NIO 模式和 BIO 模式实现 SSL 协议通信
对于 SSL/TLS 协议,如果要每个开发者都自己去实现显然会带来不必要的麻烦,正是为了解决这个问题 Java 为广大开发者提供了 Java 安全套接字扩展——JSSE,它包含了实现 Internet 安全通信的一系列包的集合,是 SSL 和 TLS 的纯 Java 实现,同时它是一个开放的标准,每个公司…
谈谈Java基础数据类型
Java的基本数据类型 类型 意义 取值 boolean 布尔值 true或false byte 8位有符号整型 -128~127 short 16位有符号整型 -pow(2,15)~pow(2,15)-1 int 32位有符号整型 -pow(2,31)~pow(2,31)-1…
怎么用弱引用实现内存泄漏检测
在 Java 中,引用分为强引用、软引用、弱引用和虚引用四种。 强引用,代码中普遍存在的形式,例如常见的普通类 new 出对象后的引用。GC 不会回收强引用的对象。 软引用,软引用对象会在内存溢出异常之前进行回收,也就是说在内存富裕的情况下 GC 不回收软引用。它可通过 SoftReferen…
如何用机器学习对文本分类
需求 使用监督学习对历史数据训练生成模型,用于预测文本的类别。 样本清洗 主要将重复的数据删除掉,将错误无效的数据纠正或删除,并检查数据的一致性等。比如我认为长度小于少于 13 的数据是无效的遂将之删掉。 def writeFile(text): file_object = ope…
注解的原理又是怎么一回事
Java 内置的注解以及自定义一个注解大家都比较熟悉的了,现在来看看注解实现的原理,看看 Java 的体系下面是如何对注解的支持的。 在讨论前先看一个自定义注解的例子,自定义实现这样一个注解:通过 @Test 向某类注入一个字符串,通过 @TestMethod 向某个方法注入一个字符串。 ①…
机器学习之神经网络
(这里不支持 letex,排版很差) 多层神经网络 前面说到的感知器是一种最基础的神经网络,他只有输入层和输出层,感知器只能处理线性可分问题,而对于非线性问题就需要多层神经网络。一般如下图所示,有多个层,比如左边的包含输入层、隐层和输出层,而右边的则包含了两个隐层。每层的神经元与…
Java 内存模型
在多核时代,如何提高 CPU 的性能成为了一个永恒的话题,而这个话题的讨论主要就是如何定义一个高性能的内存模型,内存模型用于定义处理器的各层缓存与共享内存的同步机制及线程和内存交互的规则。 Java 的世界也有属于它自己的内存模型,Java 内存模型,即 Java Memory Mode…
如何对热词进行提取
热词 简单地理解热词就是某文档中出现频率高的且非无用的词语。 朴素的想法 文档由若干词(term)组成,那么很朴素的想法就可以认为文档中某个 term 出现的次数越多就越可能是高频热词。这样的统计策略就叫 Term Frequency,即 TF。 干扰项 标点符号,一般标点符号没有价值…
从 JDK 源码角度看 java 并发线程的中断
线程的定义给我们提供了并发执行多个任务的方式,大多数情况下我们会让每个任务都自行执行结束,这样能保证事务的一致性,但是有时我们希望在任务执行中取消任务,使线程停止。在 java 中要让线程安全、快速、可靠地停下来并不是一件容易的事,java 也没有提供任何可靠的方法终止线程的执行。 …
分布式系统调用链监控
分布式系统调用链监控 应用架构由集中式向分布式演进后,整个调用关系变得复杂。 分布式架构由复杂且较大规模集群构成,各个应用之间相当独立,可能由不同团队、不同语言实现。 系统一个完整的调用过程可能横跨多个服务及数据中心。 复杂的调用导致系统出问题后难以定位问题。 无法准确知道整体…
从JDK源码角度看并发锁的优化
在CLH锁核心思想的影响下,JDK并发包以CLH锁作为基础而设计,其中主要是考虑到CLH锁更容易实现取消与超时功能。比起原来的CLH锁已经做了很大的改造,主要从两方面进行了改造:节点的结构与节点等待机制。 在结构上引入了头结点和尾节点,他们分别指向队列的头和尾,尝试获取锁、入队…
机器学习之 k 近邻
核心思想 KNN 算法假设给定的训练集中的实例都已经分好类了,对于新的实例,根据离它最近的 k 个训练实例的类别来预测它的类别。即这 k 个实例大多数属于某个类别则该实例就属于某个类别。比如 k 为 5,离新实例 a 最近的 5 个样本的情况为,3 个样本属于 A 类,1 个样本属于 B 类,一个样本属于 C 类,那…
从 JDK 源码角度看线程的阻塞和唤醒
目前在 Java 语言层面能实现阻塞唤醒的方式一共有三种:suspend 与 resume 组合、wait 与 notify 组合、park 与 unpark 组合。 其中 suspend 与 resume 因为存在无法解决的竟态问题而被 Java 废弃,同样,wait 与 notify 也存在竟态条件,wait 必须…
TensorFlow训练Logistic回归
Logistic回归 在用线性模型进行回归训练时,有时需要根据这个线性模型进行分类,则要找到一个单调可微的用于分类的函数将线性回归模型的预测值关联起来。这时就要用到逻辑回归,之前看吴军博士的《数学之美》中说腾讯和谷歌广告都有使用logistics回归算法。 如下图,可以清晰看到…
从JDK源码角度看并发竞争的超时
JDK中的并发框架提供的另外一个优秀机制是锁获取超时的支持,当大量线程对某一锁竞争时可能导致某些线程在很长一段时间都获取不了锁,在某些场景下可能希望如果线程在一段时间内不能成功获取锁就取消对该锁的等待以提高性能,这时就需要用到超时机制。在JDK1.5之前并没有对此支持,当时的并…
TensorFlow 训练单特征和多特征的线性回归
线性回归 线性回归是很常见的一种回归,线性回归可以用来预测或者分类,主要解决线性问题。相关知识可看 “相关阅读”。 主要思想 在 TensorFlow 中进行线性回归处理重点是将样本和样本特征矩阵化。 单特征线性回归 单特征回归模型为:y = wx + b 构建模型 X = tf.p…