- 博客(35)
- 资源 (2)
- 收藏
- 关注
原创 机器学习实战案例:使用随机森林/XGBoost等模型进行分类预测,提高银行营销活动效率
1. 项目背景介绍在这篇文章中,我们将使用 Python 搭建逻辑回归(Logistic Regression),随机森林(Random Forest),XGBoosting,Bagging,KNN (K-Nearest Neighbors) ,神经网络(Neural Network)等6种机器学习/深度学习模型,对某个银行的营销活动数据集进行分类预测,尝试找出那些潜在客户。银行通常会打电话给一些潜在客户来销售一些存款/投资产品,这些投资产品会使银行获得更多利润以及资金的灵活性,因此银行希望能定位那些会
2021-12-29 23:33:55 8410 2
原创 R & Python 中XGBoosting用法、易错点、调参方法及重要参数介绍
由于网上关于XGBoosting的资料繁杂冗余,查阅使用起来较为不便,因此怀着“整理资料,以供备忘”的目的写下本文,部分为原创,部分为整理公开资料,并且会持续更新关于XGBoosting的介绍和原理就不赘述来重复造轮子了,网上有各种清晰易懂的教程,之后有时间我可能会整理一版,至于Boosting的地位可以简单总结,就是目前几乎各大机器学习比赛的天梯池就是Boosting和Deep learning互相打,很少别的模型了。XGBoosting用法、易错点、调参方法及参数介绍官方文档调参方法1. GridS
2020-08-20 11:23:17 3240
原创 为什么不推荐用R语言uniroot解一元二次方程,报错“位于极点边的f()值之正负号不相反”的原因及解决办法
问题描述如果需要同时解多个一元二次方程,如果在网上查的话99%的人会推荐使用R语言的unitroot函数,但实际上这个函数非常不适合满足这类需求,很容易报如下错误:Error in uniroot(f2, c(-10, 0), a = a, b = b, c = c, tol = 1e-04) :位于极点边的f()值之正负号不相反原因首先可以先看看uniroot是怎么解一元二次方程的:一元二次方程:ax^2+bx+c=0,设a=1,b=5,c=6,求x?f2 <- function
2020-07-15 13:33:19 6399
原创 R语言中package ‘xxxx’ is not available (for R version xxx)的解决办法
R语言中package ‘xxxx’ is not available 的解决办法问题描述解决办法问题描述在下载 library(ElemStatLearn)包时发现 R studio 会报错,显示 package ‘ElemStatLearn’ is not available (for R version 4.0.2),挂VPN或者换CRAN也一样报错。解决办法上述报错的大部分原因是网速无法打开这个包的url,所以在下载R包的时候,可以在后面添加上repos=‘https://mran.micr
2020-07-07 17:37:36 34275 21
原创 Python pandas numpy常用tips汇总
由于日常容易弄混Python,R和SQL的类似操作,加上Python有太多实现类似目的的函数,这篇文章就当是备忘汇总,会把Python pandas numpy sklearn等包的最简易常用操作记录下来Dataframe相关1. dataframe单独修改某一列/部分列的列名# 不会改变原 dfdf.rename(columns={'old_name1':'new_name1', 'old_name2':'new_name2'})# 会改变原 dfdf.rename(columns={'ol
2021-10-18 03:51:07 554
原创 Python VS Code报错ModuleNotFoundError: No module named ‘numpy‘以及No module named ‘xxx‘的原因及解决办法
ModuleNotFoundError的两种类型及解决方法No module named 'numpy'No module named 'xxx'No module named ‘numpy’有的时候我们想import 常用的包比如 numpy 或者 pandas,而且电脑上是有安装这些包并且在 Jupyter 中可以正常使用的,但在 VS Code 或者 Pycharm 中 import 却会出现如题的错误。发生这种报错的原因是 VS Code 所使用的解释器并不是已经安装的python3.8,而是
2021-03-09 15:34:56 15748 5
原创 R语言dplyr包filter函数 Error in filter(., ) : 找不到对象的报错原因和解决办法
报错描述当我们想使用dplyr包中的 filter 函数对指定的dataframe进行如下的行筛选时,R报错Error in filter(., ) : 找不到对象X.stage_id. ,提示我们没有这一列outside = outside %>% filter(X.stage_id. == 203)但事实上我们的dataframe肯定是有这一列的,那为什么报错呢,主要是因为我们同时加载了比较多的包,导致有至少两个包同时含有filter函数,于是R语言无法自动识别我们是想使用dplyr包的f
2020-09-15 14:29:05 14858 5
原创 SQL UNION、UNION ALL用法以及常见报错与解决方法
SQL UNION 操作符UNION 操作符用于合并两个或多个 SELECT 语句的结果集。请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。SQL UNION 语法SELECT column_name(s) FROM table_name1UNIONSELECT column_name(s) FROM table_name2注释:默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用
2020-08-06 16:59:24 15063
原创 R语言科学计数法数据改变/丢失/失准,取消科学计数法的原因和解决方法
问题描述如何在R中取消科学计数法 &对R中使用科学技术法表示的数据“取消科学计数法”以后,得到的值和原来的值会不一样。需求背景分析留存数据时,数据库底表的字段是一个30位/两百位的字符串,比如0011111100000000000001,第一个0表示最近一天该用户没登陆,第三位的1表示3天前该用户登陆了,以此类推底表的格式是字符串,但我下载格式是csv,csv自动把这个字段的格式改成数值型了(我也不知道为啥),所以我用R读取这个文件时,“0011111100000000000001“就变成
2020-07-28 20:36:07 4324
原创 R语言提取字符串的一部分substring函数
语法这个函数提取字符串的一部分。substring()函数的基本语法是:substring(x,first,last)x - 是字符向量输入。first - 是第一个字符要被提取的位置。last - 是最后一个字符要被提取的位置。示例# Extract characters from 5th to 7th position.substring("Extract", 5, 7)> [1] "act"...
2020-07-28 19:59:29 7798 1
原创 R语言在数据前面补0/补1的方法
备注专门新开一篇文章讲这个函数主要是因为,现在网上搜索结果比较靠前的教程/帖子已经不适用于目前的R语言环境了,语法完全不一样,所以直接copy的话会报错需求背景分析留存数据时,数据库底表的字段是一个30位/两百位的字符串,比如0011111100000000000001,第一个0表示最近一天该用户没登陆,第三位的1表示3天前该用户登陆了,以此类推底表的格式是字符串,但我下载格式是csv,csv自动把这个字段的格式改成数值型了(我也不知道为啥),所以我用R读取这个文件时,“00111111000000
2020-07-28 19:54:26 7472
转载 R语言中千分位分隔符数值(美式数值)读取
千分位分割数值对于英美数值数据,千分位分隔符(逗号分割)很常见,如下面一份房地产销售数据,land.squre.feet, gross.square.feet两列数据。R不能自动识别千分位分割数值虽然在Excel里面,千分位分隔符数值和普通数值没什么区别,也可以通知设置单元格格式进行转化,但是在R中却有大的区别,即千分位分隔符并不是数值,不能直接做数值计算。>mean(land.squre.feet)[1] NAWarning message:In mean.default(land
2020-07-28 18:35:48 2762
原创 R语言随机森林报错The response has five or fewer unique values. Are you sure you want to do regression原因及解决办法
问题描述在使用随机森林算法建模时,R报错/警告如下:The response has five or fewer unique values. Are you sure you want to do regression原因这个提示主要是因为用来拟合模型的y值,或者说类别class值,unique 数量少于5个,比如当你想预测一家公司会不会破产时,Y值就是“yes” or “no”,用数值表示就是 0 / 1,R认为你应该做分类而不是回归解决办法如果需求类似上述的预测破产例子的话,实际上可以
2020-07-23 18:15:51 8771 2
原创 R语言回归分析如何使用nls()拟合幂函数
x <- 1:20y <- 3x^2+ 30rnorm(20)plot(x,y)fit <- nls(y ~ a*x^b, start = list(a=2, b= 1.5))lines(seq(1, 20, by = 0.1), predict(fit, data.frame(x=seq(1, 20, by = 0.1))))fit以下为函数 output:Nonlinear regression modelmodel: y ~ a * x^bdata: paren
2020-07-23 18:11:28 10738 2
原创 R语言清除变量/清除所有变量/清理内存/清屏的方法,最后记得再用gc()
清除单个变量rm(object) #变量名清除所有变量rm(list = ls())注意,使用rm() 函数后虽然会删除变量,但只是从R的工作环境中删除了这些变量,并没有在你的电脑储存空间中完全删除这些变量,所以这些变量还是会占用电脑内存空间的你可以理解为rm() 类似把文件丢到了回收站,但没有从回收站永久删除他们如果想完全删除,需要再用一次 gc() 函数,并且gc() 函数会report目前的内存使用情况R 的官方文档里写着,gc() 这个函数 A call of gc causes
2020-07-23 17:45:52 59587 5
原创 R语言字符串转换为数值类型报错:强制改变过程中产生了NA的原因及解决办法
问题描述字符串转换为数值类型报错:强制改变过程中产生了NAa <- ‘1/3’as.numeric(as.character(a))[1] NAWarning message:强制改变过程中产生了NA但数值型转换为字符却可以b<-1/3class(b)[1] “numeric”c<-as.character(b)class©[1] “character”as.numeric(as.character(b))[1] 0.3333333d<-as.n
2020-07-21 18:24:39 38681 1
原创 R语言安装包报错Error in install.packages : 读取链结时发生了错误的原因和解决办法
问题描述在install.packages时报错如下:Error in install.packages : 读取链结时发生了错误原因这个问题主要是因为大陆用户在直接连接默认CRAN时由于网络问题无法正常连接,只需要把CRAN换到国内就行了解决办法这个问题只需要改一下CRAN就行,一般来说大陆的用户可以改到Beijing的清华CRAN,具体操作如下RStudio左上角点开“Tools” - “Global Options” - “Packages”,然后在框框右边的change那里下拉
2020-07-20 12:46:30 37860 12
原创 R语言glm logistic regression回归报错Warning messages: 1: glm.fit:算法没有聚合 2: glm.fit:拟合機率算出来是数值零或一的原因及解决方法
问题描述在用R语言的glm函数做logistic回归时主要有以下两种报错:Warning: glm.fit: algorithm did not convergeWarning: glm.fit: fitted probabilities numerically 0 or 1 occurredWarning messages:1: glm.fit:演算法沒有聚合2: glm.fit:拟合概率算出來是数值零或一glm.fit:演算法沒有聚合对于第一个警告1: glm.fit:演算法沒有
2020-07-18 09:29:50 24628 1
原创 R语言Error in terms.formula(newformula, specials = names(attr(termobj, “specials“)))的原因及解决办法
问题描述在做回归分析时,R语言报错如下Error in terms.formula(newformula, specials = names(attr(termobj, “specials”))) :ExtractVars里的模型公式不对bug原因出现这个问题的最主要原因是,做回归分析的变量名总长度太长了/变量名里面特殊符号如括号或者 ‘.’ 太多了解决办法把变量名改短即可,再不行的话把括号和句点也去掉楼主最开始报错的原始数据变量名称如下:改成下面这样以后就ok了colnames(
2020-07-18 00:01:19 6702
原创 R语言LDA模型报错Error in partimat.default(x, grouping, ...) : at least two classes required的原因及解决方法
问题描述在使用LDA/QDA模型做预测后,使用partimat 函数做LDA的决策边界可视化,结果报错如下Error in partimat.default(x, grouping, …) :at least two classes required原因在调用命令 partimat( formula(lda.fit), data = tmp, method=“lda”, plot.matrix =TRUE) 时,data 这个argument 需要我们输入 factor 类型的class/gr
2020-07-18 00:00:15 4322
原创 R语言回归分析时报错/警告“用秩缺乏拟合来进行预测的结果很可能不可靠”的原因及解决办法
问题描述在做回归分析时,拟合出的模型警告如下用秩缺乏拟合来进行预测的结果很可能不可靠原因 & 解决方法存在强相关的自变量,也就是X矩阵是 “非满秩”的。这时可以去掉这些强相关的自变量再做回归。如果是使用glm模型时有这种警告,也可能是 “target 完全线性可分”导致的。这时直接用简单线性回归就可以了,如果一定想使用glm的话,可以通过去掉使得target完全线性可分的变量,然后再用glm...
2020-07-17 23:59:02 5158 1
原创 R语言生成频数表和列联表crosstable函数讲解
列联表crosstable列联表不仅可以用来做简单的描述性统计,还可以在机器学习中用来比较识别正确率,FPR,TPR等等数据,以便我们比较不同的ML模型 or 调参。2x2列联表一般长下面这样:Total Observations in Table: 143 | test_cancer$diagnosis lda.class | 0 | 1 | Row Total | -------------|-----------|--
2020-07-15 14:00:45 11291 1
原创 对称矩阵标准化以后不是对称矩阵的原因和解决办法
问题描述在处理数据时需要对一个对称矩阵做标准化,相当于把矩阵的所有数看成一个整体,但使用R语言的scale函数得出的结果是不对称矩阵原因平时处理数据时,最常见的格式是每一列代表一个维度,每一行代表一个观测值/个体,比如每一行代表一名同学,第一列表示年龄,第二列表示身高因此在做标准化时,我们需要的是按列来做标准化,否则得出来的数据就没有意义了,所以R语言的scale函数是默认按列scale的解决办法首先明确需求,看自己是需要按列还是按行标准化,然后再设定参数如果是需要和楼主一样对整个矩阵进行标
2020-07-15 11:52:11 1766
原创 R语言dataframe/matrix计算报错Error in FUN(left, right) : 二进列运算符中有非数值参数的原因和解决方法
问题描述在对dataframe中进行批量计算或者转换成matrix矩阵计算时报错如下:Error in FUN(left, right) : 二进列运算符中有非数值参数报错原因在进行数值运算时,涉及的字段数据格式不全是numeric数值型的数据解决办法用str() 检查一下用来运算的字段的数据格式,然后使用 as.numeric() / as.matrix() 转化数据格式后再计算...
2020-07-15 11:41:06 18264
原创 R语言read.csv/read.table读取csv文件/txt文件报错 incomplete final line found by readTableHeader on ...原因及解决办法
问题描述使用R语言读取csv文件或者txt文件时报错:In read.table(file = file, header = header, sep = sep, quote = quote, :incomplete final line found by readTableHeader on …报错原因所读取文件的最后一行缺少一个换行符,导致R语言无法识别最后一行解决办法打开想读取的csv文件/txt文件,直接拉到文件最后一行,按Enter,让光标进入下一行,保存即可。...
2020-07-13 10:11:11 15281 2
原创 R语言sample随机抽样setseed固定随机数/真随机的原因和方法
为什么要固定随机数如果不加set.seed(1),一样可以生成随机数,但是每次执行的结果都会不同,这就会出现一个问题,比如某学者对某问题进行研究,如果每次都是用随机数据不固定随机数的话,就会导致前后数据的不一致,而且也无法让后来人验证的前人工作的正确与否。其次,R studio knit 导出html/PDF/word时其实还会重新跑一遍代码,所以如果有用到随机数或者一些有随机过程的机器学习的算法/函数时,你会发现自己在 R studio里跑的结果和导出的html上的结果不一样,这时就不方便把结果 pr
2020-07-10 18:06:34 9298
原创 R语言&SQL&Java 处理/读取带有JSON数据字段的csv文件& JSON文件的方法总结
读取JSON文件(后缀为.json)这个相对比较简单,R或者Java都可以轻松处理,下两个json相关的包就可以了install.packages("rjson")install.packages("jsonlite")library(rjson)library(jsonlite)data = jsonlite::stream_in(file("jsondatafile1.json"),pagesize = 100)str(data)head(data)读取带有JSON数据/字段的cs
2020-07-09 18:57:25 2760
原创 R语言数据分析常用函数/注意事项/易错点/bug汇总
常用操作NA/NaN/NULL/Inf 等空值相关常用操作NA/NaN/NULL/Inf 等空值相关定义NA:缺失数据NaN:无意义的数,比如sqrt(-2), 0/0。Inf:正无穷大-Inf:负无穷大NULL:不存在假设 df 是dataframe 的名称,一共有x,y,z三列检测空值is.na(df)is.na(df$x)去除空值df = na.omit(df)或者在一些函数中也可以使用 na.rm=T 来去除产生的空值替换空值df[is.na(df) = 0.
2020-07-09 17:34:05 659
原创 SQL常用函数/常用操作符/注意事项/易错点/bug汇总
SQL常用函数汇总常用函数/方法随机抽样方法一:rand()方法二:newid()常用操作符IN常用函数/方法随机抽样方法一:rand()首先,SQL的 rand() 函数可以返回一个 0 到 1 范围内的随机数,我们可以用这个函数实现随机抽样的功能如果我们需要从库表 table_a 中随机抽取100万条数据出来,那么这时候就需要用到 order by,因为 order by 是根据某一个字段值来统一排序,那么如果我们把 order by 的字段换成随机函数,会直接让结果集随机排序,最后我们再加上
2020-07-09 17:23:43 391
原创 R语言删除/替换字符串中的标点符号/字母/数据的方法
使用函数gsubbase包中的 gsub() 可以替换/删除字符串中的各种标点符号/字母/数据# 删除字符串a中的双引号gsub('["]', '', string_a)# 删除字符串a中的下划线_gsub('[_]', '', string_a)# 把字符串a中的数字1换成中文一gsub('[1]', '一', string_a)# 把字符串a中的字母a换成字母Agsub('[a]', 'A', string_a)substring这个函数可以提取字符串的一部分subs
2020-07-09 17:07:36 51366 2
原创 R语言dplyr包警告/报错`summarise()` ungrouping output (override with `.groups` argument)的原因和解决办法
问题描述在使用dplyr包中的 summarize 配合 group_by 函数做数据处理的时候,有时候会遇到这样两个警告/报错:`summarise()` ungrouping output (override with `.groups` argument)`summarise()` regrouping output by ‘homeworld’ (override with `.groups` argument)原因楼主翻阅了百度以及谷歌上的各大论坛/问答,都没有发现解释意义/原因,可
2020-07-09 16:31:01 4435
原创 leftjoin/innerjoin以后数据条数比原数据表多的原因及解决办法
举例A 表(1500行)是用户id和对应年龄,B 表(5000行)是用户id 和对应的爱好(如果有多个爱好就会出现多行数据),现在想通过用户id来链接这两张表,使用 left join(A,B)或者 inner join结果连完发现生成了一张 3000行的表C(但理论上行数应该小于等于表 A)问题原因在 R 中发生这种问题,很大原因是两张表拿来连接的字段(比如用户id),在第二张表里面出现了多次,或者在第一张表里也有重复只在 SQL 中发生这种问题,还有一种可能性是因为表 B 行数比表 A 多,所
2020-07-09 15:54:43 25055 3
原创 R语言character字符串转化成numeric数值型报错“强制改变过程中产生了NA”解决方法
问题描述导入数据的时候,数据原本的格式是类似“888”的character字符串格式,希望转变成numeric数值型的格式方便计算,使用as.numeric() 时报错如下:header$event = as.numeric(header$event)强制改变过程中产生了NA解决方法报错的原因主要是因为原始数据中含有除了数字以外的字符,比如双引号(文本格式经常容易自带)或者逗号(科学计数法情况下容易自带),所以去掉这些符号即可,使用 gsub 函数# 去除name列里面的引号name_cl
2020-07-08 18:33:34 26717 1
原创 R语言模糊匹配/字符查找/字符处理/相关报错的解决办法
需求描述为了更方便的进行模糊匹配或者生成标签的工作,经常需要判断“长字符串中是否含有特定的短字符串”,或者查找“长字符串中含有特定的短字符串”的位置,或者判断/查找一连串字符串中是否含有特定的短字符串。相关函数%in%很好用的一个指令,但因为它会把每个字符串当成判断的最小单位,所以不能用来判断/查找“长字符串中是否含有特定的短字符串”实例“换装游戏” %in% “其他,换装游戏,二次元卡牌”[1] FALSE“换装游戏” %in% c(“其他”,“换装游戏”,“二次元卡牌”)[1] TR
2020-07-07 18:52:14 22318
原创 R语言读取csv文件报错Error in type.convert.default的解决办法
R语言读取csv文件报错Error in type.convert.default的解决办法问题描述解决办法注意事项问题描述在导入一个编码格式为“UTF-8”的csv文件时,R studio报错如下> group = read.csv("0707.csv", header=T, stringsAsFactors = FALSE, encoding='UTF-8')报错:Error in type.convert.default(data[[i]], as.is = as.is[i], dec
2020-07-07 17:54:05 57198 7
hadoop lib/native.zip
2020-07-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人