使用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類是一個用來講資料進行歸一化和標準化的類。-計算訓練集的平均值和標準差,以便測試資料集使用相同的變換。
四、使用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)))
相關文章
- 基於sklearn的分類器實戰
- 【NLP】TensorFlow實現CNN用於文字分類(譯)CNN文字分類
- sklearn 細節 —— SGDClassifier、Perceptron(分類模型)模型
- 【NLP】TensorFlow實現CNN用於中文文字分類CNN文字分類
- 基於Pytorch實現貓狗分類PyTorch
- 『sklearn學習』不同的 SVM 分類器
- 教程 | 用Scikit-Learn實現多類別文字分類文字分類
- sklearn學習 第一篇:knn分類KNN
- torch--多層感知機實現影像分類
- Backblaze:機械硬碟5年故障率報告硬碟
- 如何基於TensorFlow使用LSTM和CNN實現時序分類任務CNN
- 整合學習(1)AdaBoost分別應用於分類和迴歸及其python實現Python
- 使用jupyter實現貓和狗的分類
- [譯] Sklearn 中的樸素貝葉斯分類器
- 機器學習|決策樹-sklearn實現機器學習
- 基於Sklearn機器學習程式碼實戰機器學習
- 用Python實現一個SVM分類器策略Python
- 基於Tensorflow + Opencv 實現CNN自定義影像分類OpenCVCNN
- 利用PDM實現機械製造業的資訊整合
- 6軸機械臂正逆解運算實現機械臂
- 基於支援向量機的文字分類文字分類
- Pytorch實現分類器PyTorch
- 機器學習實戰 | SKLearn最全應用指南機器學習
- 【機器學習】線性迴歸sklearn實現機器學習
- 使用ProxySQL實現MySQL Group Replication的故障轉移、讀寫分離(一)MySql
- 一個分數類的實現——Rational類
- php 分頁 分頁類 簡單實用PHP
- 運用sklearn進行主成分分析(PCA)程式碼實現PCA
- PHP無限級分類的實現(不使用遞迴)PHP遞迴
- 使用有限狀態機原理實現英文分詞分詞
- Bert文字分類實踐(一):實現一個簡單的分類模型文字分類模型
- PHP實現無限極分類PHP
- 通用mapper和分類實現APP
- 決策樹在sklearn中的實現
- 【機器學習】多項式迴歸sklearn實現機器學習
- JAVA的反射機制==>用反射分析類的實現Java反射
- 貝葉斯實現文字分類C++實現文字分類C++
- 運用sklearn進行線性判別分析(LDA)程式碼實現LDA