1、K近邻算法

原理:计算待分类样本与每个训练样本的距离,取距离最小的K个样本,这k个样本,哪个类别占大多数,则该样本属于这个类别。

优点:1、无需训练和估计参数,2、适合多分类,3、适合样本容量比较大的问题

缺点:1、对测试样本内存开销大,2、可解释性差,无法生成规则,3、对样本量小的问题,容易误分

经验:K一般低于样本量的平方根,基于交叉验证

问题:类别判断:投票法没有考虑距离的远近,可以采用加权投票‘’

高维度变量:维度越高,欧氏距离的区分能力越差。

import numpy as np

from sklearn import neighbors

knn = neighbors.KNeighborsClassifier()

knn.fit(x,y)

knn.predict()

2、决策树

原理:以树的结构递归的选择特征,并根据特征对样本进行分割,获得子树结构的过程。

优点:1、速度快,容易形成规则,2、准确度高,易于理解;3、可以处理连续和分类字段,4、不需要参数假设和任何领域知识,5、适合高维数据

缺点:1、对于各类别样本数量不一致数据,信息增益偏向于数值更多的特征,2、易于过拟合,3、忽略关性

ID3:使用信息增益作为特征选择的度量,1、当分类不均匀时,分类精度大打折扣;2、不能处理连续数据和带缺失值数据

import numpy as np
from sklearn import tree
from sklearn.metrics import precision_recall_curve
from sklearn.metrics import classification_report
from sklearn.cross_validation import train_test_split
data = np.array([[1.5 ,50,'thin'], [1.5 ,60, 'fat'] ,[1.6 ,40 ,'thin'], [1.6 ,60, 'fat'] ,[1.7 ,60 ,'thin'],  [1.7 ,80 ,'fat'] ,[1.8 ,60 ,'thin'],[1.8 ,90 ,'fat'], [1.9 ,70 ,'thin'],[1.9 ,80, 'fat']])
labels = data[:,-1]
y = np.zeros(labels.shape)
y[labels=='fat']=1
y[labels=='thin']=0
x = data[:,:2]
x_train,x_test,y_train,y_test = train_test_split(x,y, test_size=0.2,random_state=0) 
clf=tree.DecisionTreeClassifier(criterion='entropy')
clf.fit(x_train, y_train)
with open("tree.dot", 'w') as f:
f = tree.export_graphviz(clf, out_file=f)
print (clf.feature_importances_)
precision, recall, thresholds = precision_recall_curve(y_train,clf.predict(x_train))
answer = clf.predict_proba(x)[:,1]
print(classification_report(y,answer,target_names = ['thin', 'fat']))

3、朴素贝叶斯

原理:对于待分类的项目,    求解此项出现的条件下各类别出现的概率,那个最大,此待分类项就属于哪个类别。

优点:分类速度快,对缺失值不敏感,准确度高

缺点:需要知道先验概率

from sklearn.naive_bayes import GaussianNB

model = GaussianNB()

model.fit(x, y )

model.predict()

4、Logistic回归

原理:面对一个回归或者分类函数,建立一个代价函数,通过迭代法求解出最优模型参数。

优点:速度快。适合二分类问题;直接看到各个特征的权重,能更容易更新模型吸收新的数据。

缺点:对数据和场景的适应能力不强。

过拟合问题往源自 过多的特征
解决方法 1)减少特征数量(减少特征会失去一些信息,即使特征选的很好)  可用人工选择要保留的特征;  模型选择算法; 
2)正则化(特征较多时比较有效)  保留所有特征,但减少θ的大小

5、支持向量机

原理:通过最大化分类分界点到分类界面距离来实现分类。

优点:提高泛化性能,解决小样本下机器学习的问题,避免神经昂神经网络选择和局部极小的问题。

缺点:对缺失数据敏感,内存消耗大,难解释。

SVM和逻辑回归区别:

从目标函数看,逻辑回归采用logistical loss ,SVM采用hinge loss。

逻辑回归是参数模型,SVM是非参数模型。

6、Adaboost

集成学习:1、boosting是同一种机器学习算法,数据抽取时,裙权值在不断更新,每次提高前一次分错了的数据集的权值,最后得到T个弱分类器,且分类器的权值跟中间结果的数据有关;

bagging:同一种弱分类器,数据抽取通过有放回抽样(bootstrap);

stacking算法:第一层行程T个弱分类器,生成相同的新数据及,利用这个数据集和新算法构成第二层分类器。

adaboost算法:是一种迭代算法,针对同一个训练集训练不同的分类器,然后把分类器集合起来,构成一个更强的分类器。关注被错分的样本,器重好的分类器

优点:不担心过拟合问题,不用做特征筛选,可以用各种方法构造分类器。

from sklearn.ensemble import GradientBoostingcClassifier

model=GradientBoostingClassifier(n_estimators=100,learning_rate=1.0,max_depth=1,random_state=0)

model.fit()

7、K-均值聚类

优点:当聚类是密集的,且类与类之间区别明显时,效果较好;对于处理大数据及,这个算法相对高校,计算复杂度为O(NKT),N是数据量,  K 是聚类中心, T是迭代的次数。

from sklearn.clster import KMeans

clf = KMeans(n_clusters=3,max_iter=300,n_init=10)

8、PCA

原理:通过线性投影,将高维空间映射到低维空间,所投影维度上数据的方差最大。

注意:使用pca可以提取主成分,肯能会解决一些过拟合问题,但不建议使用降维解决过拟合,建议加个正则化项来解决。

只有源数据结果较好,但嫌他太慢采用主成分分析。

