1、首先简述数据挖掘的过程

第一步:数据选择

可以通过业务原始数据、公开的数据集、也可通过爬虫的方式获取。

第二步: 数据预处理

数据极可能有噪音,不完整等缺陷,需要对数据进行数据标准化,方法有min-max 标准化, z-score 标准化,修正的标准z-score。

第三步:特征值数据转换

将数据提取特征使这些数据符合特定数据挖掘算法的分析模型。数据模型有很多,等下详细讲解。

第四步:模型训练

选择好的数据挖掘算法对数据进行训练

第五步:测试模型+效果评估

有两种主流方法:

十折交叉验证:将数据集随机分割成十个等份,每次用9份数据做训练集,1份数据做测试集,如此迭代10次。十折交叉验证的关键在于较平均地分为10份。

N折交叉验证又称为留一法:用几乎所有的数据进行训练,然后留一个数据进行测试,并迭代每一数据测试。留一法的优点是:确定性。

第六步:模型使用

使用训练好的模型对数据进行预测。

第七步:解释与评价

对数据挖掘后的信息加以分析解释,并应用于实际的工作领域。

2、主要的算法模型讲解 ——基于sklearn

1)线性回归:希望所有点都落在直线上,所有点离直线的距离最近。首先假设好y=ax+b中a和b的值,然后计算每个数据点到这条直线上的距离总和,目的是要使这个总和最小!

from sklearn.linear_model import LinearRegression
# 定义线性回归模型
model = LinearRegression(fit_intercept=True, normalize=False, copy_X=True, n_jobs=1)
"""
参数
---fit_intercept:是否计算截距。False-模型没有截距normalize: 当fit_intercept设置为False时,该参数将被忽略。 如果为真,则回归前的回归系数X将通过减去平均值并除以l2-范数而归一化。n_jobs:指定线程数
"""

2)逻辑回归:二分算法,用于两分类问题。需要预测函数的“大概形式”, 比如是线性还是非线性的。

上面有提到,该数据集需要一个线性的边界。 不同数据需要不同的边界。

from sklearn.linear_model import LogisticRegression
# 定义逻辑回归模型
model = LogisticRegression(penalty=’l2’, dual=False, tol=0.0001, C=1.0, fit_intercept=True, intercept_scaling=1, class_weight=None, random_state=None, solver=’liblinear’, max_iter=100, multi_class=’ovr’, verbose=0, warm_start=False, n_jobs=1)"""参数
---penalty:使用指定正则化项(默认:l2)dual: n_samples > n_features取False(默认)C:正则化强度的反,值越小正则化强度越大n_jobs: 指定线程数random_state:随机数生成器fit_intercept: 是否需要常量
"""

3)朴素贝叶斯算法NB:用于判断某件事的发生概率,我就曾用此算法做过舆情分类器。将一些语句变为01二维矩阵,计算词语的出现频率,从而判断语句的情感色彩是怎样的。

效率很高,但存在一定的错误概率

概率模型朴素贝叶斯 原理与优点_lipeitong333的博客-CSDN博客

from sklearn import naive_bayes
model = naive_bayes.GaussianNB() # 高斯贝叶斯
model = naive_bayes.MultinomialNB(alpha=1.0, fit_prior=True, class_prior=None)
model = naive_bayes.BernoulliNB(alpha=1.0, binarize=0.0, fit_prior=True, class_prior=None)
"""
文本分类问题常用MultinomialNB
参数
---alpha:平滑参数fit_prior:是否要学习类的先验概率;false-使用统一的先验概率class_prior: 是否指定类的先验概率;若指定则不能根据参数调整binarize: 二值化的阈值,若为None,则假设输入由二进制向量组成
"""

4)决策树DT:类似流程图的树结构,它使用分支方法来说明决策的每个可能结果。树中的每个节点代表对特定变量的测试 - 每个分支都是该测试的结果。

tree.DecisionTreeClassifier

