SVM(Support Vector Machines)支持向量机
一、什么是SVM?他是个有监督的机器学习算法,和KNN一样可用于分类和回归分析,最主要是用在分类问题中。在这个算法中,更具特征值,构建n维空间(其中n即是特征的数量),吧每个数据投影到此空间内。
二、数据如何分类?通过查找一个超平面,把数据区分为两类。换句话说,算法输出一个最佳超平面,用于数据分类
三、什么是最佳超平面
对SVM来说,它指的是距离两类数据最远的一个超平面。即是,此超平面到最近元素的距离最远
代码实现:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
#导入数据集
df = pd.read_csv(‘C:\Users\Administrator\Desktop\ml 100day\Social_Network_Ads.csv’)
df.head()
#数据无异常值
#划分XY
X = df.iloc[:,[2,3]].values
Y = df.iloc[:,4].values
#测试集训练集拆封、
from sklearn.model_selection import train_test_split
X_train,X_test,Y_train,Y_test = train_test_split(X,Y,test_size=0.25,random_state=0)
#数据归一化(特征缩放)
from sklearn.preprocessing import StandardScaler
#创建对象
ss = StandardScaler()
X_train = ss.fit_transform(X_train)
X_test = ss.transform(X_test) #此处必须是transform
#创建SVN对象
from sklearn.svm import SVC
classifier = SVC(kernel=‘linear’,random_state=0)
classifier.fit(X_train,Y_train)
#predict result
y_pred = classifier.predict(X_test)
#使用混淆矩阵完成
from sklearn.metrics import confusion_matrix
cm = confusion_matrix(Y_test,y_pred)
结果:
array([[57, 1],
[ 6, 16]], dtype=int64)
**精确率:57/(57+6)= 0.904
准确率: 57/(57+1)=0.982
召回率: (57+16)/(57+16+1+6)=0.912**