云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

中间件_键盘梦云主机_年度促销

小七 141 0

云储存服务_高性能_绿色云数据中心

博客在前一篇文章中,我们了解了什么是机器学习(ML)分类问题,我们看到了naivebayes是如何被用来解决情感分析的分类问题的——检测文本是正的还是负的。在这篇文章中,大数据培训,我们将学习支持向量机(SVM),另一种用于分类问题的流行技术。我们将使用这项技术来预测某人是否有可能患有糖尿病,这些因素包括年龄、怀孕次数、胰岛素水平、血糖水平等糖尿病是一种影响许多人的慢性疾病,其特点是血糖水平高。早期发现很重要,因为早期发现的糖尿病可以通过改变生活方式和/或最少的药物治疗来控制。对医生来说,糖尿病预测是一个有用的参考,因为他们可以要求进一步的检查,以早期发现糖尿病准备我们的培训资料针对这个问题,我们将使用的培训数据是Pima印度糖尿病数据库。数据集包含了糖尿病的几个预测因素和结果。结果表明患者是否患有糖尿病(1)或否(0)。在ML术语中,这些预测因子称为特征与往常一样,ML过程的第一步是准备训练数据。数据集以CSV格式提供,因此我们可以使用CSV上载功能导入数据。导入数据后,需要对其进行筛选,以仅包含用于培训的相关功能,并进行清理以删除重复数据和丢失数据。这最好使用SQL来完成,SQL是数据分析人员最常用的语言。以下是我用来准备此数据集进行ML分析的SQL:选择怀孕,葡萄糖,血压,胰岛素,体重指数,年龄,结果从[皮马丘印第安人糖尿病]哪里怀孕不是零葡萄糖也不为零血压不是零胰岛素也不是空的BMI不为零年龄不为零结果不为空该查询的结果如下所示:一旦数据被清理干净,我们将使用它作为我们的培训数据。它已经准备好输入我们的ML算法(支持向量机)来构建我们的模型。在此之前,让我来解释一下支持向量机理解支持向量机N维超立方体为了理解支持向量机,我们需要了解什么是N维超立方体。为了解释这个概念,我们将从形状和几何开始点是0维形状。它没有轴也没有大小线是一维形状。只有一个轴。直线上的一个点由一个变量(x)表示,它表示该点到某个原点的距离正方形是二维形状。有两个轴。正方形上的一个点由两个变量(x,y)表示该点在x轴上的距离,(y)表示该点在y轴上的距离立方体是三维形状。有3个轴。立方体上的点由三个变量(x,y,z)表示点在x轴上的距离,(y)表示点在y轴上的距离,(z)表示点在z轴上的距离扩展这个概念,N维超立方体是N维形状。有N个轴。这个超立方体上的一个点由N个变量表示。我们的人眼只能看到三维空间,所以我们要想象这个形状分割形状划分N维超立方体的第二个概念是用一个点把一条线分成两部分正方形可以用一条线分成两部分一个立方体可以用二维平面分成两个部分推广这一思想,利用(N-1)维超平面将N维超立方体分成两部分培训阶段在训练阶段,支持向量机算法首先将每个特征表示为一个独立的维来绘制N维超立方体。然后使用这些特征的数值在N维超立方体上绘制点。然后,它试图找到一个边界,将两类数据分开——例如,结果为0的点(无糖尿病)和结果为1的点(糖尿病)。边界是(N-1)维超平面下面是一个有两个特征的边界(线)示例下面是一个有三个特征的边界(二维平面)示例如果存在两类以上的数据,则支持向量机算法会绘制出更多的超平面试验阶段在测试阶段,我们可以从患者的实时数据开始,比如年龄、怀孕次数、胰岛素水平等等。支持向量机算法根据数据落在边界的哪一边来确定糖尿病的1/0结果支持向量为什么这个算法叫做支持向量机?为了准确地对所有数据点进行分类,支持向量机算法需要在两类之间找到最优超平面。最佳超平面是使两类之间的边距最大化的超平面。最接近超平面的数据点,也称为向量,称为支持向量机,这给算法起了支持向量机的名字支持向量是训练数据集中最重要的数据点。如果这些数据点从训练数据集中移除,分割超平面的位置就会改变。它们也是最难分类的数据点。理想的支持向量机分析会产生一个超平面,将数据点完美地分为两个不重叠的类,如上图所示。然而,完美的分离并不总是可能的。完全分离可能会导致模型执行许多错误分类。在这些情况下,支持向量机找到一个最大化边缘和最小化错误分类的超平面。将数据分为两类最简单的方法是:当有2个特征时,服务器租用,通过直线;当有3个特征时,通过二维平面;当有(N+1)个特征时,通过N维超平面。这些分离称为线性分离。在许多情况下,非线性区域可以更有效地分离数据,同时减少错误分类。支持向量机可以利用非线性核函数来处理这些情况。其中最常见的是RBF(径向基函数)。其他的是多项式和sigmoid核函数。在进行深入分析时,重要的是尝试不同的核函数,并选择能为训练数据提供最佳结果的函数下面是一个例子,其中非线性分离比任何线性分离都要好应用支持向量机下一步是使用支持向量机建立我们的模型。上面的SQL查询的输出可以作为dataframe(df)使用。Skikit学习包有一个支持向量机的算法,我们将其导入。构建模型的代码如下。我们选择我们想要包含的特征,并将其与结果一起传递给SVC(支持向量分类器)的拟合方法。这将构建模型。注意,我们使用的是线性核函数#SQL输出作为名为"df"的数据帧变量导入将熊猫作为pd导入从sklearn导入支持向量机结果=df['OUTCOME']特征=df['怀孕','葡萄糖','血压','胰岛素','体重指数','年龄']].as\u matrix()型号=SVC支持向量机(kernel='linear')模型.拟合(特点、结果)在Python代码运行之后,我们就可以测试我们的模型了。可以在Python代码中手动输入值,也可以通过设置过滤器从仪表板传递值来自动输入值设置好过滤器之后,修改SQL以将过滤器中的输入值传递到Python代码中选择怀孕,葡萄糖,血压,胰岛素,体重指数,淘客插件,年龄,淘客单,结果,"[INPUT_pregnities]"作为输入"u pregnities",'[INPUT_GLUCOSE]'作为输入葡萄糖,"[输入血压]"作为输入血压,"[INPUT_INSULIN]"作为输入_INSULIN,"[INPUT_BMI]"作为输入_BMI,'[INPUT_AGE]'作为输入\年龄从[皮马丘印第安人糖尿病]哪里怀孕不是零葡萄糖也不为零血压不是零胰岛素也不是空的BMI不为零年龄不为零结果不为空在Python代码中,我们引用通过过滤器从仪表板传递的值。结果=模型.预测([[df['INPUT_pregnities'][0],df['INPUT_GLUCOSE'][0],df['INPUT_血压'][0],df['INPUT_BMI'][0],df['AGE'][0]])sisense.文本("糖尿病"),如果结果==1其他sisense.文本("无糖尿病")这允许我们通过直接从仪表板提供值来调用糖尿病预测值可视化超平面和支持向量既然我们无法在有这么多维度的情况下可视化数据,那么让我们只选取2个维度来可视化我们的超平面胰岛素水平和年龄。我们可以过滤数据,只包括30岁以上,血清胰岛素水平超过350μU/ml的患者,以便在没有错误分类的情况下进行分离选择怀孕,怎么做淘客,葡萄糖,血压,胰岛素,体重指数,年龄,结果,"[INPUT_pregnities]"作为输入"u pregnities",'[INPUT_GLUCOSE]'作为输入葡萄糖,"[输入血压]"作为输入血压,"[INPUT_INSULIN]"作为输入_INSULIN,"[INPUT_BMI]"作为输入_BMI,'[INPUT_AGE]'作为输入\年龄从[皮马丘印第安人糖尿病]哪里怀孕不是零葡萄糖也不为零血压不是零胰岛素也不是空的BMI不为零年龄不为零结果不为空胰岛素>350年龄>30岁限制10现在让我们绘制胰岛素水平与年龄的关系图,看看可视化效果如何。该图表的代码如下将熊猫作为pd导入将seaborn作为sns导入数据图=sns.lmplot公司('INSULIN','AGE',data=df,hue='OUTCOME',fit\u reg=False)sisense.图像(数据图)输出如下所示:接下来,让我们使用下面的代码来绘制通过t的支持向量的分离超平面和平行线