决策树 信息增益与信息增益比_lipeitong333的博客-CSDN博客

from sklearn import tree
model = tree.DecisionTreeClassifier(criterion=’gini’, max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features=None, random_state=None, max_leaf_nodes=None, min_impurity_decrease=0.0, min_impurity_split=None,class_weight=None, presort=False)
"""参数
---criterion :特征选择准则gini/entropymax_depth:树的最大深度,None-尽量下分min_samples_split:分裂内部节点,所需要的最小样本树min_samples_leaf:叶子节点所需要的最小样本数max_features: 寻找最优分割点时的最大特征数max_leaf_nodes:优先增长到最大叶子节点数min_impurity_decrease:如果这种分离导致杂质的减少大于或等于这个值,则节点将被拆分。
"""

5)支持向量机SVM:就是判断线性可分不可分,能不能用直线分割两类数据!理论可以推广到三维,甚至思维以上的特征空间。三维使用平面来分隔数据,四维和四维以上因为人类 无法直观的感知出来,所以画不出来,但是能分隔数据,存在这样的平面叫做超平面。

SVC 二值分类器 工作原理_lipeitong333的博客-CSDN博客

from sklearn.svm import SVC
model = SVC(C=1.0, kernel=’rbf’, gamma=’auto’)
"""参数
---C:误差项的惩罚参数Cgamma: 核相关系数。浮点数,If gamma is ‘auto’ then 1/n_features will be used instead.
"""

6)k近邻算法KNN:采用测量不同特征值之间距离的方法对数据进行分类的一个算法。

给定一个样本的集合,这里称为训练集,并且样本中每个数据都包含标签。对于新输入的一个不包含标签的数据,通过计算这个新的数据与每一个样本之间的距离,选取前k个,通常k小于20,以k个剧里最近的数据的标签中出现次数最多的标签作为该新加入的数据标签。

K近邻算法,即是给定一个训练数据集,对新的输入实例,在训练数据集中找到与该实例最邻近的K个实例,这K个实例的多数属于某个类,就把该输入实例分类到这个类中。(这就类似于现实生活中少数服从多数的思想)根据这个说法,咱们来看下引自维基百科上的一幅图:

  • 如果K=3,绿色圆点的最邻近的3个点是2个红色小三角形和1个蓝色小正方形,少数从属于多数,基于统计的方法,判定绿色的这个待分类点属于红色的三角形一类。
  • 如果K=5,绿色圆点的最邻近的5个邻居是2个红色三角形和3个蓝色的正方形,还是少数从属于多数,基于统计的方法,判定绿色的这个待分类点属于蓝色的正方形一类。
from sklearn import neighbors
#定义kNN分类模型
model = neighbors.KNeighborsClassifier(n_neighbors=5, n_jobs=1) # 分类
model = neighbors.KNeighborsRegressor(n_neighbors=5, n_jobs=1) # 回归
"""参数
---n_neighbors: 使用邻居的数目n_jobs:并行任务数
"""

7)K-均值聚类(K-means):

  • 定义目标聚类数K,例如,k=3
  • 随机初始化的 k 个聚类中心(controids)
  • 计算每个数据点到K个聚类中心的Euclidean Distance,然后将数据点分到Euclidean Distance最小的对应类聚中心的那类
  • 针对每个类别,重新计算它的聚类中心;
  • 重复上面 3-4 两步操作,直到达到某个中止条件(迭代次数、最小误差变化等)

