㈠ GBDT 如何实现特征组合提取
以python调用sklearn为例,在你建立GBDT对象并作fit之后,可以使用如下代码获得你要的规则代码:
dot_data = tree.export_graphviz(model_tree, out_file=None,
max_depth=5, feature_names=names_list, filled=True, rounded=True) # 将决策树规则生成dot对象
其中tree就是你的数对象,如果你的out_file后面是一个文件名,那么你的规则会输出到文件中;如果是None(就像上面代码),那么值会保存在dot_data中。
无论哪种方法,你都能获得规则文本。然后剩下的就是普通的文本解析的事情了。
在决策树算法对象的tree_属性中,存储了所有有关决策树规则的信息(示例中的决策树规则存储在model_tree.tree_中)。最主要的几个属性:
children_left:子级左侧分类节点
children_right:子级右侧分类节点
feature:子节点上用来做分裂的特征
threshold:子节点上对应特征的分裂阀值
values:子节点中包含正例和负例的样本数量
上述属性配合节点ID、节点层级便迭代能得到如下的规则信息:
1 [label="rfm_score <= 7.8375
gini = 0.1135
samples =
14581
value = [13700, 881]", fillcolor="#e58139ef"] ;
其中规则开始的1代表节点ID,rfm_score是变量名称,rfm_score
<= 7.8375是分裂阀值,gini = 0.1135是在当前规则下的基尼指数,nsamples是当前节点下的总样本量,nvalue为正例和负例的样本数量。
来源:知乎
㈡ 大数据开发工程师需要具备哪些技能
可以根据招聘要求学习:
1、
o展示构建大数据解决方案的经验。Hadoop生态圈体验:Hadoop、Spark、MapRece、Hive/Pig、Yarn、HBase等
o有使用RDBMS和NoSQL栈的经验(ElasticSearch, HBase, Cassandra)
o具备良好的Python统计和科学编程能力
o有数据可视化工具使用经验:Hue, Kibana, Qlikview, Tableau优先
对数据科学概念有良好的理解,并强调机器学习技术的优先考虑
o能够独立解决问题,积极主动,自我指导
o敏捷/Scrum开发方法经验
o软件测试知识,包括黑盒测试和白盒测试方法,以及功能测试和非功能测试
2、熟练Java/Scala/Python/go等一种或多种编程语言
熟练SparkStructuredStreaming和Flink等流计算引擎,有实际项目经验者优先
熟悉kafka,hadoop,zk,HBase,elasticsearch,clickhouse,Druid等大数据技术,有实际项目经验者优先
了解并行计算或者分布式计算原理,了解数据仓库相关知识优先
了解常见的机器学习算法,了解CNN/RNN/LSTM/GBDT等算法者优先
㈢ python gbdt测试集误差竟然逐渐上升是怎么回事
是否是因为过拟合了?
随着训练集误差的下降,测试集误差一般应该是先下降后上升的。
㈣ python sklearn 怎么根据gbdt apply函数 和原来特征加起来
跟版本没关系。函数需要的传参类型不一致。明显已经说需要 字符串 和数字类型的参数了。而不是 一个字符串 和数字类型的 zip包
㈤ 如何给python加载科学计算库
1.安装
安装Python2.7:hownloads/release/python-2712/根据电脑配置选择合适版本下载安装。
安装过python之后,Python27Scripts有pip.exe,在Python27Scripts文件夹下运行cmd(点击Shift+右键),可以用pip安装其他包。
1. 安装科学计算库
pip installjupyter
pip installpandas
pip installnumpy
pip installmatplotlib
pip installseaborn
pip installscikit-learn
2. 用上述方式安装scipy不成功,可以这样:在ci.e/~gohlke/pythonlibs/下载合适的whl包,pip install <拖入下载到的scipy包>。安装后import scipy若提示缺少numpy+MKL,可以pip uninstall numpy,再下载numpy+MKL的whl包,pip install *.whl。
检测安装是否成功,打开Python的shell,输入:
import matplotlib
import numpy
import scipy等,若不报错,就安装成功。
比如生成一个y=x的直线:
import matplotlib.pyplot as plt
plt.plot([1,2,3])
plt.ylabel('some numbers')
plt.show()1234
上述是我采用的安装方式,过程比较顺利,除了pip,还有其他的方式哈:
1. 用easy_install安装,但是这种方法卸载不方便,不推荐。
2. 用anaconda的conda命令,好像也很常用,因为conda会安装或者更新一些依赖库,但是pip未必。有兴趣的可以试试。
2. 科学计算库的使用
综合:
1.遇到Numpy陌生函数,查询用法
2.pandas教程及API
pandas读取csv文件,提供了大量能使我们快速便捷地处理数据的函数和方法。
3.Matplotlib Tutorial(译)
是python最着名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地进行制图。
数据可视化:
1.Seaborn tutorial
Seaborn模块自带许多定制的主题和高级的接口,来控制matplotlib图表的外观。
机器算法:
1.scikit-learn
scikit-learn的基本功能主要被分为六个部分,分类,回归,聚类,数据降维,模型选择,数据预处理,机器学习模型非常丰富,包括SVM,决策树,GBDT,KNN等等,可以根据问题的类型选择合适的模型,具体可以参考官方网站上的文档。
㈥ python gradientboostingregressor可以做预测吗
可以
最近项目中涉及基于Gradient Boosting Regression 算法拟合时间序列曲线的内容,利用python机器学习包scikit-learn 中的GradientBoostingRegressor完成
因此就学习了下Gradient Boosting算法,在这里分享下我的理解
Boosting 算法简介
Boosting算法,我理解的就是两个思想:
1)“三个臭皮匠顶个诸葛亮”,一堆弱分类器的组合就可以成为一个强分类器;
2)“知错能改,善莫大焉”,不断地在错误中学习,迭代来降低犯错概率
当然,要理解好Boosting的思想,首先还是从弱学习算法和强学习算法来引入:
1)强学习算法:存在一个多项式时间的学习算法以识别一组概念,且识别的正确率很高;
2)弱学习算法:识别一组概念的正确率仅比随机猜测略好;
Kearns & Valiant证明了弱学习算法与强学习算法的等价问题,如果两者等价,只需找到一个比随机猜测略好的学习算法,就可以将其提升为强学习算法。
那么是怎么实现“知错就改”的呢?
Boosting算法,通过一系列的迭代来优化分类结果,每迭代一次引入一个弱分类器,来克服现在已经存在的弱分类器组合的shortcomings
在Adaboost算法中,这个shortcomings的表征就是权值高的样本点
而在Gradient Boosting算法中,这个shortcomings的表征就是梯度
无论是Adaboost还是Gradient Boosting,都是通过这个shortcomings来告诉学习器怎么去提升模型,也就是“Boosting”这个名字的由来吧
Adaboost算法
Adaboost是由Freund 和 Schapire在1997年提出的,在整个训练集上维护一个分布权值向量W,用赋予权重的训练集通过弱分类算法产生分类假设(基学习器)y(x),然后计算错误率,用得到的错误率去更新分布权值向量w,对错误分类的样本分配更大的权值,正确分类的样本赋予更小的权值。每次更新后用相同的弱分类算法产生新的分类假设,这些分类假设的序列构成多分类器。对这些多分类器用加权的方法进行联合,最后得到决策结果。
其结构如下图所示:
可以发现,如果要用Gradient Boosting 算法的话,在sklearn包里调用还是非常方便的,几行代码即可完成,大部分的工作应该是在特征提取上。
感觉目前做数据挖掘的工作,特征设计是最重要的,据说现在kaggle竞赛基本是GBDT的天下,优劣其实还是特征上,感觉做项目也是,不断的在研究数据中培养对数据的敏感度。
㈦ python数据挖掘是什么
数据挖掘(data mining,简称DM),是指从大量的数据中,通过统计学、人工智能、机器学习等方法,挖掘出未知的、且有价值的信
息和知识的过程。
python数据挖掘常用模块
numpy模块:用于矩阵运算、随机数的生成等
pandas模块:用于数据的读取、清洗、整理、运算、可视化等
matplotlib模块:专用于数据可视化,当然含有统计类的seaborn模块
statsmodels模块:用于构建统计模型,如线性回归、岭回归、逻辑回归、主成分分析等
scipy模块:专用于统计中的各种假设检验,如卡方检验、相关系数检验、正态性检验、t检验、F检验等
sklearn模块:专用于机器学习,包含了常规的数据挖掘算法,如决策树、森林树、提升树、贝叶斯、K近邻、SVM、GBDT、Kmeans等
数据分析和挖掘推荐的入门方式是?小公司如何利用数据分析和挖掘?
关于数据分析与挖掘的入门方式是先实现代码和Python语法的落地(前期也需要你了解一些统计学知识、数学知识等),这个过程需要
你多阅读相关的数据和查阅社区、论坛。然后你在代码落地的过程中一定会对算法中的参数或结果产生疑问,此时再去查看统计学和数据
挖掘方面的理论知识。这样就形成了问题为导向的学习方法,如果将入门顺序搞反了,可能在硬着头皮研究理论算法的过程中就打退堂鼓
了。
对于小公司来说,你得清楚的知道自己的痛点是什么,这些痛点是否能够体现在数据上,公司内部的交易数据、营销数据、仓储数据等是
否比较齐全。在这些数据的基础上搭建核心KPI作为每日或每周的经营健康度衡量,数据分析侧重于历史的描述,数据挖掘则侧重于未来
的预测。
差异在于对数据的敏感度和对数据的个性化理解。换句话说,就是懂分析的人能够从数据中看出破绽,解决问题,甚至用数据创造价值;
不懂分析的人,做不到这些,更多的是描述数据。
更多技术请关注python视频教程。
㈧ python3.5做分类时,混淆矩阵加在哪一步
preface:做着最近的任务,对数据处理,做些简单的提特征,用机器学习算法跑下程序得出结果,看看哪些特征的组合较好,这一系列流程必然要用到很多函数,故将自己常用函数记录上。应该说这些函数基本上都会用到,像是数据预处理,处理完了后特征提取、降维、训练预测、通过混淆矩阵看分类效果,得出报告。
1.输入
从数据集开始,提取特征转化为有标签的数据集,转为向量。拆分成训练集和测试集,这里不多讲,在上一篇博客中谈到用StratifiedKFold()函数即可。在训练集中有data和target开始。
2.处理
[python]view plain
defmy_preprocessing(train_data):
X_normalized=preprocessing.normalize(train_data,norm="l2",axis=0)#使用l2范式,对特征列进行正则
returnX_normalized
defmy_feature_selection(data,target):
fromsklearn.feature_selectionimportSelectKBest
fromsklearn.feature_selectionimportchi2
data_new=SelectKBest(chi2,k=50).fit_transform(data,target)
returndata_new
defmy_PCA(data):#datawithouttarget,justtraindata,withoutraintarget.
pca_sklearn=decomposition.PCA()
pca_sklearn.fit(data)
main_var=pca_sklearn.explained_variance_
printsum(main_var)*0.9
importmatplotlib.pyplotasplt
n=15
plt.plot(main_var[:n])
plt.show()
defclf_train(data,target):
fromsklearnimportsvm
#fromsklearn.linear_modelimportLogisticRegression
clf=svm.SVC(C=100,kernel="rbf",gamma=0.001)
clf.fit(data,target)
#clf_LR=LogisticRegression()
#clf_LR.fit(x_train,y_train)
#y_pred_LR=clf_LR.predict(x_test)
returnclf
defmy_confusion_matrix(y_true,y_pred):
fromsklearn.metricsimportconfusion_matrix
labels=list(set(y_true))
conf_mat=confusion_matrix(y_true,y_pred,labels=labels)
print"confusion_matrix(leftlabels:y_true,uplabels:y_pred):"
print"labels ",
foriinrange(len(labels)):
printlabels[i]," ",
foriinrange(len(conf_mat)):
printi," ",
forjinrange(len(conf_mat[i])):
printconf_mat[i][j],' ',
defmy_classification_report(y_true,y_pred):
fromsklearn.metricsimportclassification_report
print"classification_report(left:labels):"
printclassification_report(y_true,y_pred)
主要使用sklearn的preprocessing函数中的normalize()函数,默认参数为l2范式,对特征列进行正则处理。即每一个样例,处理标签,每行的平方和为1.
my_feature_selection()函数:
使用sklearn的feature_selection函数中SelectKBest()函数和chi2()函数,若是用词袋提取了很多维的稀疏特征,有必要使用卡方选取前k个有效的特征。
my_PCA()函数:
主要用来观察前多少个特征是主要特征,并且画图。看看前多少个特征占据主要部分。
clf_train()函数:
可用多种机器学习算法,如SVM, LR, RF, GBDT等等很多,其中像SVM需要调参数的,有专门调试参数的函数如StratifiedKFold()(见前几篇博客)。以达到最优。
my_confusion_matrix()函数:
主要是针对预测出来的结果,和原来的结果对比,算出混淆矩阵,不必自己计算。其对每个类别的混淆矩阵都计算出来了,并且labels参数默认是排序了的。
my_classification_report()函数:
主要通过sklearn.metrics函数中的classification_report()函数,针对每个类别给出详细的准确率、召回率和F-值这三个参数和宏平均值,用来评价算法好坏。另外ROC曲线的话,需要是对二分类才可以。多类别似乎不行。
㈨ 初学matlab中的图像处理,求大虾们推荐几本教程
//================================//分割线//================================//
2012.12.12(上海,***,周三 )
冈萨雷斯的数字图像处理(有课本和MATLAB两个版本,建议两本都买,我当初是看完课本再看MATLAB版本,MATLAB边看边上机实验,这样会带来乐趣,其实怎么说有人说两本一块看,看个人习惯了,我课本后来又看了一遍,但还是有很多地方看不懂,小波真心看不懂,还有就是如果不做编码这一块的话,第8章的图像压缩可以不看,个人认为分割和形态学两章重要,特别是分割这章),看完冈萨大牛的书然后就可以学习OPENCV(必学,这个好比你在战场上的机关枪,图像开发利器,个人看法是买老外写的翻译过来的那本,上面图中红色的那本,刘瑞祯写的本人看不习惯)C(++)语言要学好。论文要多看,跟导师有项目就做项目,进入课题,还有就是实习经验,实习项目经验,当然是做开发了,打酱油的不算,这个对找工作非常重要,还有就是小论文研二下学期差不多要投出去,到时候找工作了一堆的事在一块,没心思弄,那时候还有大论文,还有一本《图像处理、分析与机器视觉》的书很好,上面黑色的,这到后面慢慢看,加油啊。
//================================//分割线//================================//
2016.11.21(上海,阴,周一)
转眼这回答都过去四年了,上班也快四年了,依然在做图像开发,机器学习,看到又有同学点赞,所以就想再写写,写得不好多多包涵,写点工作后得到的一点个人愚见:
1、OPENCV一定要熟练,C,C++一样要熟练,MATLAB不会用没关系,工作上一般不用。
2、人工智能很火,现在大家都搞深度学习,本人还没怎么接触,是个方向,我还在搞传统的监督学习,SVM,随机森林,GBDT(传统算法GBDT在大部分数据都是最佳性能,网上大家都这么说)等等。机器学习一定要会搞,算法写不来,但一定要会用。
3、特征工程,样本工程一样重要,提取特征的算法什么HOG,LBP,GABOR,SURF等等,都是成熟的经典算法,网上资料很多。
4、反正就是多看吧,互联网方便,不懂就搜着看。
//================================//分割线//================================//
暂时就想到这些,断续上班赚首付。
//================================//分割线//================================//
2019.08.26(上海,阴,周一)
一转眼这回答又快过去三年,上班也六年半,依然在做图像开发,深度学习,这三年学到很多,认识很多,所以就想再写写,写得不好多多包涵,这三年的主要体会:
1、深度学习啊,现在没有比这个更时髦的了,caffe做图像最普遍,不过现在pytorch慢慢好像要胜出,github上最新的资源多是pytorch。
2、python啊,不必多说。
3、做为一个毕业有些年的人,这些东西都是上班后学的,没办法,不学跟不上时代——学无止境,活到老学到老!
4、我现在主要做目标检测,从早期的faster rcnn,yolov1,v3到现在的centernet,真是技术更新换代的速度比年龄增长的速度还快!三十多了,马上有35岁的年龄危机,路在何方,犹未知!
//================================//分割线//================================//
对了,提醒一句,努力重要,选择更重要,能买房早买房,我这些年最大的失败就在于买房太晚!