使用sklearn实现svm--用于机械故障分类

一、sklearn中svm的参数

clf = svm.SVC(C=1.0, kernel='linear', decision_function_shape='ovr')
  • C:惩罚参数。 默认值是1.0,C越大,相当于惩罚松弛变量,希望松弛变量接近0,即对误分类的惩罚增大,趋向于对训练集全分对的情况,这样对训练集测试时准确率很高,但容易过拟合,高方差,泛化能力弱。C值小,对误分类的惩罚减小,允许容错,将他们当成噪声点,泛化能力较强,但过小容易欠拟合,高偏差。
  • kernel:‘linear’:线性核函数
    ‘poly’:多项式核函数
    ‘rbf’:径像核函数/高斯核
    ‘sigmod’:sigmod核函数
  • decision_function_shape 用于svm的多分类,ovr为一对多
    方法
  • svc.fit(x,y)方法,用于训练svm
  • svc.predict(X)方法,基于以上的训练,对预测样本T进行类别预测,因此只需要接收一个测试集T,该函数返回一个数组表示个测试样本的类别。
  • svc.score(y_train, predict(x_train)) 返回给定测试数据和标签的平均精确度
  • svc.decision_function(X) 样本X到分离超平面的距离

二、svm用于多分类问题
在这里插入图片描述
svm解决的是二分类问题,要想让其应用于多分类问题可以有如下思路:
训练时依次把某个类别的样本归为一类,其他剩余的样本归为另一类,这样k个类别的样本就构造出了k个SVM。分类时将未知样本分类为具有最大分类函数值的那类。
比如说现在有5个类别,第一次将第一类作为正例,其余类别作为父类进行分类,这样便把第一类分出;
第二次将第二类和剩余3类分开,依次进行。
此法为一对多,one-versus-rest,本次实例中的decision_function_shape='ovr’就是使用的该方法

三、standardscaler
StandardScaler类是一个用来讲数据进行归一化和标准化的类。-计算训练集的平均值和标准差,以便测试数据集使用相同的变换。
四、sklearn的train_test_solit用法
在机器学习中,该函数可以按照用户设定的比例,随机将样本划分为训练集和测试集,并返回划分好的训练集数据和测试集数据
x_train,x_test,y_train,y_test=cross_validation.train_test_split(x,y,test_size,random_state)
在这里插入图片描述

四、使用svm进行故障分类实例

import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
from sklearn import svm
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from sklearn.preprocessing import StandardScaler

data = pd.read_csv('./train.csv',header=0)
label = np.array(data['label'])
train = data.iloc[:,1:-1]
train = abs(np.fft.fft(train)[:,:3001])/6000

d1 = np.array(data.iloc[1,1:-1])
n = len(d1)

yy = np.fft.fft(d1)
yy_ = yy[range(0,int(n/2))]
plt.plot(abs(yy_)/n)
plt.show()

x_train,x_test,y_train,y_test = train_test_split(train,label,random_state=1,train_size=0.7)
#train_test_split(待划分样本集合,待划分样本标签,train_size测试集和样本数目之比)

ss = StandardScaler()

x_train = ss.fit_transform(x_train)
x_test = ss.fit_transform(x_test)

clf = svm.SVC(C=1.0, kernel='linear', decision_function_shape='ovr')
#c为错误项的惩罚系数,kernel为算法中采用的核函数类型 linear为线性核函数
#decision_function_shape 构造多分类器的方法有两种 ovr为一对多比如说5类数据5个svm,第一次将第一类和其他4类分别作为正负样本分离

clf.fit(x_train,y_train)

print(clf.score(x_train,y_train))
print("训练集准确率:",accuracy_score(y_train,clf.predict(x_train)))
print("测试集准确率:",accuracy_score(y_test,clf.predict(x_test)))
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值