import pandas as pd
import matplotlib.pyplot as plt
from sklearn.cluster import KMeansdf = pd.DataFrame({"x": [25, 34, 22, 27, 33, 33, 31, 22, 35, 34, 67, 54, 57, 43, 50, 57, 59, 52, 65, 47, 49, 48, 35, 33, 44, 45, 38, 43, 51, 46],"y": [79, 51, 53, 78, 59, 74, 73, 57, 69, 75, 51, 32, 40, 47, 53, 36, 35, 59, 59, 50, 25, 20, 14, 12, 20, 5,  29, 27, 8,  7]})kmeans = KMeans(n_clusters=3).fit(df)
centroids = kmeans.cluster_centers_
# 打印类聚中心
print(type(centroids), centroids)# 可视化类聚结果
fig, ax = plt.subplots()
ax.scatter(df['x'],df['y'],c=kmeans.labels_.astype(float),s=50, alpha=0.5)
ax.scatter(centroids[:, 0], centroids[:, 1], c='red', s=50)
plt.show()

和KNN所不同,K-均值聚类属于无监督学习。

监督学习知道从对象(数据)中学习什么,而无监督学习无需知道所要搜寻的目标,它是根据算法得到数据的共同特征。比如用分类和聚类来说,分类事先就知道所要得到的类别,而聚类则不一样,只是以相似度为基础,将对象分得不同的簇。

More:

FP-Growth_lipeitong333的博客-CSDN博客

Apriori关联分析算法 -尿布与啤酒的故事_lipeitong333的博客-CSDN博客

ps):我们在机器学习中一直会遇到两种问题,一种是回归问题,一种是分类问题。我们从字面上理解,很容易知道分类问题其实是将我们现有的数据分成若干类,然后对于新的数据,我们根据所分得类而进行划分;而回归问题是将现有数据拟合成一条函数,根据所拟合的函数来预测新的数据。 这两者的区别就在于输出变量的类型。回归是定量输出,或者说是预测连续变量;分类问题书定量输出,预测离散变量。Po一张我在知乎上看到的一张图片,解释的很好:

3、sklearn自带方法joblib来进行保存训练好的模型

from sklearn.externals import joblib# 保存模型
joblib.dump(model, 'model.pickle')#载入模型
model = joblib.load('model.pickle')

参考链接:https://juejin.cn/post/6844903682576760846、https://juejin.cn/post/6961934412518785054、
https://juejin.cn/post/6844903513504530446、https://juejin.cn/post/6974596282694254606、机器学习神器:sklearn的快速使用 - 掘金 (juejin.cn)、机器学习之逻辑回归(纯python实现) - 掘金 (juejin.cn)、

机器学习笔记5-支持向量机1 - 掘金 (juejin.cn)、

