支持向量机回归模型及其应用
任务描述
本关任务:基于关卡6的数据集,构建支持向量机回归模型,输出其拟合优度,并针对测试数据AT=28.4、V=50.6、AP=1011.9、RH=80.54,预测其PE值。(备注:需对采用的核函数进行说明,比如高斯核、线性核、多项式核或者sigmoid核等)
# -*- coding: utf-8 -*-
#基于上一关的数据集,构建支持向量机回归模型(采用线性核函数),返回计算结果模型的拟合优度r,
#并针对测试数据AT=28.4、V=50.6、AP=1011.9、RH=80.54,预测其PE值。
def return_values():
import numpy as np
import pandas as pd
from sklearn import svm
data=pd.read_excel('发电场数据.xlsx')
x=data.iloc[:,0:4].values
y=data.iloc[:,4].values
kernel = ['linear','poly','rbf','sigmoid']
list1 = [] #保存针对训练数据获得的模型准确度
list2 = [] #保存预测值
for i in kernel:
clf = svm.SVR(kernel=i)
clf.fit(x, y)
x1 = np.array([28.4,50.6,1011.9,80.54]).reshape(1,4)
list1.append(clf.score(x,y))
list2.append(clf.predict(x1))
result = {'核函数':kernel,'模型准确度':list1,'预测值':list2}
result = pd.DataFrame(result)
r=result['模型准确度'].max()
PE=result['预测值'].min()
return(r,PE)
支持向量机分类模型及其应用
任务描述
本关任务:基于关卡2基础上,取数据集前600条记录作为训练数据,后90条记录作为测试数据,构建支持向量机模型,输出其模型准确率和预测准确率。
#********** Begin **********#
#在上一关基础,对经过缺失值填充、数值变量标准化后的数据集,取前600条记录作为训练数据,后90条记录作为测试数据
#构建支持向量机模型,返回计算结果模型准确率rv和预测准确率r
def return_values():
import numpy as np
X1=np.load('X1.npy') #经过缺失值填充、数值变量标准化后的数据集,numpy数组690*15
Y=np.load('Y.npy') #因变量,numpy数组,690个元素
from sklearn.svm import SVC
x1 = X1[:600, :]
y1 = Y[:600]
x2 = X1[600:, :]
y2 = Y[600:]
clf = SVC(kernel='rbf')
clf.fit(x1, y1)
rv = clf.score(x1, y1)
r = clf.score(x2, y2)
return(rv,r)
#********** End **********#
from sklearn import svm # 加载sklearn库来调用svm算法
from sklearn.datasets import load_iris #加载sklearn库中的数据集
from sklearn.model_selection import train_test_split #划分测试集训练集
基于支持向量机模型的应用案例
#1.加载数据集
################# Begin #################
datas = load_iris()
################# End #################
data_x = datas.data #定义数据
data_y = datas.target #定义标签
#2.划分训练集和测试集
################# Begin #################
x_train,x_test,y_train,y_test = train_test_split(data_x,data_y,test_size=0.3)
################# End #################
#3.调用svm函数
################# Begin #################
from sklearn import svm;
clf = svm.SVC();
################# End #################
clf = clf.fit(x_train,y_train) #开始训练svm模型
a = clf.predict(x_test) #开始测试
cnt = 0
for i in range(len(y_test)): #评价预测的结果
if a[i] == y_test[i]:
cnt +=1
print(cnt/len(a))
第1关:支持向量机算法详解
什么是支持向量机?
A、
支持向量机是一种用于分类和回归的监督学习算法,目的是在特征空间中找到间隔最大的超平面。
B、
支持向量机是一种快速可靠的机器学习线性分类器,能在有限的数据量下达到很好的性能。
C、
SVM算法的原理就是找到一个分割超平面,它能把数据正确的分类,并且间距最大。
2、
支持向量机包含哪几种模型?
A、
硬间隔支持向量机
B、
软间隔支持向量机
C、
非线性支持向量机
3、
SVM是否只能处理二分类任务?
B、
否
4、
为什么引入核函数?
A、
SVM核函数的引用主要将非线性分类问题转换为线性分类问题
5、
SVM有哪些核函数?
A、
线性核函数
B、
多项式核函数
C、
高斯核函数
第1关:支持向量机简介
训练SVM的最小时间复杂度为O(n2),那么一下哪种数据集不适合用SVM?
A、
大数据集
支持向量是那些最接近决策平面的数据点。
A、对
SVM在下列那种情况下表现糟糕:
C、含噪声数据与重叠数据点
如果我使用数据集的全部特征并且能够达到100%的准确率,但在测试集上仅能达到70%左右,这说明:
C、
过拟合
如果使用较小的C(C趋于0),则:
A、误分类
利用sklearn构建支持向量机模型