首页 文章 精选 留言 我的

精选列表

搜索[系统],共10000篇文章
优秀的个人博客,低调大师

Spark-ML-基于云平台和用户日志的推荐系统

架构: 数据收集:spark stareming从Azure Queue收集数据,通过自定义的spark stareming receiver,源源不断的消费流式数据。 数据处理: spark stareming分析用户行为日志数据,通过实时的聚集,统计报表现有的应用的运营信息,,也可以通过离线的训练模型,对实现数据进行预测和标注。 结果输出:hdfs 数据收集用到了这个东西,miner是个js可以收集用户的行为日志,前端收集和回传用户行为日志。 静态数据 动态数据 代码见:https://github.com/jinhang/jquery-behavior-miner 前台收集发送给Azure spark streaming 分析日志 spark 训练ALS spark使用ALS进行推荐 协同过滤 协同过滤(Collaborative Filtering, 简称CF),wiki上的定义是:简单来说是利用某兴趣相投、拥有共同经验之群体的喜好来推荐使用者感兴趣的资讯,个人透过合作的机制给予资讯相当程度的回应(如评分)并记录下来以达到过滤的目的进而帮助别人筛选资讯,回应不一定局限于特别感兴趣的,特别不感兴趣资讯的纪录也相当重要。 以上定义太拗口,举个简单的例子:我现在多年不看日本anime的新番了,最近突然又想看几部新番,但又不知道这么多新番中看哪些比较好,于是我就找几个同样喜欢日本动漫的朋友来咨询。我第一个想咨询的朋友是和我口味最像的,我们都特别喜欢看《虫师》、《黑之契约者》、《寒蝉》这样的小众动画;我问的第二个朋友和我口味差不多,他特别喜欢看《钢炼》《无头骑士异闻录》这样的动画,我虽然喜欢,但不像他那么喜欢;由于身边喜欢日本动画的朋友不多,剩下第三个可以咨询的是一个宅女,平常经常看腐、宅、基的动漫,完全跟我不是一路人,于是问了下她推荐的片子,并将这些片子打上的黑名单的标签。然后我就开始看第一个朋友推荐的片子了,要是时间特别多又很无聊我可能会看第二个朋友推荐的,但打死我也不会看第三个朋友推荐的。这就是协同过滤的一个简化、小众版。 如何进行相似度度量 接着上面的例子,我可以通过我和其它朋友共同喜欢某个或某类动漫来确定我们的口味是否一样,那么如何以数学或者机器的形式来表示这个“口味一样”呢?通常,是通过“距离”来表示,例如:欧几里得距离、皮尔逊相关度、曼哈顿距离、Jaccard系数等等。 欧几里得距离 欧几里德距离(Euclidean Distance),最初用于计算欧几里得空间中两个点的距离,在二维空间中,就是我们熟悉的两点间的距离,x、y表示两点,维度为n: [Math Processing Error]d(x,y)=(∑in(xi−yi)2) 相似度: [Math Processing Error]sim(x,y)=11+d(x,y) 皮尔逊相关度 皮尔逊相关度(Pearson Correlation Coefficient),用于判断两组数据与某一直线拟合程度的一种度量,取值在[-1,1]之间。当数据不是很规范的时候(如偏差较大),皮尔逊相关度会给出较好的结果。 [Math Processing Error]p(x,y)=∑xiyi−nxy¯(n−1)SxSy=n∑xiyi−∑xi∑yin∑xi2−(∑xi)2n∑yi2−(∑yi)2 曼哈顿距离 曼哈顿距离(Manhattan distance),就是在欧几里得空间的固定直角坐标系上两点所形成的线段对轴产生的投影的距离总和。 [Math Processing Error]d(x,y)=∑∥xi−yi∥ Jaccard系数 Jaccard系数,也称为Tanimoto系数,是Cosine相似度的扩展,也多用于计算文档数据的相似度。通常应用于x为布尔向量,即各分量只取0或1的时候。此时,表示的是x,y的公共特征的占x,y所占有的特征的比例: [Math Processing Error]T(x,y)=x∙y∥x∥2+∥y∥2−x∙y=∑xiyi∑xi2+∑yi2−∑xiyi 计算推荐 根据上述“距离”的算法,我们可以找出与自己“口味一样”的人了,但这并不是目的,目的是找出推荐的物品。一种常用的做法是选出与你兴趣相同的N个人,然后根据这N个人的记录来进行加权推荐。具体如下,假设已经计算出欧几里得相似度: 朋友 相似度 A SA B SB C SC A 0.95 10.0 9.5 9.0 8.55 - - B 0.80 8.5 6.8 7.5 6 5.0 4 C 0.25 - - 6.5 1.625 9.0 2.25 *总计 16.3 16.175 6.25 Sim.Sum 1.75 2 1.05 总计 Sim.Sum 9.31 8.09 5.95* 其中,s.x开头的表示相似度与评分的乘积,Sim.Sum表示打过分的朋友的相似度之和。可以看出根据三位友人的推荐,我从这三个东西中A来看。 Item CF与User CF 基于用户的协同过滤(User CF),其基本思想相当简单,基于用户对物品的偏好找到相邻邻居用户,然后将邻居用户喜欢的推荐给当前用户。上述过程就属于User CF。 基于物品的CF(Item CF)的原理和基于用户的CF类似,只是在计算邻居时采用物品本身,而不是从用户的角度,即基于用户对物品的偏好找到相似的物品,然后根据用户的历史偏好,推荐相似的物品给他。两者的计算复杂度和适用场景皆不同。 public class UserSideCF implements Serializable { private static final Pattern TAB = Pattern.compile("\t"); public MatrixFactorizationModel buildModel(RDD<Rating> rdd) { //训练模型 int rank = 10; int numIterations = 20; MatrixFactorizationModel model = ALS.train(rdd, rank, numIterations, 0.01); return model; } public RDD<Rating>[] splitData() { //分割数据,一部分用于训练,一部分用于测试 SparkConf sparkConf = new SparkConf().setAppName("JavaALS").setMaster("local[2]"); JavaSparkContext sc = new JavaSparkContext(sparkConf); JavaRDD<String> lines = sc.textFile("/home/nodin/ml-100k/u.data"); JavaRDD<Rating> ratings = lines.map(line -> { String[] tok = TAB.split(line); int x = Integer.parseInt(tok[0]); int y = Integer.parseInt(tok[1]); double rating = Double.parseDouble(tok[2]); return new Rating(x, y, rating); }); RDD<Rating>[] splits = ratings.rdd().randomSplit(new double[]{0.6,0.4}, 11L); return splits; } public static void main(String[] args) { UserSideCF cf = new UserSideCF(); RDD<Rating>[] splits = cf.splitData(); MatrixFactorizationModel model = cf.buildModel(splits[0]); Double MSE = cf.getMSE(splits[0].toJavaRDD(), model); System.out.println("Mean Squared Error = " + MSE); //训练数据的MSE Double MSE1 = cf.getMSE(splits[1].toJavaRDD(), model); System.out.println("Mean Squared Error1 = " + MSE1); //测试数据的MSE } public Double getMSE(JavaRDD<Rating> ratings, MatrixFactorizationModel model) { //计算MSE JavaPairRDD usersProducts = ratings.mapToPair(rating -> new Tuple2<>(rating.user(), rating.product())); JavaPairRDD<Tuple2<Integer, Integer>, Double> predictions = model.predict(usersProducts.rdd()) .toJavaRDD() .mapToPair(new PairFunction<Rating, Tuple2<Integer, Integer>, Double>() { @Override public Tuple2<Tuple2<Integer, Integer>, Double> call(Rating rating) throws Exception { return new Tuple2<>(new Tuple2<>(rating.user(), rating.product()), rating.rating()); } }); JavaPairRDD<Tuple2<Integer, Integer>, Double> ratesAndPreds = ratings .mapToPair(new PairFunction<Rating, Tuple2<Integer, Integer>, Double>() { @Override public Tuple2<Tuple2<Integer, Integer>, Double> call(Rating rating) throws Exception { return new Tuple2<>(new Tuple2<>(rating.user(), rating.product()), rating.rating()); } }); JavaPairRDD joins = ratesAndPreds.join(predictions); return joins.mapToDouble(new DoubleFunction<Tuple2<Tuple2<Integer, Integer>, Tuple2<Double, Double>>>() { @Override public double call(Tuple2<Tuple2<Integer, Integer>, Tuple2<Double, Double>> o) throws Exception { double err = o._2()._1() - o._2()._2(); return err * err; } }).mean(); } }

