息和知识的过程。
python数据挖掘常用模块
numpy模块:用于矩阵运算、随机数的生成等
pandas模块:用于数据的读取、清洗、整理、运算、可视化等
matplotlib模块:专用于数据可视化,当然含有统计类的seaborn模块
statsmodels模块:用于构建统计模型,如线性回归、岭回归、逻辑回归、主成分分析等
scipy模块:专用于统计中的各种假设检验,如卡方检验、相关系数检验、正态性检验、t检验、F检验等
sklearn模块:专用于机器学习,包含了常规的数据挖掘算法,如决策树、森林树、提升树、贝叶斯、K近邻、SVM、GBDT、Kmeans等
数据分析和挖掘推荐的入门方式是?小公司如何利用数据分析和挖掘?
关于数据分析与挖掘的入门方式是先实现代码和Python语法的落地(前期也需要你了解一些统计学知识、数学知识等),这个过程需要
你多阅读相关的数据和查阅社区、论坛。然后你在代码落地的过程中一定会对算法中的参数或结果产生疑问,此时再去查看统计学和数据
挖掘方面的理论知识。这样就形成了问题为导向的学习方法,如果将入门顺序搞反了,可能在硬着头皮研究理论算法的过程中就打退堂鼓
了。
对于小公司来说,你得清楚的知道自己的痛点是什么,这些痛点是否能够体现在数据上,公司内部的交易数据、营销数据、仓储数据等是
否比较齐全。在这些数据的基础上搭建核心KPI作为每日或每周的经营健康度衡量,数据分析侧重于历史的描述,数据挖掘则侧重于未来
的预测。
差异在于对数据的敏感度和对数据的个性化理解。换句话说,就是懂分析的人能够从数据中看出破绽,解决问题,甚至用数据创造价值;
不懂分析的人,做不到这些,更多的是描述数据。
更多技术请关注python视频教程。
1 TensorFlow(贡献者:1757,贡献:25756,Stars:116765)
“TensorFlow 是一个使用数据流图进行数值计算的开源软件库。图形节点表示数学运算,而图形边缘表示在它们之间流动的多维数据阵列(张量)。这种灵活的体系结构使用户可以将计算部署到桌面、服务器或移动设备中的一个或多个 CPU/GPU,而无需重写代码。 ”
GitHub 地址:
https://github.com/tensorflow/tensorflow
2 pandas(贡献者:1360,贡献:18441,Stars :17388)
“pandas 是一个 Python 包,、供快速,灵活和富有表现力的数据结构,旨在让”关系“或”标记“数据使用既简单又直观。它的目标是成为用 Python 进行实际,真实数据分析的基础高级构建块。”
GitHub 地址:
https://github.com/pandas-dev/pandas
3 scikit-learn(贡献者:1218,贡献者:23509,Stars :32326)
“scikit-learn 是一个基于 NumPy,SciPy 和 matplotlib 的机器学习 Python 模块。它为数据挖掘和数据分析提供了简单而有效的工具。SKLearn 所有人都可用,并可在各种环境中重复使用。
GitHub 地址:
https://github.com/scikit-learn/scikit-learn
4 PyTorch(贡献者:861,贡献:15362,Stars:22763)
“PyTorch 是一个 Python 包,提供两个高级功能:
具有强大的 GPU 加速度的张量计算(如 NumPy)
基于磁带的自动编程系统构建的深度神经网络
你可以重复使用自己喜欢的 Python 软件包,如 NumPy,SciPy 和 Cython,以便在需要时扩展 PyTorch。”
GitHub 地址:
https://github.com/pytorch/pytorch
5 Matplotlib(贡献者:778,贡献:28094,Stars :8362)
“Matplotlib 是一个 Python 2D 绘图库,可以生成各种可用于出版品质的硬拷贝格式和跨平台交互式环境数据。Matplotlib 可用于 Python 脚本,Python 和 IPython shell(例如 MATLAB 或 Mathematica),Web 应用程序服务器和各种图形用户界面工具包。”
GitHub 地址:
https://github.com/matplotlib/matplotlib
6 Keras(贡献者:856,贡者:4936,Stars :36450)
“Keras 是一个高级神经网络 API,用 Python 编写,能够在 TensorFlow,CNTK 或 Theano 之上运行。它旨在实现快速实验,能够以最小的延迟把想法变成结果,这是进行研究的关键。”
GitHub 地址:
https://github.com/keras-team/keras
7 NumPy(贡献者:714,贡献:19399,Stars:9010)
“NumPy 是使用 Python 进行科学计算所需的基础包。它提供了强大的 N 维数组对象,复杂的(广播)功能,集成 C / C ++ 和 Fortran 代码的工具以及有用的线性代数,傅里叶变换和随机数功能。
GitHub 地址:
https://github.com/numpy/numpy
8 SciPy(贡献者:676,贡献:20180,Stars:5188)
“SciPy(发音为”Sigh Pie“)是数学、科学和工程方向的开源软件,包含统计、优化、集成、线性代数、傅立叶变换、信号和图像处理、ODE 求解器等模块。”
GitHub 地址:
https://github.com/scipy/scipy
9 Apache MXNet(贡献者:653,贡献:9060,Stars:15812)
“Apache MXNet(孵化)是一个深度学习框架,旨在提高效率和灵活性,让你可以混合符号和命令式编程,以最大限度地提高效率和生产力。 MXNet 的核心是一个动态依赖调度程序,可以动态地自动并行化符号和命令操作。”
GitHub 地址:
https://github.com/apache/incubator-mxnet
10 Theano(贡献者:333,贡献:28060,Stars :8614)
“Theano 是一个 Python 库,让你可以有效地定义、优化和评估涉及多维数组的数学表达式。它可以使用 GPU 并实现有效的符号区分。”
GitHub 地址:
https://github.com/Theano/Theano
11 Bokeh(贡献者:334,贡献:17395,Stars :8649)
“Bokeh 是一个用于 Python 的交互式可视化库,可以在现代 Web 浏览器中实现美观且有意义的数据视觉呈现。使用 Bokeh,你可以快速轻松地创建交互式图表、仪表板和数据应用程序。”
GitHub 地址:
https://github.com/bokeh/bokeh
12 XGBoost(贡献者:335,贡献:3557,Stars:14389)
“XGBoost 是一个优化的分布式梯度增强库,旨在变得高效、强大、灵活和便携。它在 Gradient Boosting 框架下实现机器学习算法。XGBoost 提供了梯度提升决策树(也称为 GBDT,GBM),可以快速准确地解决许多数据科学问题,可以在主要的分布式环境(Hadoop,SGE,MPI)上运行相同的代码,并可以解决数十亿个示例之外的问题。”
GitHub 地址:
https://github.com/dmlc/xgboost
13 Gensim(贡献者:301,贡献:3687,Stars :8295)
“Gensim 是一个用于主题建模、文档索引和大型语料库相似性检索的 Python 库,目标受众是自然语言处理(NLP)和信息检索(IR)社区。”
GitHub 地址:
https://github.com/RaRe-Technologies/gensim
14 Scrapy(贡献者:297,贡献:6808,Stars :30507)
“Scrapy 是一种快速的高级 Web 爬行和 Web 抓取框架,用于抓取网站并从其页面中提取结构化数据。它可用于从数据挖掘到监控和自动化测试的各种用途。”
GitHub 地址:
https://github.com/scrapy/scrapy
15 Caffe(贡献者:270,贡献:4152,Stars :26531)
“Caffe 是一个以表达、速度和模块化为基础的深度学习框架,由伯克利人工智能研究(BAIR)/ 伯克利视觉与学习中心(BVLC)和社区贡献者开发。”
GitHub 地址:
https://github.com/BVLC/caffe
以上就是2018年最受欢迎的15个库了,不知有没有你的菜喔!希望本文对所列出的库对你有所帮助!
preface:做着最近的任务,对数据处理,做些简单的提特征,用机器学习算法跑下程序得出结果,看看哪些特征的组合较好,这一系列流程必然要用到很多函数,故将自己常用函数记录上。应该说这些函数基本上都会用到,像是数据预处理,处理完了后特征提取、降维、训练预测、通过混淆矩阵看分类效果,得出报告。
1.输入
从数据集开始,提取特征转化为有标签的数据集,转为向量。拆分成训练集和测试集,这里不多讲,在上一篇博客中谈到用StratifiedKFold()函数即可。在训练集中有data和target开始。
2.处理
[python] view plain copy
def my_preprocessing(train_data):
from sklearn import preprocessing
X_normalized = preprocessing.normalize(train_data ,norm = "l2",axis=0)#使用l2范式,对特征列进行正则
return X_normalized
def my_feature_selection(data, target):
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import chi2
data_new = SelectKBest(chi2, k= 50).fit_transform(data,target)
return data_new
def my_PCA(data):#data without target, just train data, withou train target.
from sklearn import decomposition
pca_sklearn = decomposition.PCA()
pca_sklearn.fit(data)
main_var = pca_sklearn.explained_variance_
print sum(main_var)*0.9
import matplotlib.pyplot as plt
n = 15
plt.plot(main_var[:n])
plt.show()
def clf_train(data,target):
from sklearn import svm
#from sklearn.linear_model import LogisticRegression
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)
return clf
def my_confusion_matrix(y_true, y_pred):
from sklearn.metrics import confusion_matrix
labels = list(set(y_true))
conf_mat = confusion_matrix(y_true, y_pred, labels = labels)
print "confusion_matrix(left labels: y_true, up labels: y_pred):"
print "labels\t",
for i in range(len(labels)):
print labels[i],"\t",
for i in range(len(conf_mat)):
print i,"\t",
for j in range(len(conf_mat[i])):
print conf_mat[i][j],'\t',
def my_classification_report(y_true, y_pred):
from sklearn.metrics import classification_report
print "classification_report(left: labels):"
print classification_report(y_true, y_pred)
my_preprocess()函数:
主要使用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曲线的话,需要是对二分类才可以。多类别似乎不行。
主要参考sklearn官网