自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(38)
  • 收藏
  • 关注

原创 Java 常用IO流操作详解

1.基本概念IO:Java对数据的操作是通过流的方式,IO流用来处理设备之间的数据传输,上传文件和下载文件,Java用于操作流的对象都在IO包中。2.IO流的分类3.字节流(1)字节流基类InputStreamInputStream:字节输入流基类,抽象类是表示字节输入流的所有类的超类。常用方法: // 从输入流中读取数据的下一个字节 abstract int read() // 从输入流中读取一定数量的字节,并将其存储在缓冲区数组 b中 int read(byte

2020-08-04 18:35:13 297

原创 Java静态字段和静态方法

Java静态字段(属性、方法、类别)假设域被定义为static,那么每个类中仅仅有一个这种域。作为对照,每个对象对于全部的实例域却都有自己的一份拷贝。比如,假定须要给每个雇员赋予唯一的标识码。这里给Employee类加入一个实例域id和一个静态域nextId:class Employee{ ...... private int id; private static int nextId = 1;}如今,每个雇员对象都有一个自己的id域,但这个类的全部实例将共享一个nex

2020-08-04 17:39:42 496

原创 Java集合详解

一、集合的由来通常,我们的程序需要根据程序运行时才知道创建多少个对象。但若非程序运行,程序开发阶段,我们根本不知道到底需要多少个数量的对象,甚至不知道它的准确类型。为了满足这些常规的编程需要,我们要求能在任何时候,任何地点创建任意数量的对象,而这些对象用什么来容纳呢?我们首先想到了数组,但是数组只能放统一类型的数据,而且其长度是固定的,那怎么办呢?集合便应运而生了!二、集合是什么?Java集合类存放于 java.util 包中,是一个用来存放对象的容器。注意:①、集合只能存放对象。比如你存一个 i

2020-07-24 11:56:32 214

原创 Java中的异常和处理详解

简介程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常。异常发生时,是任程序自生自灭,立刻退出终止,还是输出错误给用户?或者用C语言风格:用函数返回值作为执行状态?。Java提供了更加优秀的解决办法:异常处理机制。异常处理机制能让程序在异常发生时,按照代码的预先设定的异常处理逻辑,针对性地处理异常,让程序尽最大可能恢复正常并继续执行,且保持代码的清晰。Java中的异常可以是函数中的语句执行时引发的,也可以是程序员通过throw 语句手动抛出的,只要在Java程序中产生

2020-07-22 12:20:35 268

原创 决策树算法原理及实现

决策树:决策树是一个预测模型,他代表的是对象属性与对象值之间的一种映射关系。Entropy(熵) = 系统的凌乱程度,使用算法ID3, C4.5和C5.0生成树算法得出熵,这一度量是基于信息学理论中熵的概念。决策树是一种树形结构,其中每个内部节点表示一个属性上的测试,每个分支代表一个测试输出,每个叶节点代表一种类别。决策树是一种十分常用的分类方法,是一种监督学习。1、决策树的构造在构造决策树时,我们需要解决的第一个问题就是,当前数据集上那个特征在划分数据分类时起决定性的作用。为了找到决定性的特征,划分

2020-07-12 16:59:30 3412

原创 logistic回归介绍以及原理分析

1.什么是logistic回归?logistic回归虽然说是回归,但确是为了解决分类问题,是二分类任务的首选方法,简单来说,输出结果不是0就是1举个简单的例子:癌症检测:这种算法输入病理图片并且应该辨别患者是患有癌症(1)或没有癌症(0)2.logistic回归和线性回归的关系逻辑回归(Logistic Regression)与线性回归(Linear Regression)都是一种广义线性模型(generalized linear model)。逻辑回归假设因变量 y 服从二项分布,而线性回归假

2020-07-07 17:40:32 24008

原创 SVM支持向量机

SVM介绍SVM支持向量机(英文全称:support vector machine)是一个分类算法, 通过找到一个分类平面, 将数据分隔在平面两侧, 从而达到分类的目的。如下图所示, 直线表示的是训练出的一个分类平面, 将数据有效的分隔开。SVM实现原理SVM的分类基本思路是找到一个分类平面, 下面重点探讨下如何找到这个平面。 先梳理下SVM求解的基本思路;如图SVM的推导分为5个步骤:1、用数学来定义要求解的问题SVM是求解一个平面S:y = wx + b, 其实就是求解参数w, b。如