优秀的个人博客,低调大师

docker 中 NGINX+PHP+MYSQL+REDIS+Elasticsearch 环境搭建 (windows系统)

windows 下 boot2docker fox.风来了 1.boot2docker 先安装这个: Docker虽然是Linux内核,但是官方还是支持了Windows和OS X。Boot2Docker官方下载地址:https://github.com/boot2docker/windows-installer/releasesBoot2Docker官方安装手顺:http://docs.docker.com/installation/windows/ 启动方法 windows 桌面 打开Boot2Docker Start 这个快捷方式,出现的命令界面中执行 2.启动不成功 #先关闭 boot2docker stop #然后启动 boot2docker start 如果出现以下错误 Writing /Users/mylxsw/.boot2docker/certs/boot2docker-vm/ca.pem Writing /Users/mylxsw/.boot2docker/certs/boot2docker-vm/cert.pem Writing /Users/mylxsw/.boot2docker/certs/boot2docker-vm/key.pem export DOCKER_HOST=tcp://192.168.59.103:2376 export DOCKER_CERT_PATH=/Users/mylxsw/.boot2docker/certs/boot2docker-vm export DOCKER_TLS_VERIFY=1解决方法: 设置三个变量 可以手动 到WINDOWS里面设置也可以,用以下命令设置 eval "$(boot2docker shellinit)" #命令查看状态 bash-4.3$ boot2docker status running #命令查看版本 bash-4.3$ boot2docker version Boot2Docker-cli version: v1.8.0 Git commit: 9a26066 bash-4.3$ 3.进入docker boot2docker ssh 4.文件夹项目 windows boot2docker 默认共享 /c/当前用户名 例如(我的本地):/c/Users/lanmps/ 如果在一个分区可以使用 mklink /H "C:\Users\lanmps\git" "C:\git" MKLINK [[/D] | [/H] | [/J]] Link Target /D 创建目录符号链接。默认为文件 符号链接。 /H 创建硬链接,而不是符号链接。 /J 创建目录联接。 Link 指定新的符号链接名称。 Target 指定新链接引用的路径 (相对或绝对)。 5. 设置其他盘文件夹为 项目文件夹 5.1 先关闭boot2docker windows 桌面 打开Boot2Docker Start 这个快捷方式,出现的命令界面中执行 boot2docker stop 5.2 设置共享文件夹 在虚拟机管理界面中, boot2docker-vm 一定要是 关闭状态(图中是我已经设置好的所以是运行的) 设置的共享文件夹名称 c/Users 不能改变,如果改变了一定要改回来 5.3 boot2docker启动 boot2docker start启动成功后,如果有问题, 重复 2 3 两个步骤就可以了 #进入docker boot2docker ssh #进入共享目录 cd /c/Users #查看列表 ll 发现e:\git目录下的全都有了 6.注意 因为boot2docker使用的是 内存 linux,所以只要关机/重启 时候,没有把该 boot2docker-vm 设置为 休眠或者 快照,那么关机/重启 之后,虚拟机内所有数据全部都是不存在的。 x.镜像下载 和 linux 一样 http://blog.csdn.net/fenglailea/article/details/50100311

