使用sklearn實現svm 用於機械故障分類

2021-10-10 07:46:25 字數 2434 閱讀 9835

一、sklearn中svm的引數

clf = svm.svc(c=1.0, kernel='linear', decision_function_shape='ovr')
二、svm用於多分類問題

svm解決的是二分類問題,要想讓其應用於多分類問題可以有如下思路:

訓練時依次把某個類別的樣本歸為一類,其他剩餘的樣本歸為另一類,這樣k個類別的樣本就構造出了k個svm。分類時將未知樣本分類為具有最大分類函式值的那類。

比如說現在有5個類別,第一次將第一類作為正例,其餘類別作為父類進行分類,這樣便把第一類分出;

第二次將第二類和剩餘3類分開,依次進行。

此法為一對多,one-versus-rest,本次例項中的decision_function_shape='ovr』就是使用的該方法

三、standardscaler

standardscaler類是乙個用來講資料進行歸一化和標準化的類。-計算訓練集的平均值和標準差,以便測試資料集使用相同的變換。

四、sklearn的train_test_solit用法

在機器學習中,該函式可以按照使用者設定的比例,隨機將樣本劃分為訓練集和測試集,並返回劃分好的訓練集資料和測試集資料

四、使用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)

))

SVM簡單分類的使用 sklearn機器學習

sklearn 庫中匯入 svm 模組 from sklearn import svm 定義三個點和標籤 x 2,0 1,1 2,3 y 0,0,1 定義分類器,clf 意為 classifier,是分類器的傳統命名 clf svm.svc kernel linear svc 就是 svm 的方程,...

用sklearn中的SVM畫資料的分類面

參考部落格 所用資料如下 如下,有詳細注釋 from sklearn import svm import numpy as np import matplotlib.pyplot as plt dataset np.array 1,2,1 2,3,1 3,3,1 2,1,1 3,2,1 x trai...

sklearn簡單實現鳶尾花例項svm分類器

import numpy as np import pandas as pd import matplotlib.pyplot as plt from sklearn import datasets 一 資料的獲取 iris datasets.load iris df pd.dataframe ir...