使用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的分類器實戰
- sklearn建模及評估(分類)
- 基於Pytorch實現貓狗分類PyTorch
- 機器學習|決策樹-sklearn實現機器學習
- 基於Sklearn機器學習程式碼實戰機器學習
- 整合學習(1)AdaBoost分別應用於分類和迴歸及其python實現Python
- 機器學習實戰 | SKLearn最全應用指南機器學習
- 【機器學習】線性迴歸sklearn實現機器學習
- 教程 | 用Scikit-Learn實現多類別文字分類文字分類
- 使用jupyter實現貓和狗的分類
- sklearn學習 第一篇:knn分類KNN
- Sklearn中的樸素貝葉斯分類器`
- torch--多層感知機實現影像分類
- 用Python實現一個SVM分類器策略Python
- 基於Tensorflow + Opencv 實現CNN自定義影像分類OpenCVCNN
- 【機器學習】多項式迴歸sklearn實現機器學習
- Pytorch實現分類器PyTorch
- [譯] Sklearn 中的樸素貝葉斯分類器
- Backblaze:2023硬碟實測故障率顯示SSD比機械硬碟更可靠硬碟
- 使用ProxySQL實現MySQL Group Replication的故障轉移、讀寫分離(一)MySql
- 通用mapper和分類實現APP
- Blackblaze:2018年度機械硬碟故障率報告硬碟
- sklearn中的pipeline實際應用
- 【機器學習】--xgboost初始之程式碼實現分類機器學習
- 機器學習之決策樹在sklearn中的實現機器學習
- 運用sklearn進行主成分分析(PCA)程式碼實現PCA
- php 分頁 分頁類 簡單實用PHP
- 機器學習之使用sklearn構建據類模型,並且評價模型機器學習模型
- 6軸機械臂正逆解運算實現機械臂
- SpringBoot應用使用自定義的ApplicationContext實現類Spring BootAPPContext
- 概率分類之樸素貝葉斯分類(垃圾郵件分類python實現)Python
- 機器學習Sklearn系列:(五)聚類演算法機器學習聚類演算法
- Backblaze:2018年Q1機械硬碟故障率報告硬碟
- 機械硬碟,使用注意事項硬碟
- 技術乾貨|如何實現分鐘級故障管理
- Bert文字分類實踐(一):實現一個簡單的分類模型文字分類模型
- PHP實現無限極分類PHP
- 運用sklearn進行線性判別分析(LDA)程式碼實現LDA