当前位置: 首页 > 后端技术 > Python

100天搞定机器学习-Day13-14SVM实现

时间:2023-03-26 19:33:11 Python

昨天学习了支持向量机的基本概念,重申了数学推导原理的重要性,给大家介绍了一篇很好的文章。今天,我们使用Scikit-Learn中的SVC分类器实现SVM。我们将在第16天使用kernel-trick实现SVM。导入库importnumpyasnpimportmatplotlib.pyplotaspltimportpandasaspd导入数据dataset还是Social_Network_Ads,下载地址:https://pan.baidu.com/s/1cPBt...提取码:vl2gdataset=pd.read_csv('Social_Network_Ads.csv')X=dataset.iloc[:,[2,3]].valuesy=dataset.iloc[:,4].values将数据集拆分为训练集和测试集从sklearn.model_selectionimporttrain_test_splitX_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.25,random_state=0)从sklearn.preprocessingimportStandardScalersc=StandardScaler()X_trans=sc.fit_transform(X_trainsc.fittest)(X_test)fitSVMtotrainingsetfromsklearn.svmimportSVCclassifier=SVC(kernel='linear',random_state=0)classifier.fit(X_train,y_train)预测测试集结果y_pred=classifier.predict(X_test)create来自sklearn.metrics的混淆矩阵importconfusion_matrixcm=confusion_matrix(y_test,y_pred)来自matplotlib.colors的训练集结果可视化importListedColormapX_set,y_set=X_train,y_trainX1,X2=np.meshgrid(np.arange(start=X_set[:,0.min()-1,stop=X_set[:,0].max()+1,step=0.01),np.arange(start=X_set[:,1].min()-1,stop=X_set[:,1].max()+1,step=0.01))plt.contourf(X1,X2,classifier.predict(np.array([X1.ravel(),X2.ravel()]).T).reshape(X1.形状),alpha=0.75,cmap=ListedColormap(('red','green')))plt.xlim(X1.min(),X1.max())plt.ylim(X2.min(),X2。max())fori,jinenumerate(np.unique(y_set)):plt.scatter(X_set[y_set==j,0],X_set[y_set==j,1],c=ListedColormap(('red','green'))(i),label=j)plt.title('SVM(训练集)')plt.xlabel('年龄')plt.ylabel('预估工资')plt.legend()plt.show()测试集合结果可视化frommatplotlib.colorsimportListedColormapX_set,y_set=X_test,y_testX1,X2=np.meshgrid(np.arange(start=X_set[:,0].min()-1,stop=X_set[:,0].max()+1,step=0.01),np.arange(start=X_set[:,1].min()-1,stop=X_set[:,1].max()+1,step=0.01))plt.contourf(X1,X2,classifier.predict(np.array([X1.ravel(),X2.ravel()]).T).reshape(X1.shape),alpha=0.75,cmap=ListedColormap(('red','green')))plt.xlim(X1.min(),X1.max())plt.ylim(X2.min(),X2.max())fori,jinenumerate(np.unique(y_set)):plt.scatter(X_set[y_set==j,0],X_set[y_set==j,1],c=ListedColormap(('red','green'))(i),label=j)plt.title('SVM(测试集)')plt.xlabel('年龄')plt.ylabel('预估工资')plt.legend()plt.show()