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、不能处理连续数据和带缺失值数据
3、朴素贝叶斯
原理:对于待分类的项目, 求解此项出现的条件下各类别出现的概率,那个最大,此待分类项就属于哪个类别。
优点:分类速度快,对缺失值不敏感,准确度高
缺点:需要知道先验概率
from sklearn.naive_bayes import GaussianNB
model = GaussianNB()
model.fit(x, y )
model.predict()
4、Logistic回归
原理:面对一个回归或者分类函数,建立一个代价函数,通过迭代法求解出最优模型参数。
优点:速度快。适合二分类问题;直接看到各个特征的权重,能更容易更新模型吸收新的数据。
缺点:对数据和场景的适应能力不强。
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可以提取主成分,肯能会解决一些过拟合问题,但不建议使用降维解决过拟合,建议加个正则化项来解决。
只有源数据结果较好,但嫌他太慢采用主成分分析。
10.apriori关联分析