import numpy as np
from matplotlib import pyplot as plt
import matplotlib as mpl
from sklearn.model_selection import train_test_split
from sklearn import preprocessing
from sklearn import svm # 支持向量机库
from sklearn.svm import SVC # (分类)
from sklearn.svm import SVR # (回归)
X = np.array([[ 1.9643, 4.5957 ], [ 2.2753, 3.8589 ], [ 2.9781, 4.5651 ], [ 2.932, 3.5519 ],
[ 3.5772, 2.856 ], [ 4.015, 3.1937 ], [ 3.3814, 3.4291 ], [ 3.9113, 4.1761 ],
[ 2.7822, 4.0431 ], [ 2.5518, 4.6162 ], [ 3.3698, 3.9101 ], [ 3.1048, 3.0709 ],
[ 1.9182, 4.0534 ], [ 2.2638, 4.3706 ], [ 2.6555, 3.5008 ], [ 3.1855, 4.2888 ],
[ 3.6579, 3.8692 ], [ 3.9113, 3.4291 ], [ 3.6002, 3.1221 ], [ 3.0357, 3.3165 ],
[ 1.5841, 3.3575 ], [ 2.0103, 3.2039 ], [ 1.9527, 2.7843 ], [ 2.2753, 2.7127 ],
[ 2.3099, 2.9584 ], [ 2.8283, 2.6309 ], [ 3.0473, 2.2931 ], [ 2.4827, 2.0373 ],
[ 2.5057, 2.3853 ], [ 1.8721, 2.0577 ], [ 2.0103, 2.3546 ], [ 1.2269, 2.3239 ],
[ 1.8951, 2.9174 ], [ 1.561, 3.0709 ], [ 1.5495, 2.6923 ], [ 1.6878, 2.4057 ],
[ 1.4919, 2.0271 ], [ 0.962, 2.682 ], [ 1.1693, 2.9276 ], [ 0.8122, 2.9992 ],
[ 0.9735, 3.3881 ], [ 1.25, 3.1937 ], [ 1.3191, 3.5109 ], [ 2.2292, 2.201 ],
[ 2.4482, 2.6411 ], [ 2.7938, 1.9656 ], [ 2.091, 1.6177 ], [ 2.5403, 2.8867 ],
[ 0.9044, 3.0198 ], [ 0.76615, 2.5899 ], [ 0.086405, 4.1045 ]])
Y = np.array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1])
#SVM分类
model =SVC(C=1.0, kernel='linear')
model.fit(X,Y)
w = model.coef_ #系数
print(w)
print(w[0,0])
b = model.intercept_ #截距
#求决策分界线
xp = np.linspace(np.min(X[:, 0]), np.max(X[:, 0]), 100)
yp = -(w[0, 0] * xp + b) / w[0, 1]
#显示分类结果(决策分界线)
plt.figure()
plt.plot(np.ravel(X[Y == 1, 0]), np.ravel(X[Y == 1, 1]), 'ro', markersize=6)
plt.plot(np.ravel(X[Y == 0, 0]), np.ravel(X[Y == 0, 1]), 'gs', markersize=6)
plt.legend( ["Y=1", "Y=0"], loc='lower right')
plt.plot(xp, yp, 'r-', linewidth=4.0)
plt.grid(True);plt.show()
支持向量机[线性可分]——机器学习
最新推荐文章于 2024-09-12 20:06:16 发布
该代码示例展示了如何使用Python的scikit-learn库实现支持向量机(SVM)进行二分类任务。通过训练数据集,应用线性核函数的SVM模型被训练,并计算出决策边界。可视化结果用红色表示类别1,绿色表示类别0,以及分类的决策边界。
摘要由CSDN通过智能技术生成