【发布时间】:2021-04-25 10:49:35
【问题描述】:
我正在使用带有“线性”内核的支持向量机 (SVM) 进行多分类。但是,准确度非常低。能不能提高准确率?
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score,classification_report,confusion_matrix
from sklearn.svm import SVC
#Prepare data for SVM
Diabetes_SVM = Diabetes2[['metformin','repaglinide','nateglinide','chlorpropamide','glimepiride','acetohexamide', 'glipizide', 'glyburide','troglitazone', 'tolazamide', 'examide','citoglipton', 'insulin']]
#Create dummy variables
nominal = ['metformin','repaglinide','nateglinide','chlorpropamide','glimepiride','acetohexamide', 'glipizide', 'glyburide',
'tolbutamide', 'pioglitazone', 'rosiglitazone', 'acarbose', 'miglitol', 'troglitazone', 'tolazamide', 'examide',
'citoglipton']
Diabetes_SVM = pd.get_dummies(Diabetes_SVM,columns=nominal)
#Map data for SVM
Diabetes_SVM['insulin']=Diabetes_SVM['insulin'].map({'Down': 1,'No': 2,
'Steady': 3,'Up': 4})
#Defining features and target variable for SVM
X_SVM = Diabetes_SVM.drop('insulin', axis=1).values
y_SVM = Diabetes_SVM['insulin'].values
#Split dataset into training set and test set for SVM
X_train, X_test, y_train, y_test = train_test_split(X_SVM, y_SVM, test_size=0.30, random_state=42)
#Fit SVC Class
svclassifier = SVC(kernel='linear')
svclassifier.fit(X_train, y_train)
#Making Predictions
y_pred = svclassifier.predict(X_test)
print(confusion_matrix(y_test,y_pred))
print(classification_report(y_test,y_pred))
我已经尝试过使用线性分类器的 SVM,其准确度仅为 0.47。如何调整精度?
【问题讨论】:
-
训练集有多大?不平衡吗?
-
svclassifier = SVC(kernel='linear') 。您正在使用线性内核。
-
训练集大约有 68637 条记录。我试着检查一下。
标签: python machine-learning scikit-learn svm