2020-07-06 17:37:10 1811

原创 朴素贝叶斯算法原理及实现

1、准备知识贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类。这个定理解决了现实生活里经常遇到的问题:已知某条件概率,如何得到两个事件交换后的概率,也就是在已知P(A|B)的情况下如何求得P(B|A)。这里先解释什么是条件概率:表示事件B已经发生的前提下,事件A发生的概率,叫做事件B发生下事件A的条件概率。其基本求解公式为:下面不加证明地直接给出贝叶斯定理:2、朴素贝叶斯分类2.1、朴素贝叶斯分类原理朴素贝叶斯分类是一种十分简单的分类算法,叫它朴素贝叶斯分类

2020-07-04 17:51:10 10276

原创 线性回归算法原理

1.线性回归(Linear Regression)1.1什么是线性回归我们首先用弄清楚什么是线性,什么是非线性。(1)线性:两个变量之间的关系是一次函数关系的——图象是直线,叫做线性。注意:题目的线性是指广义的线性,也就是数据与数据之间的关系。(2)非线性:两个变量之间的关系不是一次函数关系的——图象不是直线,叫做非线性。相信通过以上两个概念大家已经很清楚了,其次我们经常说的回归回归到底是什么意思呢。回归:人们在测量事物的时候因为客观条件所限,求得的都是测量值,而不是事物真实的值,为了能够得到

2020-07-03 18:38:17 7270

原创 Scrapy笔记

Scrapy笔记安装scrapy框架1.安装scrapy:通过pip install scrapy即可安装。2.如果在Windows下,还需要安装pypiwin32,如果不安装,那么以后运行scrapy项目的时候就会报错,安装方式:pip install pypiwin32.3.如果是在Ubuntu下,还需要安装一些第三方库:studo apt-get install python-dev python-pip libxml2-dev libxt1-dev zliblg-dev libffi-de

2020-06-29 17:08:42 106

原创 BP神经网络原理及实现

BP神经网络原理经典的BP神经网络通常由三层组成: 输入层, 隐含层与输出层.通常输入层神经元的个数与特征数相关,输出层的个数与类别数相同, 隐含层的层数与神经元数均可以自定义.每个神经元代表对数据的一次处理:每个隐含层和输出层神经元输出与输入的函数关系为:其中Wij表示神经元i与神经元j之间连接的权重,Oj代表神经元j的输出, sigmod是一个特殊的函数用于将任意实数映射到(0,1)区间.上文中的sigmod函数称为神经元的激励函数(activation function), 除了sig

2020-06-27 21:08:21 11786

原创 奇异值分解(SVD)

奇异值分解(Singular Value Decomposition,以下简称SVD)是在机器学习领域广泛应用的算法,它不光可以用于降维算法中的特征分解,还可以用于推荐系统,以及自然语言处理等领域。是很多机器学习算法的基石.1.SVD的定义及相关概念SVD也是对矩阵进行分解,但是和特征分解不同,SVD并不要求要分解的矩阵为方阵。假设我们的矩阵A是一个m×n的矩阵,那么我们定义矩阵A的SVD为:假设有 m×n的矩阵 A,那么 SVD 就是要找到如下式的这么一个分解,将 A 分解为 3 个矩阵的乘积:

2020-06-26 20:30:34 2405

原创 Java中的循环语句

