#coding = utf-8
import numpy as np
import pandas as pd
from sklearn.svm import SVC
from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import GridSearchCV, train_test_split
#加载数据集
def load_data(filename):
data = pd.read_csv(filename)
x = data.iloc[:, 2:] #数据特征
y = data.iloc[:, 1] #标签:0或1
scaler = StandardScaler()
x_std = scaler.fit_transform(x) # 标准化
# 将数据划分为训练集和测试集,test_size=.3表示30%的测试集
x_train, x_test, y_train, y_test = train_test_split(x_std, y, test_size=.3)
return x_train, x_test, y_train, y_test
def svm_c(x_train, x_test, y_train, y_test):
# rbf核函数,设置数据权重
svc = SVC(kernel='rbf', class_weight='balanced',)
c_range = np.logspace(-5, 15, 11, base=2) #构造等比数列:2的-5次方到2的15次方中均匀产生11个数
gamma_range = np.logspace(-9, 3, 13, base=2)
# 网格搜索交叉验证的参数范围,cv=3,3折交叉
param_grid = [{'kernel': ['rbf'], 'C': c_range, 'gamma': gamma_range}]
grid = GridSearchCV(svc, param_grid, cv=3, n_jobs=-1)
# #降维
# x_train = PCA(n_components=200).fit_transform(x_train)
# x_test = PCA(n_components=200).fit_transform(x_test)
# 训练模型
clf = grid.fit(x_train, y_train)
# 计算测试集精度
score = grid.score(x_test, y_test)
print('精度为%s' % score)
if __name__ == '__main__':
svm_c(*load_data(r'F:\t\test\2000_data.csv'))
构建SVM模型
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
相关阅读更多精彩内容
- 【火炉炼AI】机器学习014-用SVM构建非线性分类模型 (本文所使用的Python库和版本号: Python 3...
- 编程环境: anaconda + python3.7完整代码及数据已经更新至GitHub,欢迎fork~GitHu...
- 05 SVM - 支持向量机 - 概念、线性可分 三、线性可分SVM算法流程 输入线性可分的m个样本数据{(x1,...
- 关于这个问题我今天正好看到了这个文章。讲的正是各个算法的优劣分析,很中肯。https://zhuanlan.zhi...