今天,首席CTO指出,要与您分享与Python培训模型有关的数据。其中,将详细介绍Python模型培训。如果您可以解决您现在面临的问题,请不要忘记注意此网站。现在,让我们立即开始。
本文目录清单:
1.如何在10分钟内使用Python构建预测模型2.如何在Python SVM中培训模型3.如何使用Python实施SVM模型4.什么是Python中的测试数据和培训数据?性能,建议您使用您将培训数据集分为训练集和验证集(理想比率为7030,并在70%的培训数据集上进行建模。现在,使用30%的验证数据集进行交叉验证,并使用评估指标进行性能评估。它需要12分钟执行和记录结果。
本文的目的不是赢得比赛,而是要建立自己的基准。让我使用Python代码执行上述方法来构建您的第一个模型以产生很大的影响。
支持向量机SVM(支持向量机)是一个监视分类预测模型。本文使用机器学习库Scikit-Learn中的手写数字数据集来介绍训练SVM模型和对手数量的过程。
准备
手写数字识别的原则是将数字的数字划分为8x8的灰色值矩阵,并且对64个灰度值进行了训练,以训练模型作为每个数字的训练集。与手写数字相对应的实数分为分类结果。在机器学习的Sklearln库中,已经包括了不同数字的8x8灰色值矩阵,因此我们首先介绍了Sklearn库随附的数据集数据集。图表库,等等。
12345678910
进口指标
阅读并查看数字矩阵
数据集数据集带有Sklearn库读取数字的8x8矩阵信息的数量,并分配给数字。
12
#阅读数据集并为digitsDigits = datasets.load_digits()分配一个值
检查其中的数字9,可以发现手写9的数字9用64灰度存储。从下面的8×8矩阵中很难看到。
12
#View Digits.DATA数据浓度编号9 [9]
输出手写数字9的图像中的灰色值,您可以看到一个粗糙的轮廓。这是用灰色剪切和保存的手写编号9。它对的64灰色值是模型的训练集,实际数字9是目标分类。我们的模型要做的是通过训练64个灰色值和与每个数字相对应的每个数字来对与新笔迹相对应的实数进行分类。
1234
#绘制图表以查看数据浓度的图像数字9 imumes plt.imshow(digits.images [9],cmap = plt.cm.gray_r,interporation ='最近')plt.title('digits.target.target [9 9]')plt.show()
设置模型X的功能和预测目标Y
查看数据集的分类目标,您可以看到总共有10个类别,它们分布为0-9。我们将此分类目标分配给y作为模型预测目标。
12
#DATA浓度目标分类数字。
12
#付数据集的目标yy = digits.target
手写数的64个灰度值的特征是X的特征值。在这里有必要解释64个灰色值以8×8矩阵的形式保持,因此我们需要使用Reshape函数来重复- 调整矩阵的线数。在这里,是8×8到一个二维数据的两个维度数据,为64×1。
123
#使用reshape函数将矩阵转换并为xn_samples分配一个值
查看特征值x和预测目标y的行数,总计1797行,这意味着数据集具有1797个手写的CCP,而64列是我们转换后的灰度值。
12
#查看x和y x的行数。形状,y。形状
将数据分为培训集和测试集
1797年手写数字的灰度值分为随机采样方法的训练集和测试集。其中,训练集为60%,测试集为40%。
12
#,其中训练集的比例为60%,测试集为40%x_train,x_test,y_train,y_test = cross_validation.train_teest_split(x,x,y,test_size = 0.4,rancom_state = 0)
检查分割测试集数据,总共有1078个数据。这些数据将用于训练SVM模型。
12
#查看训练集的行数x_train.shape,y_train.shape
火车SVM型号
训练集数据X_Train和Y_Train被替换为SVM模型以训练模型。以下是特定的代码和结果。
12
#SVM分类模型CLF = SVM.SVC(伽马= 0.001)
12
#use训练设置以训练SVM分类型号Clf.fit(x_train,y_train)
使用测试集测试测试模型
使用测试集数据x_test和y_test来测试训练有素的SVM模型。模型竞争对手的准确性为99.3%。这是一个非常高的精度。它真的很可靠吗?让我们分开测试。
12
#使用测试集以测量分类模型Clf.score的准确性(x_test,y_test)
我们使用测试集的功能X,即,在模型中替换每个手写数字的64个灰色值以对SVM模型进行分类。
12
#predicate测试集数据预测预测= clf.predict(x_teest)
然后检查前20个手写数字的分类结果,即与手写数字相对应的实际数字。以下是特定的分类结果。
12
#查看前20个测试集的预测结果预测[:20]
查看训练浓度的前20个分类结果,即实际数字,并将先前的分类结果与测试集的实际结果进行比较。
12
#查看测试浓度登录的真实结果= y_test
以下是测试浓度的前20个实数的结果。与先前SVM模型的分类结果相比,前20个结果是一致的。
12
#View测试浓度超过20个实际结果[:20]
使用混淆矩阵查看SVM模型预测的准确性和所有测试集数据的实际结果。以下是一个10x10矩阵。0的数字,第一行的第二个数字表示数字实际上是0,而SVM模型预测1.第二行的第二个数字73表示实际数字为1,SVM模型也预计为1。
12
#Confusion Matrix)Metrics.confusion_matrix(预期,预测)
从混乱矩阵可以看出,大多数数字SVM的分类和预测都是正确的,但是也存在单个的数字分类错误,例如实数2,SVM模型错误的分类为1,并且还有另一个错误。分类为7。
我首先详细说明了我对SVM的理解,这将不涉及数学公式,然后给出Python代码。
SVM是双类模型。处理数据可以分为三类:
线性划分
几乎线性得分,最大化软间隔,学习线性分类器
线性不能分割,最大化核功能和软间隔,并学习非线性分类器
线性分类器对应于平面上的直线;非线性分类器对应于平面上的曲线。
硬间隔对应于线性分开的数据集,可以正确地对所有样本进行分类。因此,噪声样本受到很大的影响,不建议这样做。
在通常情况下,软间隔对应于数据集(几乎是线性或线性分离),从而使超平面附近的某些样品通过错误分类,从而改善了概括性能。
如下所示:
实线是通过最大化硬间隔获得的,并且预测能力显然不如通过最大化软间隔获得的虚线那样好。
对于线性不可分割的数据集,如下所示:
我们直观地感觉到,直线线性分类器,即直线,无法很好地分开红点和蓝色点。
但是,您可以使用红点和蓝点之间的圆曲线将两者分开,如下所示:
我们假设此黄色曲线是圆形的,并且方程可以设置为x^2+y^2 = 1,那么核心函数是什么?
我们将x^2映射到x,y^2映射到y,然后超平面变为x+y = 1。
然后,原始空间的线性性不能分为新的空间(近似)线性划分问题。
目前,您可以使用线性分割的方法(大约)来解决线性不可分割的数据集的分类问题。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
以上我用最简单的语言解释了SVM,我没有使用任何数学知识。但是,如果没有数学,您将无法体验到SVM的本质,因此,我将尽可能地描述SVM的数学思想。如果尚未看到SVM派生过程的朋友可以跳过以下段落。
用于解决方案(近似)线性分割问题:
从最大间隔方法获得两个凸面计划问题的问题。此类问题具有最佳解决方案(从理论上讲,您可以直接调用二级计划计算包以获得最佳解决方案)
我们得到上述凸优化问题的问题。一个是因为解决偶数问题更容易,另一个是引入核功能以促进非线性问题。
解决了原始问题问题的解决方案,然后确定分离超平面和分类决策功能。由于偶数问题中的目标函数和分类决策功能仅涉及实例和实例之间的内部积累,即XI,xj。我们介绍核功能的概念。
扩展线性和解决方案问题:
例如,以前的示例,任何两个线性不可分割的数据集的示例:xi,xj。当我们使用以上上述绘制映射F,F(XI)和F(XJ)时,使用上述空间在高维空间中进行线性分配- 提到的解决方案(大约)线性分开的问题。我们看到目标函数和分类决策 - 制定决定功能仅涉及内部积累f(xi),f(xj)。在高维空间中内部积累的复杂性,我们可以引入核函数k(xi,xj)= f(xi),f(xj),因此内部产品问题成为功能功能的问题。最有趣的是,我们根本不需要知道映射f。呢
我还没有准备好将派生过程放在这里,因为有很多非常好的学习材料。如果您有兴趣,您可以看到:CS229讲义
最后,SMO算法解决了SVM问题。如果你感兴趣
我直接提供代码:SMO+SVM
线性分数数据集的结果:
支撑矢量在图中非常完美,并且支撑向量在超级平面附近。
数据集(200个示例)上的在线运行结果:
核功能使用高斯核并采用了不同的Sigma
Sigma = 1,189支持向量,这等同于与整个数据集的分类。
Sigma = 10,有20个支持向量,边界曲线可以更好地拟合数据集特征。
我们可以看到,当支持向量太小时,我们可能会得到一个糟糕的决定 - 制造边界。如果支持向量太多,则相当于使用整个数据集进行每次分类,类似于KNN。
当数据量特别大时,就会有数万。为了验证模型的质量,有些是进行训练的,另一部分被用作测试。当模型培训良好时,必须是培训数据的分布。为了验证模型的概括能力,请使用尚未参与培训的测试集,并将其放入模型中以计算结果。与实际值相比,您可以看到返回的返回。模型预测不准确
从代码的角度来看,这是一个简单的线性回归模型。数据和开发成本与产品质量相对应的数据很简单。使用线性回归适合直线。因为您的数据特别小,只有8点,因此根本不需要区分。培训数据和测试数据,尤其是如果您设置了测试集比率为0.1,只有一个,这不是很非常非常有用,因此无需区分
希望我的答案能帮助您,我希望您学习顺利的学习
结论:以上是首席CTO注释引入的Python培训模型的全部内容以及Python模型培训的全部内容。我希望这对每个人都会有所帮助。如果您仍然想了解有关此信息的更多信息,请记住收集和关注书。