python 数据挖掘算法相关推荐

  1. python数据挖掘算法的书籍_机器学习和数据挖掘推荐书单

    有了这些书,再也不愁下了班没妹纸该咋办了.慢慢来,认真学,揭开机器学习和数据挖掘这一神秘的面纱吧! <机器学习实战> 本书第一部分主要介绍机器学习基础,以及如何利用算法进行分类,并逐步介绍 ...

  2. 私活之Python数据挖掘建模平台

    大家好,我是脚丫先生 (o^^o) 生活不完全是工作,但是工作却填满了生活. 最近一段时间实时流模块的研发,也的确填满了日常. 虽然很累,但是能掌握Flink的知识点又是格外的兴奋. 知识的海洋是无边 ...

  3. 2021-03-15 数据挖掘算法—K-Means算法 Python版本

    数据挖掘算法-K-Means算法 Python版本 简介 又叫K-均值算法,是非监督学习中的聚类算法. 基本思想 k-means算法比较简单.在k-means算法中,用cluster来表示簇:容易证明 ...

  4. python数据挖掘 百度云,常用数据挖掘算法总结及Python实现高清完整版PDF_python数据挖掘,python数据分析常用算法...

    常用数据挖掘算法总结及Python实现 高清完整版PDF 第一部分数据挖掘与机器学习数学基础 第一章机器学习的统计基础 1.1概率论 l概率论基本概念 样本空间 我们将随机实验E的一切可能基本结果组成 ...

  5. python数据挖掘-oneR算法

    以下参考自<python数据挖掘入门与实战> 1.4分类 已知类别的数据集,经过训练得到一个分类模型,再用模型对类别未知的的数据进行分类.比如垃圾邮件过滤器 离散化:数据集的特征为连续值, ...

  6. Python数据挖掘-OneR算法简介

    OneR算法 内容来源于<Python数据挖掘入门与实践> 在末尾有源代码,但需要使用Jupyter notebook,大家可以去我的另一篇文章找安装教程.http://blog.csdn ...

  7. Python数据挖掘入门与实践-OneR分类算法

    Python数据挖掘入门与实践-OneR分类算法 OneR算法 OneR算法是根据已有的数据中,具有相同特征值的个体最可能属于哪个类别进行分类. 在本例中,只需选区Iris是个特征中分类效果最好的一个 ...

  8. Python数据挖掘学习——鸢尾花分类、OneR算法

    <Python数据挖掘入门与实践>第一章内容,实现一个简单的分类处理,实现OneR算法. OneR算法的思路很简单,它根据已有的数据中,具有相同特征值的个体最可能属于哪个类别进行分类.On ...

  9. Python数据挖掘:利用聚类算法进行航空公司客户价值分析

    无小意丶 个人博客地址:无小意 知乎主页:无小意丶 公众号: 数据路(shuju_lu) 刚刚开始写博客,希望能保持关注,会继续努力. 以数据相关为主,互联网为辅进行文章发布. 本文是<Pyth ...

  10. 数据挖掘算法案例python_《常用数据挖掘算法总结及Python实现》[5.1MB]PDF影印版下载-码农之家...

    <常用数据挖掘算法总结及Python实现>是一本数据挖掘相关的电子书资源,介绍了关于数据挖掘.算法总结.Python方面的内容,格式为PDF,资源大小5.1 MB,由debao9765 提 ...

最新文章

  1. golang 判断 数组 切片 是否为空
  2. java 递归原理_Java中递归原理实例分析
  3. CAN 总线 之七 BOSCH CAN 位时序 和 同步
  4. mysql查询结果导出excel_Mysql查询结果导出为Excel的几种方法
  5. 移动端去除横向滚动条
  6. The Pilots Brothers' refrigerator
  7. navicat for mysql 用户_Navicat for MySQL 怎么/怎么添加管理用户?Navicat for MySQL 添加管理用户教程_37游游网...
  8. python安装robotframework报错_robotframework-autoitlibrary离线安装
  9. POJ 3667 Hotel 线段树区间合并
  10. gta4 l3环境优化补丁_【安全刻不容缓】快给你们的爱7打打补丁吧 俄罗斯大佬的持续更新补丁包来了...
  11. python自动化办公-简直出神入化,教你用Python控制Excel实现自动化办公
  12. python random函数shuffle_Python|有趣的shuffle方法
  13. 淘宝 阿里 数据库 内核月报—目录索引
  14. python中如何绘制等边三角形
  15. 神经网络与深度学习:回归问题
  16. maya扇子动画_MAYA制作动画的十大原理!
  17. java,判断一个整数是质数还是合数.
  18. 授时服务器物理隔离,GPS授时设备配备的必要性及其特点
  19. 关于卡尔曼及卡尔曼增益的理解【精】
  20. tvOS游戏开发系列(SpriteKit)之准备工作(一)

热门文章

  1. pdflib textflow
  2. 软考真题答案-2021年11月系统集成项目管理工程师下午题(一)
  3. 轻量级Java EE企业应用实战(第4版):Struts 2+Spring 4+Hibernate整合开发(含CD光盘1张)
  4. java连接数据库配置文件
  5. 分析国内App推广渠道和方法
  6. 广联达软件未检测到加密锁请重新插入加密锁或网络服务器
  7. 网站抓取提示服务器错误,站长平台提示网站抓取异常是什么原因造成的?
  8. ESP8266的Arduino IDE下载和TTL下载
  9. Fiddler 5.0 中文版
  10. 网站上点击自定义按钮发起QQ聊天的解决方案