分类数据

【机器学习】决策树(下)――CART算法及剪枝处理

匿名 (未验证) 提交于 2019-12-03 00:40:02
原文地址https://blog.csdn.net/HerosOfEarth/article/details/52425952 前言 :上篇博文已经介绍了ID3、C4.5生成决策树的算法。由于上文使用的测试数据以及建立的模型都比较简单,所以其泛化能力很好。但是,当训练数据量很大的时候,建立的决策树模型往往非常复杂,树的深度很大。此时虽然对训练数据拟合得很好,但是其泛化能力即预测新数据的能力并不一定很好,也就是出现了过拟合现象。这个时候我们就需要对决策树进行剪枝处理以简化模型。另外,CART算法也可用于建立回归树。本文先承接上文介绍完整分类决策树,再简单介绍回归树。 四、CART算法 CART,即分类与回归树(classification and regression tree),也是一种应用很广泛的决策树学习方法。但是CART算法比较强大,既可用作分类树,也可以用作回归树。作为分类树时,其本质与ID3、C4.5并有多大区别,只是选择特征的依据不同而已。另外,CART算法建立的决策树一般是二叉树,即特征值只有yes or no的情况(个人认为并不是绝对的,只是看实际需要)。当CART用作回归树时,以最小平方误差作为划分样本的依据。 1.分类树 (1)基尼指数 分类树采用基尼指数选择最优特征 。假设有 K K 个类,样本点属于第 k k 类的概率为 p k pk

文本分类实例

匿名 (未验证) 提交于 2019-12-03 00:40:02
Python机器学习项目的模板 1.定义问题 a)导入类库 b)导入数据集 from sklearn.datasets import load_files from sklearn.feature_extraction.text import CountVectorizer from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.linear_model import LogisticRegression from sklearn.naive_bayes import MultinomialNB from sklearn.neighbors import KNeighborsClassifier from sklearn.svm import SVC from sklearn.tree import DecisionTreeClassifier from sklearn.metrics import classification_report from sklearn.metrics import accuracy_score from sklearn.model_selection import cross_val_score from sklearn.model_selection

数据不平衡问题总结

匿名 (未验证) 提交于 2019-12-03 00:40:02
1.1 数据不平衡介绍 数据不平衡 ,又称 样本比例失衡 。对于二分类问题,在正常情况下,正负样本的比例应该是较为接近的,很多现有的分类模型也正是基于这一假设。但是在某些特定的场景下,正负样本的比例却可能相差悬殊,如 社交网络中的大V判断 、 电商领域的恶意差评检测 、 金融领域的欺诈用户判断 、 风控领域的异常行为检测 、 医疗领域的肿瘤诊断 1.2 数据不平衡的常见形式及特点 根据 数据量的多少 和 数据不平衡程度 ,可以将数据不平衡问题分为以几类: (1) 大数据 + 轻微 数据不平衡(正负样本数量相差在一个数量级内) 如 豆瓣上的电影评分数据分布 等,此类问题常见的机器学习模型即可解决,无须额外处理。 (2) 小数据 轻微数据不平衡 (正负样本数量相差在一个数量级内) 此类问题可以通过加随机扰动的上采样方法处理。 (3) 大数据 中度数据不平衡 (正负样本数量相差在两个个数量级内) 此类问题可以通过 下采样 的方法处理。 (4) 小数据 中微数据不平衡 (正负样本数量相差在两个数量级内) 如 医学图像分析 。此类问题可以用 数据合成 的方法来解决。 (5) 大数据 重度数据不平衡 (正负样本数量相差超过两个数量级) 如 金融领域的欺诈用户判断 , 风控领域的异常行为检测 。此类问题可以通过 一分类(one-class Learning) 或 离群点异常检测 方法来解决。

SVM要点总结(一)

