SVM实战

SVM实战
浅发一下最近做的SVM练习

# 读取数据 ——> 数据预处理 ——> 划分测试集 ——> 训练模型 ——> 使用测试集测试效果 ——> 模型评价
import pandas as pd
import numpy as np
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split,GridSearchCV  # 划分训练集与测试集/进行模型训练,交叉验证cross valiation
from sklearn import svm
from sklearn.metrics import accuracy_score,f1_score,precision_score,recall_score
#  读取文件
data = pd.read_csv("arti_T1.csv", sep=",")
print(data)
X = np.array(data.drop('Class', axis=1))  # X代表前两列
Y = np.array(data['Class'])  # Y代表类别
print(X,Y)

# 数据预处理(标准化)
scaler = StandardScaler()
scaler.fit(X)
X_scaled = scaler.transform(X)
print(X_scaled)
print('=========================================================================================')

# 划分 训练集train 和 测试集test
X_train, X_test, Y_train, Y_test = train_test_split(
    X_scaled,Y, test_size=0.2, random_state=0
)

# 训练模型
parameters = {'C':list(2**np.array(range(-8,8), dtype = float)),
              'gamma':list(2**np.array(range(-2,3), dtype=float))}
svc = svm.SVC(kernel='rbf')  # 选择分类器RBF
clf = GridSearchCV(svc, parameters, cv=5)  # 进行5折交叉验证
clf.fit(X_train, Y_train)
best_C = clf.best_params_['C']
best_gamma = clf.best_params_['gamma']
print('C:', best_C)  # 参数C
print('γ:', best_gamma)  # 参数γ
print('train score:', clf.best_score_)  # 训练效果

# 使用测试集测试效果
svc_te = svm.SVC(kernel='rbf', C=best_C, gamma=best_gamma)  # 模型
te_model = svc_te.fit(X_train, Y_train)
yhat = svc_te.predict(X_test)
print(yhat)  # 类别预测结果:yhat

# 模型评估
print('Performance measures:')

accuracy = accuracy_score(Y_test, yhat)
print('Accuracy score={}'.format(accuracy))

precision = precision_score(Y_test, yhat)
print('Precision score={}'.format(precision))

recall = recall_score(Y_test, yhat)
print('Recall score={}'.format(recall))

f1 = f1_score(Y_test, yhat)
print('f1 score={}'.format(f1))

使用到的部分数据:
一共400条(https://img-blog.csdnimg.cn/dea85cd1edc14c0196b0d6d68bfcbbcc.png)

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值