1、while和do/while循环当条件为true时,while循环执行一条语句(也可以是一个块语句)。一般形式如下while(condition) statement如果开始时循环条件的值就为false,那么while循环一次也不执行。下面是一个while循环示例,计算多长时间才能攒够一定数量的退休金:while(balance < goal){ balance += payment; double interest = balance * interestRate / 100;

2020-06-26 15:28:44 396

原创 矩阵特征值和特征向量

1.矩阵特征值和特征向量定义A为n阶矩阵,若数λ和n维非0列向量x满足Ax=λx,那么数λ称为A的特征值,x称为A的对应于特征值λ的特征向量。式Ax=λx也可写成( A-λE)x=0,并且|λE-A|叫做A的特征多项式。当特征多项式等于0的时候,称为A的特征方程,特征方程是一个齐次线性方程组,求解特征值的过程其实就是求解特征方程的解。计算A的特征值和特征向量.计算行列式得:化简得:得到特征值:...

2020-06-23 21:54:54 886

原创 推荐系统代码流程梳理

整体概述介绍完所有的单个推荐系统算法后,我们迎来将他们整合到一起的日子。首先这个整合代码整体并不难就是将每一个推荐算法训练完加入评估器的算法池中,再对其进行评估。接下来我们来看看这个文件中我们需要导入的第三方包:from MovieLens import MovieLens # 自己写的数据处理类from surprise import SVD, SVDpp # surprise库的SVD,SVD++算法from Evaluator import Evaluator # 自己实现的推荐效果评

2020-06-23 18:06:11 1030

原创 Java运算符

1、标识符概述运算符用于连接值。在下面内容可以看到,Java提供了一组非常丰富的算数和逻辑运算符以及数学函数。2、标识符详解2.1 算术运算符在Java中,使用算术运算符+、-、*、/ 表示加、减、乘、除运算。当参与 / 运算的两个操作数都是整数时,表示整数除法;否则,表示浮点除法。整数的求余操作(有时称为取模)用%表示。例如,15 / 2等于7,15%2等于1,15.0 / 2等于7.5.注意:整数被0除将会产生一个异常,而浮点数被0除将会得到无穷大或NaN结果。可移植性是Java语言的设计目

2020-06-23 11:44:45 122

原创 matrixFactorizationSVDppwithMetrics.py

matrixFactorizationSVDppwithMetrics.py这个.py文件和上一个文件非常相似,只是在算法上进行了升级,把SVD算法升级为了SVD++算法,但是使用的仅仅是默认参数。下面是详细注释代码:from MovieLens import MovieLensfrom surprise import SVDppfrom Evaluator import Evaluatorimport randomimport numpy as npfrom time import tim

2020-06-20 17:27:09 150

原创 Java的数据类型详解

1、 数据类型1.1、数据类型的作用数据类型用来声明变量,程序在运行过程中根据不同的数据类型分配不同大小的空间。比如::int i = 10;double d = 1.23;i变量和d变量类型不同,空间大小不同。1.2、数据类型在java语言中包括两种第一种:基本数据类型基本数据类型又可以划分为四大类八小类: 四大类: 第一类:整数型 byte,short,int,long(没有小数的) 第二类:浮点型 float,double(带有小数的) 第三类:布尔型 boole

2020-06-20 12:11:40 929

原创 matrixFactorization.py

matrixFactorization.py这个.py文件的主要功能是根据用户数据去训练SVD并且找到SVD的最佳参数,以便于后期预测。其中利用到的寻参函数是surprise库中search.py文件下对照sklearn库修改的GridSearchCv类,它可以从给定的参数列表中选出对于训练数据下的最佳参数。详情可以参照GridSearchCv下面是带详细注释的文件源代码:from MovieLens import MovieLensimport numpy as npfrom surprise

2020-06-19 18:16:58 134

原创 matrixFactorixationSVDwithMetrics.py

matrixFactorization.py这个.py文件是利用了SVD算法,也就是奇异值分解算法来对电影数据进行训练推荐。对于奇异值分解后期我会写一篇详细的博客来阐述。下面是此文件的带注释代码,因为与其他算法采用类似结构就不做过多解释:from MovieLens import MovieLensfrom surprise import SVDfrom Evaluator import Evaluatorimport randomimport numpy as npfrom time im

2020-06-19 17:42:36 156

原创 ItemBasedCFwithMetrics.py

ItemBasedCFwithMetrics.py这个文件与上一个.py文件相似,都是基于电影去构建KNN。区别在于这个文件是根据评估函数的评估指标进行排序从而达到推荐目的.评估函数文章详情请点击Evaluate下面是经过注释源代码:from MovieLens import MovieLensfrom Evaluator import Evaluatorfrom surprise import KNNBasicfrom time import timeimport randomimport

2020-06-19 14:16:40 162

原创 Java的变量

变量1、字面量字面量就是数据,程序中的一些数据。比如:10 100 123 :整形1.34 3.14 2.0: 浮点型true false : 布尔型‘a’ ‘国’: 字符型(用单引号的单个字符)“a” “abc” “中国”: 字符串型(用双引号括起来的都是字符串型)10:整数,是一个数字“10”: 它不是数字,是一个字符串,或者说,它属于“文字类”的。性质完全不同,在计算机中的对应的二进制码也是完全不同的。2、变量2.1什么是变量变量就是一个存数据盒子(盒子的大小是由数据类

2020-06-19 11:45:42 187

原创 ItemBasedCF.py

ItemBasedCF.py首先这个.py文件是基于多个用户评价的电影数据,利用surprise自带的KNN库去计算整个数据集的相似矩阵。再利用测试用户的评价数据和相似矩阵去选出与测试用户相似度最高的K个电影下图是此类运用到的几个库:from MovieLens import MovieLensfrom surprise import KNNBasicfrom collections import defaultdictfrom operator import itemgetterfrom t

2020-06-18 21:09:14 181

原创 HybridWithMetrics.py

HybridWithMetrics.py这个.py文件主要是调用HybridAlgorithm类对两个预测算法进行分别融合,然后再将这三个算法进行评估,最后将algorithm算法集中每个算法推荐指标进行统计分数,然后排序给出推荐电影并打印出来。from MovieLens import MovieLensfrom ContentBasedAlgorithm import ContentBasedAlgorithmfrom HybridAlgorithm import HybridAlgorithm

2020-06-18 18:05:10 154

原创 Java的标识符

对标识符的理解1、在java程序中,使用文本编辑工具进行代码编写的时候,有一些单词是蓝色,有一些单词是红色,有的绿色,有的是黑色,有的是紫色,有的是粉色。2、注意:在Java源代码中,在文本编辑工具中显示的高亮颜色为黑色时,这个单词属于标识符。3、标识符可以标识什么?可以标识:类名、方法名、接口名、常量名…4、到底什么是标识符?用一句话来说:凡是程序员自己有权利命名的单词都是标识符。我们看一下示例:public class BiaoShiFuTest{ // mian是一个方法的名称,属于标

2020-06-18 11:15:25 2307

原创 HybridAlgorithm.py

HybridAlgorithm.py首先,这个类是以后每个预测算法都要调用的一个基础类,每个surprise里面的算法都要通过这个类进行训练及预测。让我们看看该类运用到了什么库from surprise import AlgoBasefrom surprise import NormalPredictor这个类运用了一个库中的两个类,分别是AlgoBase和NormalPredictor。其中AlgoBase是每个surprise库中每个单个预测算法都必须继承的基类。详情可以点击AlgoBase

2020-06-17 18:41:28 324

原创 一个简单的Java应用程序

Java程序的结构public class hello{ public static void main(String args[]) { System.out.println("Hello world!") }}这个程序虽然很简答,但是所有的Java应用程序都具有这种结构。首先,Java区分大小写,如果出现了大小写拼写错误,程序将无法运行。关键词public成为访问修饰符,这些修饰符用于控制程序的其他部分对这段代码的访问级别。关键字class表明Java程序中的全部内容都包含在类

2020-06-17 12:08:05 363

原创 MoviesLens.py

MoviesLens.py此项目用到的数据集是MoviesLens数据集,其中包括用户评分、电影信息等数据。MoviesLens.py是进行数据的预处理文件。下面是对数据预处理流程代码的详解过程。首先,涉及到的库如下所示import csvimport reimport pandas as pdfrom surprise import Readerfrom surprise import Datasetfrom collections import defaultdictimport os

2020-06-16 17:42:16 338

原创 环境变量path和classpath

path环境变量当我们用文本编辑器写好了Java代码并保存为.java文件后,用dos命令窗口的javac xxx.java命令去编译文件时,会出现’javac’不是内部或外部命令,也不是可运行的程序或批处理文件。这说明:windows操作系统没有发现“javac.exe”命令在哪里,没有找到javac.exe文件在哪。为什么ipconfig… ping等命令可以使用呢?为什么javac用不了?我们发现windows操作系统中有这样一一个环境变量path,它的值为:C:\Program Fil

2020-06-16 12:42:13 368

原创 词袋模型(BOW,bag of words)和词向量模型(Word Embedding)概念介绍

一、词袋模型例句:Jane wants to go to Shenzhen.Bob wants to go to Shanghai.将所有词语装进一个袋子里,不考虑其词法和语序的问题,即每个词语都是独立的。例如上面2个例句,就可以构成一个词袋,袋子里包括Jane、wants、to、go、Shenzhen、Bob、Shanghai。假设建立一个数组(或词典)用于映射匹配[Jane, w...

2020-04-08 17:43:54 1583

原创 自然语言处理之实战中文文本关键词提取

前言关键词提取就是从文本里面把跟这篇文章意义最相关的一些词语抽取出来。这个可以追溯到文献检索初期,关键词是为了文献标引工作,从报告、论文中选取出来用以表示全文主题内容信息的单词或术语,在现在的报告和论文中,我们依然可以看到关键词这一项。因此,关键词在文献检索、自动文摘、文本聚类/分类等方面有着重要的应用,它不仅是进行这些工作不可或缺的基础和前提,也是互联网上信息建库的一项重要工作。关键词抽取从...

2020-04-07 19:59:01 2891

原创 自然语言处理之jieba中文分词工具

jiebajieba分词的算法主要有以下三种:1、基于统计词典,构造前缀词典,基于前缀词典对句子进行切分,得到所有切分可能,根据切分位置,构造一个有向无环图(DAG);2、基于DAG图,采用动态规划计算最大概率路径(最有可能的分词结果),根据最大概率路径分词;3、对于新词(词库中没有的词),采用有汉字成词能力的 HMM 模型进行切分。jieba分词接下来我们进行jieba分词练习,第...

2020-04-06 19:25:06 434

原创 自然语言处理中的文本分类

先来一段前戏机器学习的过程是训练模型和使用模型的过程,训练就是基于已知数据做统计学习,使用就是用统计学习好的模型来计算未知的数据。机器学习分为有监督学习和无监督学习,文本分类也分为有监督的分类和无监督的分类。有监督就是训练的样本数据有了确定的判断,基于这些已有的判断来断定新的数据,无监督就是训练的样本数据没有什么判断,完全自发的生成结论。无论监督学习还是无监督学习,都是通过某种算法来实现,而...

2020-04-05 17:40:21 725

原创 爬虫系列之request库的简单应用

爬虫request库的简单应用当前想要从网络上批量获取大量资源就需要使用爬虫这一项技术,今天我来分享一下python的request库的简单应用。1.request中的get请求get请求就是模拟用户向服务器请求资源的这一步骤。只需要将网址放入get请求中就可以获得该网址下的信息。下面来看例子:response =requests.get("http://www.baidu.com")...

2020-04-03 19:01:02 176

原创 自然语言处理之中文语料收集

自然语言处理语料的来源众所周知,中文的语料非常稀少,因为中文不像英语那样只有26个字母组成一切,中文的汉字数不清楚,所以对于预料的整理就非常的繁琐和复杂。抛开现有的一些质量不好的中文语料不谈,我们可以想到一些已经整理的差不多的语料,只需要我们稍加处理就可以得到一个完美的语料。这个时候我就想到了字幕文件这个尚未被发现的巨大语料库,因为字幕的容易获取,而且处理起来比较简单,所以我选择了爬取字幕网站这...

2020-04-02 20:59:12 1739

原创 正则表达式基础

正则表达式:原子推荐一个正则表达式测试网站: https://alf.nu/RegexGolf#accesstoken=xDpssJbZsLtvWCZGOppl原子是正则表达式中最基本的组成单位,每个正则表达式中至少要包含一个原子。常见的原子有:a普通字符作为原子b非打印字符作为原子c通用字符作为原子d原子表代码实战import restring = "taoyunjiaoyu"...

2020-04-01 17:48:39 191

原创 自然语言处理之中文分词工具介绍

1.中文分词工具介绍1.1 jiebajieba分词是国内使用人数最多的中文分词工具。jieba分词支持三种模式:(1)精确模式:试图将句子最精确地切开,适合文本分析;(2)全模式:把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义;(3)搜索引擎模式:在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。jieba分词过程中主要涉及如下几种算法:...

2020-03-31 18:24:24 642

原创 简单爬虫编写

简单的爬虫简单的爬虫很好写,直接使用urllib即可编写。代码实战#简单爬虫的编写import urllib.requestdata = urllib.request.urlopen("http://www.baidu.com").read()print(data)...

2020-01-27 10:36:57 279

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除