sklearn之SVM二分类
来源:互联网 发布:道路坐标计算软件 编辑:程序博客网 时间:2024/05/22 17:00
理论部分
- 线性支持向量机
- 对偶形式支持向量机
- 核函数支持向量机
- 软间隔支持向量机
- Kernel Logistic Regression
- Support Vector Regression(SVR)
使用sklearn实现的不同核函数的SVM
使用不同核函数的
# -*- coding: utf-8 -*-import numpy as npimport matplotlib.pyplot as pltimport pandas as pdfrom sklearn.svm import SVCdef bc(): data = pd.read_table(r'./data/testSet.txt', header=None, delim_whitespace=True) print(data.info()) print(data.head()) X_train = np.array(data.loc[:][[0, 1]]) y_train = np.array(data[2]) y_train = np.where(y_train == 1, 1, -1) x_min = X_train[:, 0].min() x_max = X_train[:, 0].max() y_min = X_train[:, 1].min() y_max = X_train[:, 1].max() ''' linear svm, poly svm, rbf svm ''' plt.figure(figsize=(15, 15)) for fig_num, kernel in enumerate(('linear', 'poly', 'rbf')): svm_ = SVC(kernel=kernel) svm_.fit(X_train, y_train) # support vectors # plt.figure(fig_num) # plt.clf() plt.subplot(222 + fig_num) plt.scatter(x = X_train[y_train == 1, 0], y = X_train[y_train == 1, 1], s = 30, marker = 'o', color = 'yellow', zorder = 10) plt.scatter(x = X_train[y_train == -1, 0], y = X_train[y_train == -1, 1], s = 30, marker = 'x', color = 'blue', zorder = 10) plt.scatter(x = [x[0] for x in svm_.support_vectors_], y = [x[1] for x in svm_.support_vectors_], s = 80, facecolors='none', zorder = 10) print(len(svm_.support_vectors_)) plt.title(kernel) plt.xlabel('support vectors ' + str(len(svm_.support_vectors_))) plt.xticks([]) plt.yticks([]) plt.xlim(x_min, x_max) plt.ylim(y_min, y_max) XX, YY = np.mgrid[x_min:x_max:200j, y_min:y_max:200j] Z = svm_.decision_function(np.c_[XX.ravel(), YY.ravel()]) Z = Z.reshape(XX.shape) plt.pcolormesh(XX, YY, Z > 0, cmap=plt.cm.Paired) plt.contour(XX, YY, Z, colors=['black', 'k', 'white'], linestyles=['--', '-', '--'], levels=[-.5, 0, .5]) # plot data plt.subplot(221) plt.title('data') plt.scatter(x=X_train[y_train == 1, 0], y=X_train[y_train == 1, 1], s=30, marker='o', color='red', zorder=10) plt.scatter(x=X_train[y_train == -1, 0], y=X_train[y_train == -1, 1], s=30, marker='x', color='blue', zorder=10) plt.xticks([]) plt.yticks([]) plt.xlim(x_min, x_max) plt.ylim(y_min, y_max) plt.savefig(r'./data/svm' + str(kernel) + '.jpg') plt.show()if __name__ == '__main__': bc()
运行结果
使用大圆圈圈出了支持向量,并且在每一个图下给出了支持向量的个数。
实验数据
-0.017612 14.053064 0-1.395634 4.662541 1-0.752157 6.538620 0-1.322371 7.152853 00.423363 11.054677 00.406704 7.067335 10.667394 12.741452 0-2.460150 6.866805 10.569411 9.548755 0-0.026632 10.427743 00.850433 6.920334 11.347183 13.175500 01.176813 3.167020 1-1.781871 9.097953 0-0.566606 5.749003 10.931635 1.589505 1-0.024205 6.151823 1-0.036453 2.690988 1-0.196949 0.444165 11.014459 5.754399 11.985298 3.230619 1-1.693453 -0.557540 1-0.576525 11.778922 0-0.346811 -1.678730 1-2.124484 2.672471 11.217916 9.597015 0-0.733928 9.098687 0-3.642001 -1.618087 10.315985 3.523953 11.416614 9.619232 0-0.386323 3.989286 10.556921 8.294984 11.224863 11.587360 0-1.347803 -2.406051 11.196604 4.951851 10.275221 9.543647 00.470575 9.332488 0-1.889567 9.542662 0-1.527893 12.150579 0-1.185247 11.309318 0-0.445678 3.297303 11.042222 6.105155 1-0.618787 10.320986 01.152083 0.548467 10.828534 2.676045 1-1.237728 10.549033 0-0.683565 -2.166125 10.229456 5.921938 1-0.959885 11.555336 00.492911 10.993324 00.184992 8.721488 0-0.355715 10.325976 0-0.397822 8.058397 00.824839 13.730343 01.507278 5.027866 10.099671 6.835839 1-0.344008 10.717485 01.785928 7.718645 1-0.918801 11.560217 0-0.364009 4.747300 1-0.841722 4.119083 10.490426 1.960539 1-0.007194 9.075792 00.356107 12.447863 00.342578 12.281162 0-0.810823 -1.466018 12.530777 6.476801 11.296683 11.607559 00.475487 12.040035 0-0.783277 11.009725 00.074798 11.023650 0-1.337472 0.468339 1-0.102781 13.763651 0-0.147324 2.874846 10.518389 9.887035 01.015399 7.571882 0-1.658086 -0.027255 11.319944 2.171228 12.056216 5.019981 1-0.851633 4.375691 1-1.510047 6.061992 0-1.076637 -3.181888 11.821096 10.283990 03.010150 8.401766 1-1.099458 1.688274 1-0.834872 -1.733869 1-0.846637 3.849075 11.400102 12.628781 01.752842 5.468166 10.078557 0.059736 10.089392 -0.715300 11.825662 12.693808 00.197445 9.744638 00.126117 0.922311 1-0.679797 1.220530 10.677983 2.556666 10.761349 10.693862 0-2.168791 0.143632 11.388610 9.341997 00.317029 14.739025 0
阅读全文
0 0
- sklearn之SVM二分类
- sklearn,SVM 和文本分类
- 利用sklearn 实现SVM分类
- sklearn之svm学习
- sklearn svm实现文本分类 入门
- sklearn之分类决策树
- sklearn学习之贝叶斯分类
- 【sklearn】svm
- sklearn:SVM
- svm入门之二、三线性分类器
- Python 之 sklearn 计算 SVM 隶属度
- SVM分类器-LS-SVM(二)
- SVM Classification python example using sklearn 分类例子
- 『sklearn学习』不同的 SVM 分类器
- 使用sklearn中svm做多分类时难点解惑
- scikit-learn svm初探 分类:机器学习 Sklearn
- sklearn学习笔记(3)svm多分类
- sklearn通过OneVsRestClassifier实现svm.SVC的多分类
- 近期活动盘点:工业大数据讲座、大数据自杀风险感知讲座、数据法学研讨会、海外学者短期讲学(12.3-12.13)
- 【正一专栏】世界杯十六强猜想
- Oracle
- activity_web_view.xml
- 仿摩拜单车APP(包括附近车辆、规划路径、行驶距离、行驶轨迹记录,导航等)
- sklearn之SVM二分类
- activity_main.xml
- 题库错题簿31—50
- 2
- 自顶向下认识redis
- 欢迎使用CSDN-markdown编辑器
- Windows平台使用Gitblit搭建Git服务器图文教程
- shape01.xml
- 20171203