深圳网站建设的公司招聘,现在的报税网站怎么做更正申报,网站宣传工作,网页制作注意事项机器学习xueyifeiyun1989zx#xff0c;公众号#xff1a;围着围巾的小黑机器学习之监督学习实战前文我们提到机器学习中的监督学习#xff0c;其中有一个模型是我们提到的但是没有训练测试的#xff0c;叫做支持向量机(简称SVM)。支持向量机也是监督学习里面一个非常容易理… 机器学习xueyifeiyun1989zx公众号围着围巾的小黑机器学习之监督学习实战 前文我们提到机器学习中的监督学习其中有一个模型是我们提到的但是没有训练测试的叫做支持向量机(简称SVM)。支持向量机也是监督学习里面一个非常容易理解的模型。概念和公式定义我们就不带大家看了我们还是从代码实战的角度来学习。 SVM本质原理是利用超平面将数据分割成可分的部分对于可分的数据集来说不用做维度转换那么对于不可分的数据集要想利用SVM怎么办呢是有办法的就是核函数。核函数的存在的意义就是将低维不可分的数据转化成高维可分的数据从而实现对数据的分类。本文主要关注不同SVM中的核函数因为我们主要是应用为主所以只会提高各种核函数并做相关的代码实践不会对各种核函数的原理进行分析。 另外还有一个问题是需要在本文解决的大家如果前文仔细看的话会发现在整个训练和预测的过程中我们生成了两个数据集操作起来有点麻烦那么是否有现成的方法可以自动帮我们将数据集切分成训练集和测试集呢答案显然是肯定的。1、导入依赖包、生成基础数据集from sklearn.datasets import make_classificationimport matplotlib.pyplot as pltfrom sklearn import preprocessingfrom sklearn.model_selection import train_test_splitfrom sklearn.svm import SVCfrom sklearn.metrics import accuracy_scoreimport matplotlib.pyplot as pltimport mpl_toolkits.mplot3d# 生成基础特征数据该数据包含100条记录每条记录包含两个特征X,y make_classification(n_samples 10000,\n_features 3,n_redundant 0,n_repeated 0)2、对数据集合进行拆分和模型训练# 生成训练集和测试集train_x,test_x,train_y,test_y train_test_split(X,y)# 选择linear核函数在sklearn中其模型默认的核函数的rbfsvm SVC(kernel linear)svm.fit(train_x,train_y)3、模型预测# 在训练集上预测predict_train svm.predict(train_x)# 在训练集上准确率accuracy_score(train_y,predict_train)# 0.8693# 在测试集上预测predict_test svm.predict(test_x)# 在测试集上准确率accuracy_score(test_y,predict_test)# 0.85734、模型可视化# 分别生成预测正确的和预测错误的数据集合predictTure test_x[test_y predict_test]predictFalse test_x[test_y ! predict_test]# 定义一个画图的方法输入的参数为预测正确和预测错误的数据集合def plot3DPredictStatus(predictTure,predictFalse): # 创建一个三维的绘图工程 ax plt.subplot(projection 3d) # 设置图名称 ax.set_title(3d_predict_show) # 绘制数据点 color: r红色b蓝色等颜色 # x代表预测错误的数据 ,o代表预测正确的数据 ax.scatter(predictTure[:,0], \ predictTure[:,1], predictTure[:,2],\ c r,marker o,cmap coolwarm) ax.scatter(predictFalse[:,0],\ predictFalse[:,1], predictFalse[:,2], \ c b,marker x,cmap coolwarm) # 设置x坐标轴 ax.set_xlabel(X) # 设置y坐标轴 ax.set_ylabel(Y) # 设置z坐标轴 ax.set_zlabel(Z) # 画图 plt.show()# 画图函数调用plot3DPredictStatus(predictTure,predictFalse)图、在预测集上正确的点(红色)和错误(蓝色)的点5、对比不同核函数的效果 通过查看sklearn的SVM相关的参数说明(如下图)知道其至少提供linear、poly、rbf、sigmod、precomputed等核函数。图、sklearn中SVM相关的核函数类型说明# 定义模拟多个核函数的方法def multkernelCompare(): print({:10s}|{:8s}.format(kernel,accuracy)) for kernel in [linear,poly,rbf,sigmoid]: svm SVC(kernel kernel) svm.fit(train_x,train_y) accuracy accuracy_score(test_y,svm.predict(test_x)) print({:10s}|{:8.4f}.format(kernel,accuracy))# 不同核函数对比方法调用multkernelCompare()图、不同核函数预测结果的准确性对比