匿名 (未验证) 提交于 2019-12-03 00:40:02
序 SVM支持向量机作为统计分类和回归分析中的重要方法,其理论推导难度较大,根据自己查阅的相关资料,按照问题理解、待处理数据是否可分的判断、主要推导过程、核函数的选择及推导、核函数的选择原则、python实现的相关方法、超参数调优等内容,以粗线条的方式,总结如下要点,方便查阅和易于理解: 1.问题分解 SVM是寻求最优的分割超平面问题<=>带一系列不等式约束的优化问题。 2.待处理数据是否可分的判断 (1)低维数据(1,2维),可有图清晰看出是否可分; (2)高维数据(>2维):将数据转换成凸包(scipy.spatial.qhull()),再判断凸包是否相交(sweepline()未找到相关资料)。若相交,则不可分;否则,可分。 3.主要推导过程 4.python实现的相关方法 sklearn.svm 对于回归:SVC,NuSVC,LinearSVC 对于分类:SVR,NuSVR,LinearSVR 待续 原文:https://www.cnblogs.com/Byron-ourLove/p/9272831.html

SVM支持向量机

匿名 (未验证) 提交于 2019-12-03 00:37:01
Support Vector Machine。支持向量机,其含义是通过支持向量运算的分类器。其中“机”的意思是机器,可以理解为分类器。 那么什么是支持向量呢?在求解的过程中,会发现只根据部分数据就可以确定分类器,这些数据称为支持向量。 见下图,在一个二维环境中,其中点R,S,G点和其它靠近中间黑线的点可以看作为支持向量,它们可以决定分类器,也就是黑线的具体参数。 解决的问题: 线性分类 在训练数据中,每个数据都有n个的属性和一个二类类别标志,我们可以认为这些数据在一个n维空间里。我们的目标是找到一个n-1维的超平面(hyperplane),这个超平面可以将数据分成两部分,每部分数据都属于同一个类别。 其实这样的超平面有很多,我们要找到一个最佳的。因此,增加一个约束条件:这个超平面到每边最近数据点的距离是最大的。也成为最大间隔超平面(maximum-margin hyperplane)。这个分类器也成为最大间隔分类器(maximum-margin classifier)。 支持向量机是一个二类分类器。 非线性分类 SVM的一个优势是支持非线性分类。它结合使用拉格朗日乘子法和KKT条件,以及核函数可以产生非线性分类器。 SVM的目的是要找到一个线性分类的最佳超平面 f(x)=xw+b=0。求 w 和 b。 首先通过两个分类的最近点,找到f(x)的约束条件。 有了约束条件

【监督学习】第四课(分类算法,svm理论)

匿名 (未验证) 提交于 2019-12-03 00:36:02
监督学习第四,五周: 因为有一周是lab课所以第四课实际上是第五周的内容。 本课件26页,典型的高压课件!所有复杂的理论就在这26页中全部展示。我会尽量让大家跟随教授的思路并享受到直观的算法思想。 1,具有分离数据功能的超平面 前面的课程说过,所谓的分类问题的解就是一个函数,这个函数能够接受数据输入,产生分类结果的输出。 而在一个空间中,我们则是要找到一个界限,这个界限可以将不同类别的数据分开。 而对于一个空间来说,这个界限实际上是一个平面(超平面)。想象在三维空间里,每个数据点的表示为 (X,Y,Z),有一些数据点聚集在超平面的左侧,而另外一些数据点聚集在超平面的右侧(另一侧)。那么我们说这个超平面具有分离数据的功能。 对于三维空间来说,这个界限是一个平面,而对于多维空间来说,这个界限是一个超平面。 那么如何表示这个平面呢? 假设这个是三维空间,则平面的表达式为: 也就是 a x b . y = k c z 其中abc是平面的法向量normal vector,也就是垂直于平面的向量。 xyz就是一个点,位于这个平面上。 而多维的空间的超平面,实际上也是一样的表达式, w x + bias = 0, where w stand for weight , 这个时候我们发现,将空间中其他不位于平面上的点带入 wx + b这个式子中,只有两个结果 ,label >0 或者label <0

二元分类问题搭建逻辑回归模型

匿名 (未验证) 提交于 2019-12-03 00:24:01
1.读取数据――pandas #利用pandas读取数据 import pandas as pd data = pd.read_csv(r"H:\Python\data\adult.data") cols = ['age','education_num','capital_gain','capital_loss','hours_per_week','label'] data = data[cols] data.head(8) 运行结果: 2.数据转换及可视化――pandas #利用pandas进行数据转换和可视化,pandas可以将文字型类别变量转换为数字变量 data["label_code"] = pd.Categorical(data.label).codes #在原数据上生成一个变量“label_code”,这个变量只有两个值:0表示“<=50K”,1表示“>50K” data[["label","label_code"]].head(8) import matplotlib.pyplot as plt data[["age","hours_per_week","education_num","label_code"]].hist() plt.show(block=False) 运行结果: 3.数据的基本统计信息――pandas