from sklearn.decomposition import PCA
import numpy as np
import pandas as pd
data = np.random.randn(10,4)
pca = PCA()
pca.fit(data)
print (pca.components_)
print (pca.explained_variance_ratio_)
pca = PCA(3)
pca.fit(data)
lowd = pca.transform(data)
pd.DataFrame(lowd).to_excel("E:/contest_data/result.xlsx")
pca.inverse_transform(lowd)

10.apriori关联分析

常见数据挖掘算法和Python简单实现相关推荐

  1. python选择排序从大到小_经典排序算法和Python详解之(一)选择排序和二元选择排序...

    本文源自微信公众号[Python编程和深度学习]原文链接:经典排序算法和Python详解之(一)选择排序和二元选择排序,欢迎扫码关注鸭! 扫它!扫它!扫它 排序算法是<数据结构与算法>中最 ...

  2. pca算法python_PCA算法和python实现

    第十三章 利用PCA来简化数据 一.降维技术 当数据的特征很多的时候,我们把一个特征看做是一维的话,我们数据就有很高的维度.高维数据会带来计算困难等一系列的问题,因此我们需要进行降维.降维的好处有很多 ...

  3. 常见缓存算法和LRU与LFU的c++实现

    目录 常见的缓存算法 LRU缓存 LRU Cache具备的操作: LRU的c++实现 双链表节点的定义: 指定容量大小 删除操作 插入操作 获取操作 插入新节点 LRU完整C++代码实现 LRU和LF ...

  4. 粒子群优化算法和python代码_Python编程实现粒子群算法(PSO)详解

    1 原理 粒子群算法是群智能一种,是基于对鸟群觅食行为的研究和模拟而来的.假设在鸟群觅食范围,只在一个地方有食物,所有鸟儿看不到食物(不知道食物的具体位置),但是能闻到食物的味道(能知道食物距离自己位 ...

  5. 聚类基本概念及常见聚类算法和EM算法

    1. 基本概念 1.1 定义 聚类:发现数据中分组聚集的结构,根据数据中样本与样本之间的距离或相似度,依据类内样本距离小(相似度大).类间样本距离大(相似度小)将样本划分为若干组/类/簇. 基于划分的 ...

  6. 《OpenCv视觉之眼》Python图像处理十四 :Opencv图像轮廓提取之Scharr算法和Canny算法

    本专栏主要介绍如果通过OpenCv-Python进行图像处理,通过原理理解OpenCv-Python的函数处理原型,在具体情况中,针对不同的图像进行不同等级的.不同方法的处理,以达到对图像进行去噪.锐 ...

  7. python 北京大学陈斌教授_“其实数算可以很简单” ——专访北大地空学院陈斌...

    [采访时间]2015年5月6日 陈斌,北京大学地球与空间科学学院遥感与地理信息系统研究所副教授,主要研究方向为空间信息分布式计算.分布式虚拟地理环境.在教学方面,陈斌老师负责本科生课程<离散数学 ...

  8. 线性判别函数(Python实现批感知器算法、Ho Kashyap算法和MSE多类扩展方法)——模式识别编程作业

    文章目录 写在前面 批感知器算法 Ho Kashyap算法 MSE多类扩展方法 Ref. 写在前面 本博客为模式识别作业的记录,实现批感知器算法.Ho Kashyap算法和MSE多类扩展方法,可参考教 ...

  9. 【数据挖掘实验】关联规则——CARMA算法和AprioriAll算法

    一.实验项目名称: 关联规则--CARMA算法和AprioriAll算法 二.实验目的与要求: 在软件方面:会用Clementine软件进行序列关联规则分析. 在理论方面:CARMA算法和Aprior ...

最新文章

  1. openssl修改版本号
  2. 窗体的扩展样式GWL_EXSTYLE:用于SetWindowLong
  3. 互联网1分钟 | 0124 抖音社交产品“多闪”登顶苹果商店总排行榜;王欣或将推出新社交产品丸子视频...
  4. js中setAttribute 的兼容性
  5. 魅族16T官网开启预约:骁龙855+4400mAh大电池
  6. java判空null前后,关于java:引不要再使用null判空了
  7. java swing取消按钮_在Java Swing中取消选择单选按钮
  8. qt如何编写android程序,如何利用Qt开发Android应用程序
  9. 游戏平台系统源码开源有多重要
  10. RS232 9针串口定义
  11. 尚学堂马士兵SSH笔记下载
  12. 忘记压缩包密码 python 暴力破解rar密码
  13. CSP-J (初中级别比赛)初赛总结
  14. 如何识别图片文字,PaddleOCR机器学习开源项目使用 | 机器学习
  15. 《ERP高级计划》书解读-APS案例分析之四缓冲的计算(蔡颖)(转)
  16. 【从零开始学习MySql数据库】(3)函数与子查询和连接查询
  17. ibm服务器显示0 bf,IBM服务器常见服务器故障总结
  18. LeetCode——6. Z 字形变换
  19. python--Folium
  20. python中iloc与loc的区别

热门文章

  1. Summers Crafts Broad Role in Reshaping Economy
  2. VS2015默认不支持x64下__asm{}内联汇编的解决方案(含资源共享)
  3. 视觉类比VISALOGY: Answering Visual Analogy Questions--NIPS2015
  4. HDU-安卓程序开发之简单存储/内部存储/外部存储 捉虫
  5. 一次幸运的校招小米Java后台offer(1),Java面试2021
  6. JavaScript中的浅拷贝与深拷贝(手写浅拷贝和深拷贝)
  7. 德国意志战胜阿根廷野蛮!德国万岁!
  8. 实战:k8s中基于角色的权限访问控制-RBAC(成功测试-博客输出)-20211005
  9. 用预处理指令#define声明一个常数,用以表明1年中有多少秒(忽略闰年问题)
  10. SF25 | 日内交易策略开发(一)黄金日内交易模型