文章目录
前言
随着互联网进步,人工智能日益火热,机器学习也逐渐映入人们的眼帘。题主所理解的机器学习首先是依靠大量真实的历史数据,将这些数据训练出一个模型,从而达到可以对未知数据的预测和分类的效果。
要说当今流行的机器学习算法,首当其冲的也就属逻辑回归、线性回归、决策树、支持向量机以及集成学习了。今天题主记录的是题主在使用支持向量机的时候出现的一些不易察觉的问题。
一、SVM基础知识?
支持向量机(SVM)它是一种机器学习二分类算法,它将数据映射为特征空间中的一些点,SVM 要做的就是要画出一条直线线,能最大限度划分在特征空间的特征点。这个能最大限度划分特征点的线就是我们训练出来的模型。有了这条线,以后有了未知的数据,也可以根据模型线达到分类的效果。而本身SVM内部原理也是非常复杂的,这里也不在讲一些复杂的数学原理了。
一、python实现SVM分类
python内部有封装的SVM库。我们直接导包使用即可。
1.导入SVM库
import pandas as pd
from sklearn.model_selection import train_test_split #数据集切割
from sklearn.svm import SVC #支持向量机
import warnings #忽略警告提示
warnings.filterwarnings('ignore')
2.调用支持向量机包
#切割数据
train_x,test_x,train_y,test_y=train_test_split(train_size=0.8,test_size=0.2,random_state=0)
#引入SVM并训练
svm=SVC()
svm.fit(train_x,train_y)
#使用测试集进行预测
test_pre=svm.predict(test_x)
#输出预测测试集结果
print(test_pre)
#输出真实测试集结果
print(test_y)
最后的test_pre是我们模型预测出来的结果,test_y则是上面代码中使用train_test_split切出来的真实结果。我们可以全部输出比对一下。这里有一个非常重要的点,也就是我为什么要记录下来这个问题原因。注意看使用SVM训练时,我们需要放入训练集和训练集标签,这个标签数据是有1有0的数据,题主出现的问题是全放一类的标签数据,导致学习器学习不到全部标签的数据特征,遇到未知数据时,学习器只能预测它学习到的某类结果,这样就失去了原本预测分类的意义。
以上的问题,特此记录!!!
总结
本篇文章主要记录了使用python内置包的时候,需要传入两类(0,1)标签数据,否则就失去了原本的意义。