优秀的个人博客,低调大师

docker 中 NGINX+PHP+MYSQL+REDIS+Elasticsearch 环境搭建 (linux系统)

项目中N次使用PHP+MYSQL+NGINX+REDIS+ Elasticsearch,为了方便所以使用了docker fox.风来了 完整版地址: http://blog.csdn.net/fenglailea/article/details/50451555 目前是 LINUX 下,稍后制作 WINDOWS下的 1.docker 环境安装 http://blog.csdn.net/fenglailea/article/details/44886427 推荐使用方法二 2.下载镜像 国外和国内的docker hub 是两种速度体验,访问国外的HUB 的时间,可以和朋友一起搓一顿都够了。 可以使用国内的docker HUB 使用国外下载 docker hub 时,有时会报错,比如超时,或者有代理什么的,直接PASS,重新PULL 2.1 nginx+php+redis 镜像下载 docker pull foxiswho/docker-nginx-php大约2小时,docker hub 国内没有服务器就是慢,可以使用国内的一些docker 仓库如 阿里云等 2.2elasticsearch 镜像下载 docker pull elasticsearch大约 1 小时 2.3 mysql 或其他 docker pull mysql:5.5.27大约1小时 3. 启动设置容器 3.1elasticsearch docker run --name es -p 9200:9200 -p 9300:9300 -d elasticsearch:latest --name 容器别名 -p 主机端口:容器端口 -d 镜像 3.2 mysql docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.6.27 3.3 nginx+php+redis docker run --name web --link mysql:db --link es:es -p 8080:80 -v /www/wwwroot/web:/usr/share/nginx/html -d foxiswho/docker-nginx-php:latest--link 容器内之间链接,比如访问数据库 原来 是 localhost或者 127.0.0.1 ,现在只要填写 db 就可以了 -v 本地目录:容器目录 ,例如 本地目录/www/wwwroot/web 注意 本地 目录设置权限和用户组 chown -R www-data:www-data/www/wwwroot/web chmod -R 777/www/wwwroot/web 这个时候访问本机 127.0.0.1:8080 就可以看到 你的项目站点了 4.容器操作 4.1 已启动的容器 如果启动成功了使用命令就可以看到已启动的容器: docker ps 4.1 所有容器 docker ps -a

