机器学习之「二分类算法」-----银行营销案例分析

原文地址:
<di:https://blog.csdn.net/weixin_44696674/article/details/88231922iv id=“article_content” class=“article_content clearfix” data-track-view="{“mod”:“popu_307”,“con”:",https://blog.csdn.net/weixin_44696674/article/details/88231922,"}" data-track-click="{“mod”:“popu_307”,“con”:",https://blog.csdn.net/weixin_44696674/article/details/88231922"}">






背景

数据共41188条,选自UCI机器学习库中的「银行营销数据集(Bank Marketing Data Set)」,这些数据与葡萄牙银行机构的营销活动相关。这些营销活动以电话为基础,一般,银行的客服人员需要联系客户至少一次,以此确认客户是否将认购该银行的产品(定期存款)。
通过与葡萄牙银行机构的直销活动(电话)有关的一些数据,预测客户是否会订阅定期存款(变量Y)。这对于实际生产有着巨大作用,可以通过这个预测结果对未来的工作进行一个初步规划,同时也可以对某些用户是否会订阅定期存款提供一个参照等;

数据说明

客户信息:
Age:年龄
Job:工作,工作类型(分类:“行政管理”、“蓝领”、“企业家”、“女佣”、“管理”、 “退休”、“个体户”、“服务”、“学生”、“技术员”、“失业”、“未知”)
Marital:婚姻,婚姻状况(分类:离婚,已婚,单身,未知)(注:“离婚”指离婚或丧偶)
Education:教育(分类:‘基本.4y’,‘Basy.6y’,‘Basy.9y’’,‘Health.学校’,‘文盲’,‘专业’课程,‘大学学位’,‘未知’)
Default:违约,信用违约吗?(分类:“不”,“是”,“不知道”)
Housing:房,有住房贷款吗?(分类:“不”,“是”,“不知道”)
Loan:贷款,有个人贷款吗?((分类:“不”,“是”,“不知道”)

预测相关的其他数据:
Contact:接触方式(分类:“移动电话”,“固定电话”)
Month:月,最后一个联系月份(分类:‘MAR’,…,‘NOV’,’DEC’)
Day_of_week:每周的天数,最后一周的联系日(分类):“Mon”、“Tee”、“We”、“TUU”、“FRI”
Duration:持续时间,最后的接触持续时间,以秒为单位
Campaign:在这次战役和这个客户联系的执行人数量
Pdays:客户上次从上次活动中联系过去之后的天数(数字;999表示以前没有联系过客户)
Previous:本次活动之前和本客户端的联系人数(数字)
Proutcome:前一次营销活动的结果(分类:失败,不存在,成功)

社会和经济背景属性
EMP.var.rate:就业变化率-季度指标(数字)
cons.price.idx:消费者价格指数-月度指标(数字)
cons.conf.idx:消费者信心指数-月度指标(数字)
euribor3m::欧元同业拆借利率3个月利率-每日指标(数字)
nr.employed:员工人数-季度指标(数字)

输出变量:
Y -客户是否会定期存款?“是”、“否”

数据预处理

  1. 删除用户ID
  2. 缺失值处理,观察数据可以得知,数值型变量没有缺失,非数值型变量可能存在unknown值。
    (1)删除 “unknown”
    (2)缺失值分析
    (3)采用随机森林对缺失值进行插补
    在这里插入图片描述
    可以看到部分数据中缺失值的情况还是比较严重的,直接删除会对预测结果有较大影响,采取效果较好的随机森林插补缺失值的方法。在数据量较大的情况下,插补时间较长。
 #随机森林插补缺失值
> library(missForest)
> data=missForest(mydata)missForest iteration 1 in progress...done!missForest iteration 2 in progress...done!missForest iteration 3 in progress...done!missForest iteration 4 in progress...done!
> intact=data$ximp
> md.pattern(intact)job marital education default housing loan contact month day_of_week duration campaign
[1,]   1       1         1       1       1    1       1     1           1        1        1
[2,]   0       0         0       0       0    0       0     0           0        0        0pdays previous poutcome emp.var.rate cons.price.idx cons.conf.idx euribor3m nr.employed y  
[1,]     1        1        1            1              1             1         1           1 1 0
[2,]     0        0        0            0              0             0         0           0 0 0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

描述性分析

连续性变量

年轻的客户更愿意购买银行的定期存款,
接触时间过长的客户反而不会购买,之前联络人数较多的也不会购买。

在这里插入图片描述可以看到相对于有贷款的客户,没有贷款的客户更愿意参加活动,可能是由于有贷款的客户自身没有能力去消费这样一种定期存款的产品。

老顾客继续购买的概率高很多,与其他理财产品相比,定期存款风险小,购买者多数不愿意承担其他理财产品高风险带来的高收益率,所以老顾客中风险偏好者更少,购买率会比较高。

单身者购买率较高,可能由于单身者在财务方面更为自由一些。

采用移动电话进行联系的效果更好,可能是由于移动电话更容易联系到客户。

在不同学历中,不识字者的购买率最高,其次是大学本科学历,可能由于不识字者对于其他投资方式了解较少

在不同的职业中,购买率最高依次为 学生,退休者以及行政管理
在这里插入图片描述

在这里插入图片描述在这里插入图片描述
社会环境
在这里插入图片描述

处理数据不平衡

首先,检查正负的不平衡度,数据集中只有11%的正样本,其余89%都属于负类数据的不平衡性较为严重。

> prop.table(table(intact$y))
   no       yes 

0.8873458 0.1126542

  • 1
  • 2
  • 3
  • 4

在分类模型中,数据不平衡问题会使得学习模型倾向于把样本分为多数类,但我们常常更关心少数类的预测情况。

为减弱数据不均衡问题带来的不利影响,在数据层面有两种较简单的方法:过抽样和欠抽样。

欠采样,通过随机从样本较多的数据类中采样得到一个较小的子集,将此子集和数据较少的类结合作为新的数据集。优点是在平衡数据的同时减小了数据量,加速训练,尤其是当样本集规模很大的时候。但是这也正是造成其缺点的主要原因,数据减少会影响模型的特征学习能力和泛化能力。

过抽样方法通过增加少数类样本来提高少数类的分类性能 ,最简单的办法是简单复制少数类样本。优点是相对于欠抽样的方法,过抽样没有导致数据信息损失,在实际操作中一般效果也好于欠抽样。但是由于对较少类别的复制,过抽样增加了过拟合的可能性。

这里使用人工数据合成法来对原始数据的正样本进行更好的估计。人工数据合成法(Synthetic Data Generation)也是一种过采样技术,是利用人工数据而不是重复原始观测来解决不平衡性。ROSE(Random Over Sampling Examples)包可以帮助我们基于采样和平滑自助法(smoothed bootstrap)来生成人工样本。

library(ROSE)
data.rose=ROSE(y~ ., data =intact, seed = 1)$data
table(data.rose$y)
str(data.rose)
> table(data.rose$y)

no yes
20633 20555

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

抽取训练集测试集,采用分层抽样,抽取70%的训练集和30%的测试集。

模型及评价

在这次案例分析中,分别采用了支持向量机与随机森林进行分类,并且通过混淆矩阵来对模型进行评价,可以看到两个模型的预测效果都非常好,但是随机森林更胜一筹。

总体来说,已经达到令人相当满意的准确率了。

模型训练集准确率测试集准确率Kappa系数
支持向量机0.97314110.96918820.9692
随机森林10.97491610.9479
## 支持向量机
s_mod=svm(y~ .,train)
s_predict=predict(s_mod,test)
s_train=predict(s_mod,train)
> sum(diag(table(train$y,s_train)))/length(s_train)
[1] 0.9731411
> sum(diag(table(test$y,s_predict)))/length(s_predict)
[1] 0.9691882
> confusionMatrix(data=s_predict,reference=test$y)
Confusion Matrix and Statistics
      Reference

Prediction 0 1
0 2476 5
1 151 2431

           Accuracy : 0.9692          95% CI : (0.9641, 0.9738)
No Information Rate : 0.5189          
P-Value [Acc &gt; NIR] : &lt; 2.2e-16       Kappa : 0.9384          

Mcnemar’s Test P-Value : < 2.2e-16

        Sensitivity : 0.9425          Specificity : 0.9979          Pos Pred Value : 0.9980          Neg Pred Value : 0.9415          Prevalence : 0.5189          Detection Rate : 0.4890          

Detection Prevalence : 0.4900
Balanced Accuracy : 0.9702

   'Positive' Class : 0               
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
##  随机森林分类
u_tree=randomForest(y~.,data=train,importance=TRUE,ntree=1000)
tt_predict=predict(u_tree,test)
tt_train=predict(u_tree,train)
> sum(diag(table(train$y,tt_train)))/length(tt_train)
[1] 1
> sum(diag(table(test$y,tt_predict)))/length(tt_predict)
[1] 0.9749161
> confusionMatrix(data=t_predict,reference=test$y)
Confusion Matrix and Statistics
      Reference

Prediction 0 1
0 2517 22
1 110 2414

           Accuracy : 0.9739          95% CI : (0.9692, 0.9781)
No Information Rate : 0.5189          
P-Value [Acc &gt; NIR] : &lt; 2.2e-16       Kappa : 0.9479          

Mcnemar’s Test P-Value : 3.665e-14

        Sensitivity : 0.9581          Specificity : 0.9910          Pos Pred Value : 0.9913          Neg Pred Value : 0.9564          Prevalence : 0.5189          Detection Rate : 0.4971          

Detection Prevalence : 0.5015
Balanced Accuracy : 0.9745

   'Positive' Class : 0               
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35

小结

可以从自变量的重要性程度了解到,社会环境整体对于销售的影响还是比较大的。
销售人员与客户接触相关因素也影响非常大,为了有一个好的销售效果,接触持续时间应该达到200h以上;同时,和客户的联系要选择固定的执行人,频繁更换人选客户购买率会下降。
其次就是老顾客率非常高,银行可以把更多精力放在老顾客的身上;而对于新客户,则可以着重关注年长退休人士。

> importance(u_tree)no        yes MeanDecreaseAccuracy MeanDecreaseGini
age             53.711350   8.978287            53.725930        373.24257
job             47.306396  35.411977            55.629825        368.86332
marital          9.291924  14.580736            17.553094         65.00866
education       22.979616  34.214832            40.700215        195.76237
default          0.000000   0.000000             0.000000          0.00000
housing          2.034791   8.999713             8.003469         35.02138
loan             3.963241  10.168745            10.259191         27.48620
contact         17.776201  30.642910            21.255039        106.75061
month          115.115649   9.044732           119.975682        818.66878
day_of_week     17.576547  27.451160            31.162160        194.83529
duration       379.240942 256.048129           389.136231       3784.04379
campaign         4.377285  64.684120            56.223016        386.30141
pdays          270.409581 125.766426           268.350699       3963.38617
previous        70.901029  40.610378            78.494658       1311.44458
poutcome        30.703517 -12.585281            29.563154        246.26971
emp.var.rate    56.851807   4.849061            59.580893        864.87450
cons.price.idx  81.356412 -38.014952            77.520281        478.51227
cons.conf.idx  102.206176 -37.005703            99.402561        655.01121
euribor3m       62.765737  24.612920            66.908571       1281.83690
nr.employed     79.374570   2.185290            84.120966       1314.70020
> 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

本次案例实战,整体效果较好,准确率也比较理想,同时机器学习的大部分流程也都用到了,但是相对来说,还是有一定的缺点,例如,没有对日期数据做更多处理,由于缺少年份数据,难以对日期进行进一步分析,这点可能会对结果产生负面影响。

完整代码

file.choose()
#读取文件位置
#此处需要注意,本数据的分割方法是通过“;”
install.packages("readr")
library(readr)
mydata=read.csv("F:\\新建文件夹 (6)\\新建文件夹\\bank-additional\\bank-additional-full.csv", head=T,sep=";",stringsAsFactors = T)
str(mydata)
head(mydata)
summary(mydata)
mydata[mydata=="unknown"] = NA 
library("mice")
md.pattern(mydata)
str(mydata)
head(mydata)
summary(mydata)
mydata=mydata[,-1]
##图形缺失值探索
library(VIM)
aggr(mydata,prop=FALSE,number=TRUE)
#随机森林插补缺失值
library(missForest)
data=missForest(mydata) 
intact=data$ximp
md.pattern(intact)
summary(intact)

#描述性分析
library(ggplot2)
library(gridExtra)
#连续变量
g1 =ggplot(intact, aes(x=age ,fill= y ))+geom_density(alpha = 0.5)
g2= ggplot(intact, aes(x= previous,fill= y ))+geom_density(alpha = 0.5)
g3 = ggplot(intact, aes(x=campaign ,fill= y ))+geom_density(alpha = 0.5)
g4 = ggplot(intact, aes(x= duration ,fill= y ))+geom_density(alpha = 0.5)
g5 = ggplot(intact, aes(x= pdays,fill= y ))+geom_density(alpha = 0.5)
grid.arrange(g1,g2,g3,g4,g5, ncol = 2, nrow = 3)
#离散变量
g6 = ggplot(intact, aes(x= poutcome,fill= y ))+geom_bar(alpha = 0.5,position = “fill”)
g7 = ggplot(intact, aes(x=marital,fill= y ))+geom_bar(alpha = 0.5,position = “fill”)
g8 = ggplot(intact, aes(x=education,fill= y ))+geom_bar(alpha = 0.5,position = “fill”)
g9 =ggplot(intact, aes(x=default,fill= y ))+geom_bar(alpha = 0.5,position = “fill”)
g10 = ggplot(intact, aes(x= housing,fill= y ))+geom_bar(alpha = 0.5,position = “fill”)
g11= ggplot(intact, aes(x=loan,fill= y ))+geom_bar(alpha = 0.55,position = “fill”)
g12 = ggplot(intact, aes(x= contact,fill= y ))+geom_bar(alpha = 0.5,position = “fill”)
g13 =ggplot(intact, aes(x=job ,fill= y ))+geom_bar(alpha = 0.5,position = “fill”)
grid.arrange(g6,g7,g8,g9,g10,g11,g12,g13,ncol = 3, nrow = 3)

##处理非平衡分类
table(intacty)prop.table(table(intacty) prop.table(table(intacty)prop.table(table(intacty))
#欠采样会损失信息,过采样容易导致过拟合
library(ROSE)
data.rose=ROSE(y~ ., data =intact, seed = 1)datatable(data.rosedata table(data.rosedatatable(data.rosey)
str(data.rose)
#载入分层抽样的包
library(sampling)
n=round(0.8*nrow(data.rose)/2)
sub_train=strata(data.rose,stratanames=(“y”),size=rep(n,2),method=“srswor”)
train=data.rose[sub_trainIDunit,]test=data.rose[−subtrainID_unit,] test=data.rose[-sub_trainIDunit,]test=data.rose[subtrainID_unit,]
str(train)
str(test)

library(“caret”)
library(“e1071”)
##支持向量机(SVM)分类
set.seed(0)
s_mod=svm(y~ .,train)
s_predict=predict(s_mod,test)
#分类效果
s_train=predict(s_mod,train)
sum(diag(table(trainy,strain)))/length(strain)sum(diag(table(testy,s_train)))/length(s_train) sum(diag(table(testy,strain)))/length(strain)sum(diag(table(testy,s_predict)))/length(s_predict)
confusionMatrix(data=s_predict,reference=test$y)

###随机森林
set.seed(123)
library(“randomForest”)
users_tree=randomForest(y~.,data=train,importance=TRUE,ntree=100)
t_predict=predict(users_tree,test)
t_train=predict(users_tree,train)
sum(diag(table(trainy,ttrain)))/length(ttrain)sum(diag(table(testy,t_train)))/length(t_train) sum(diag(table(testy,ttrain)))/length(ttrain)sum(diag(table(testy,t_predict)))/length(t_predict)
confusionMatrix(data=t_predict,reference=testKaTeX parse error: Expected 'EOF', got '#' at position 4: y) #̲改变数目 u_tree=ran…y,tt_train)))/length(tt_train)
sum(diag(table(testy,ttpredict)))/length(ttpredict)confusionMatrix(data=tpredict,reference=testy,tt_predict)))/length(tt_predict) confusionMatrix(data=t_predict,reference=testy,ttpredict)))/length(ttpredict)confusionMatrix(data=tpredict,reference=testy)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
                                </div><link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-e44c3c0e64.css" rel="stylesheet"></div>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/480238.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

论文浅尝 | 直译优于翻译?混合语言的知识库问答方法研究

动机作者思考&#xff0c;如果一个人懂多个语言&#xff0c;那么只要他知道某一语言的某个事实&#xff0c;就能以它作为另一语言问题的答案&#xff0c;同时希望证明计算机是否也能做到这一点&#xff0c;并完成混合语言的简单问题知识问答任务&#xff08;Code-Mix Simple Qu…

2018最新Java面试78题:数据结构+网络+NoSQL+分布式架构

算法和数据结构 数组、链表、二叉树、队列、栈的各种操作&#xff08;性能&#xff0c;场景&#xff09; 二分查找和各种变种的二分查找 各类排序算法以及复杂度分析&#xff08;快排、归并、堆&#xff09; 各类算法题&#xff08;手写&#xff09; 理解并可以分析时间和空…

工程实践:基于规则模式的军事和医药领域知识图谱问答快速实现

知识结构化问答是知识图谱的一个重要的应用方向&#xff0c;虽然现在许多真实的使用体验上&#xff0c;会被评价为“鸡肋且智障”&#xff0c;并且在落地上还没有太多的付费场景&#xff0c;但也不乏有不少学生、公司、机构在尝试花时间去做这个事情。当前&#xff0c;医疗知识…

图Graph--最小生成树

文章目录1.概念2.构造最小生成树Prim算法3.构造最小生成树Kruskal算法1.概念 对图运用不同的遍历方法就可能得到图的不同遍历顺序&#xff0c;每一种遍历顺序对应于一棵生成树对于无向连通图&#xff0c;所有的生成树中必有一棵树的所有边的权的总和最小的&#xff0c;称之为最…

Longformer:超越RoBERTa,为长文档而生的预训练模型

星标/置顶小屋&#xff0c;带你解锁最萌最前沿的NLP、搜索与推荐技术文 | ChrisCao, 小轶前言今天要与大家分享的是AllenAI今年发表的最新工作&#xff0c;Longformer——一种可高效处理长文本的升级版Transformer。作者团队提供了开源代码&#xff0c;大家可快速复现&#xff…

工程实践:基于规则句法的事件关系与主谓宾三元组抽取项目实现

目前&#xff0c;知识图谱在学术界如火如荼地进行&#xff0c;但受限于知识图谱各个环节中的性能问题&#xff0c;还尚未能够在工业界大规模运用。而与知识图谱中以实体为知识节点&#xff0c;实体关系为实体关系边对知识进行组织不同&#xff0c;以事件作为节点&#xff0c;事…

论文浅尝 | LightRNN:存储和计算高效的 RNN

链接&#xff1a;https://arxiv.org/pdf/1610.09893.pdf动机在NLP任务中使用RNN已经被证明是很有用的模型方法。但是传统的RNN在NLP中的应用有一个很大的限制&#xff1a;RNN的输出输入Embedding占用的空间太大&#xff0c;比如1024维10M词表大小的Embedding矩阵就要占掉40GB&a…

阿里最全Java面试100题汇总:涵盖天猫、蚂蚁金服等面试题!含答案~

【阿里天猫、蚂蚁、钉钉面试题目】 1、微信红包怎么实现。 2、海量数据分析。 3、测试职位问的线程安全和非线程安全。 4、HTTP2.0、thrift。 5、面试电话沟通可能先让自我介绍。 6、分布式事务一致性。 7、nio的底层实现。 8、jvm基础是必问的&#xff0c;jvm GC原理&a…

ACL2020 奇葩论文标题大赏

星标/置顶小屋&#xff0c;带你解锁最萌最前沿的NLP、搜索与推荐技术文 | 灵魂写手rumor酱编 | 不拖更的夕小瑶又是一年一度的ACL&#xff0c;之前通过卖萌屋Arxiv服务已经零零碎碎看了一些&#xff0c;还是准备刷一下论文list&#xff0c;看看哪篇能让我的模型效果一飞冲天。…

字符串匹配算法(BF RK)

文章目录1. BF&#xff08;Brute Force&#xff09;暴力匹配BF代码2. RK&#xff08;Rabin-Karp&#xff09;算法RK代码3. 思考题&#xff1a;&#xff08;二维匹配&#xff09;1. BF&#xff08;Brute Force&#xff09;暴力匹配 BF算法的思想&#xff0c;在主串中&#xff0…

用Python寻找最优投资组合

原文地址&#xff1a;https://www.jianshu.com/p/2a25dfd465e9 现代投资组合理论&#xff08;Modern Portfolio Theory&#xff0c;MPT&#xff09;告诉我们投资者应该分散投资来实现最小化风险最大化投资回报。大邓刚开始学习这方面知识&#xff0c;用了将近一天的时候才搞懂M…

技术动态 | 事理图谱,下一代知识图谱

本文转载自公众号&#xff1a;DataHorizon。 人工智能与认知智能当前人工智能时代下&#xff0c;机器与人类之间的博弈一直在进行着。如图1所示&#xff0c;从1926年达特茅斯会议的召开标志人工智能诞生到深度学习模型在…

头条Java后台3面(含答案):事务+List集合+慢查询SQL+Redis+秒杀设计

头条Java一面 1.讲讲jvm运行时数据库区 2.讲讲你知道的垃圾回收算法 3.jvm内存模型jmm 4.内存泄漏与内存溢出的区别 5. select、epoll 的区别&#xff1f;底层的数据结构是什么&#xff1f; 6.mysql数据库默认存储引擎&#xff0c;有什么优点 7.优化数据库的方法&#xf…

CNN卷积神经网络(吴恩达《卷积神经网络》笔记一)

CNN 卷积网络说明卷积 Convolution填充 Padding步长 StrideRGB图像卷积池化 Pooling完整CNN为什么人们喜欢用卷积神经网络&#xff1f;实例分析说明 关于CNN的基础知识&#xff1a;卷积、填充、步长、池化、完整的深度CNN网络可以参考 链接: AI学习笔记——卷积神经网络&#…

字符串匹配算法(BM)

文章目录1. BM&#xff08;Boyer-Moore&#xff09;算法1.1 坏字符规则1.2 好后缀规则1.3 两种规则如何选择2. BM算法代码实现2.1 坏字符2.2 好后缀2.3 完整代码2.4 调试3. 总结1. BM&#xff08;Boyer-Moore&#xff09;算法 思想&#xff1a;有模式串中不存在的字符&#xf…

SQL 数据分析常用语句

1 基础查询 • 2 字符串数字日期时间 • 3 聚合数据查询 • 4 子查询 • 5 联接组合查询 • 6 高级查询 • 7 更新数据 阅读提醒&#xff1a;点击图片放大可看清晰的 1 基础查询 2 字符串数字日期时间 3 聚合数据查询 4 子查询 5 联接组合查询 6 高级查询 7 更新数据 参考资料 …

开源词法分析工具LAC重大升级!打造属于自己的个性化分词器!

星标/置顶小屋&#xff0c;带你解锁最萌最前沿的NLP、搜索与推荐技术文 | 匿名大佬编 | 北大小才女小轶本文将为大家介绍如何使用百度开源的词法分析工具LAC实现个性化分词&#xff08;附代码&#xff09;&#xff0c;并展示LAC在各数据集上惊艳的性能表现。背景介绍分词是中文…

老刘说NLP:这几年的NLP历程回顾,以及关于NLP(知识图谱等)落地的思考

得语言者&#xff0c;得天下。得语言资源者&#xff0c;分天下。得语言逻辑者&#xff0c;争天下。 前言 只有把自己所思考的&#xff0c;所认识的东西&#xff0c;以文字的方式记录下来&#xff0c;才是对自己成长最好的记录方式。 是的&#xff0c;距离上一次动手写博客或者…

Redis系列教程(一):Redis缓存的设计、性能、应用与数据集群同步

Redis 是完全开源免费的&#xff0c;遵守BSD协议&#xff0c;是一个高性能的key-value数据库。Redis本质上是一个Key-Value类型的内存数据库&#xff0c;很像memcached&#xff0c;整个数据库统统加载在内存当中进行操作&#xff0c;定期通过异步操作把数据库数据flush到硬盘上…

论文浅尝 | 提取计数量词丰富知识库

OpenKG 祝各位读者新年快乐&#xff01;论文标题&#xff1a;Enriching Knowledge Bases with Counting Quantifiers论文链接&#xff1a;https://link.springer.com/content/pdf/10.1007%2F978-3-030-00671-6_11.pdf发表会议&#xff1a;ISWC 2018论文源码&#xff1a;https:/…