数据挖掘(机器学习)面试--SVM面试常考问题

匿名 (未验证) 提交于 2019-12-03 00:22:01
转自 https://blog.csdn.net/szlcw1/article/details/52259668 应聘数据挖掘工程师或机器学习工程师,面试官经常会考量面试者对SVM的理解。 以下是我自己在准备面试过程中,基于个人理解,总结的一些SVM面试常考问题(想到会再更新),如有错漏,请批评指正。(大神请忽视) 转载请注明出处:blog.csdn.net/szlcw1 SVM的原理是什么? SVM是一种二类分类模型。它的基本模型是在特征空间中寻找间隔最大化的分离超平面的线性分类器。(间隔最大是它有别于感知机) (1)当训练样本线性可分时,通过硬间隔最大化,学习一个线性分类器,即线性可分支持向量机; (2)当训练数据近似线性可分时,引入松弛变量,通过软间隔最大化,学习一个线性分类器,即线性支持向量机; (3)当训练数据线性不可分时,通过使用核技巧及软间隔最大化,学习非线性支持向量机。 注:以上各SVM的数学推导应该熟悉: 硬间隔最大化(几何间隔)---学习的对偶问题---软间隔最大化(引入松弛变量) --- 非线性支持向量机(核技巧)。 SVM为什么采用间隔最大化? 当训练数据线性可分时,存在无穷个分离超平面可以将两类数据正确分开。 感知机利用误分类最小策略,求得分离超平面,不过此时的解有无穷多个。 线性可分支持向量机 利用间隔最大化求得最优分离超平面 ,这时,解是唯一的

二元分类问题搭建逻辑回归模型

匿名 (未验证) 提交于 2019-12-03 00:22:01
1.读取数据――pandas #利用pandas读取数据 import pandas as pd data = pd.read_csv(r"H:\Python\data\adult.data") cols = ['age','education_num','capital_gain','capital_loss','hours_per_week','label'] data = data[cols] data.head(8) 运行结果: 2.数据转换及可视化――pandas #利用pandas进行数据转换和可视化,pandas可以将文字型类别变量转换为数字变量 data["label_code"] = pd.Categorical(data.label).codes #在原数据上生成一个变量“label_code”,这个变量只有两个值:0表示“<=50K”,1表示“>50K” data[["label","label_code"]].head(8) import matplotlib.pyplot as plt data[["age","hours_per_week","education_num","label_code"]].hist() plt.show(block=False) 运行结果: 3.数据的基本统计信息――pandas

深度学习个人理解

匿名 (未验证) 提交于 2019-12-03 00:21:02
实现人工智能的方法有很多种,当前最热门的一种就是通过深度学习来训练神经网络。深度学习这个词指的是训练大型神经网络。深代表着非常大的神经网络。那么神经网络到底是什么呢? 如下图: 假设你有一个数据集(包含了六个房屋的面积和价格数据)。你想要找到一个方法(即构建一个函数)来通过面积预测出价格。如果你熟悉线性回归(不熟悉也没关系,你就把它看作是一个数学理论),那么可以根据这个理论在实际数据附近画出一条直线,如上图中红色的线,它附近的蓝色的小圆圈代表着六个房子的面积与房价对应的点,即根据这条线(这个函数)来找某一个面积对应的房价,那么除了些误差外,基本上是准的。 理解:大量的数据通过一个函数进行处理分析,找到相同得规则,然后再根据其他得数据分析出最可能得结果,这就是机器学习得一个大概得流程。 监督学习: 判断是否是监督学习,就看输入数据是否有标签。输入数据有标签,则为有监督学习,没标签则为无监督学习。 分类(classification) 这种机器学习算法就是一种监督学习。对于分类,输入的训练数据有特征(feature),有标签(label)。也就是我们前面文章中的输入x和输出y。每一个x样本都对应着一个y(输出)标签。所谓的学习,其本质就是找到特征和标签间的关系(mapping),也就是找规律。这样当有特征而无标签的未知数据输入时,我们就可以通过已有的关系得到未知数据标签