优秀的个人博客,低调大师

基于若依开发的工程项目管理软件系统源码开源,轻量级 OA 办公系统,工程项目的进度控制、成本预算管理

概述 本项目基于 RuoYi-Flowable-Plus 进行二次开发扩展 Flowable 工作流功能,支持在线表单设计和丰富的工作流程设计能力。如果觉得这个项目不错; 适用于工程项目流程审批、工程进度管理、工程预算管理等场景; 项目功能介绍 本项目集成 flowable 工作流,工作流在此基础上增加了任务监听器等功能; 本项目适用于工程项目的投标、项目进度及成本控制用户; 流程管理:流程发起、我的流程、待办任务、已办任务; 流程部署:在原有基础上增加了任务监听器,根据部门id流转到该部门的主管审批; 项目管理:项目信息的维护,重点功能是项目的流程进度控制,根据项目进度类型填写任务进度信息; 合同管理:合同在实际场景中分两部分,一是关联项目合同信息,二是除项目合同外还有日常采购合同作为单独信息管理 投标管理:参与的投标工程项目的信息录入,发起的工作流走完后会自动保存到数据库,另外对未开标或者筹划中的的项目做了采购意向管理; 财务管理:财务管理分两部分,一是关联项目财务的收入、支出情况及核算;二是非项目的采购收支情况; 重要提醒:对工作中的事件做的任务提醒,办理情况等内容; 知识库等:普通分类文章信息; 本项目文件上传使用了七牛云存储,请自行配置; 开源地址 gitee:https://gitee.com/xnqysabout/ry-vue-flowable-xg github:https://github.com/huangxing2010/ry-vue-flowable-xg 视频教程 请移步:https://space.bilibili.com/502241799/channel/collectiondetail?sid=3373462 项目预览 地址:item.oa.system-code.vip 演示截图

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

用户登录
用户注册