引言
采用波士顿房价数据,因为SVM算法对数据预处理 要求较高,房价数据特征量级差异大,因此需要进行预处理
代码
#SVM实例---波士顿房价回归分析
#
import numpy as np
import matplotlib.pyplot as plt
from sklearn import svm
from sklearn.datasets import load_boston #导入波士顿房价数据集
from sklearn.model_selection import train_test_split #切分训练集和测试集
from sklearn.preprocessing import StandardScaler #预处理
boston = load_boston()
#打印数据集中的键
print(boston.keys()) #target是业主自住房屋价格的中位数
X, y = boston.data, boston.target
#拆分训练集和数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=8)
#对训练集和测试集进行数据预处理
scaler = StandardScaler()
scaler.fit(X_train)
X_train_scaled = scaler.transform(X_train)
X_test_scaled = scaler.transform(X_test)
#训练模型
for kernal in ['linear', 'rbf']:
svr = svm.SVR(kernel=kernal)
svr.fit(X_train_scaled, y_train)
print('>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
print('数据预处理后',kernal,' 核函数的模型训练集得分:{:.3f}'.format(svr.score(X_train_scaled, y_train)))
print('数据预处理后',kernal,' 核函数的模型测试集得分:{:.3f}'.format(svr.score(X_test_scaled, y_test)))
#调节参数
if kernal == 'rbf':
svr1 = svm.SVR(kernel=kernal, C=100, gamma=0.1)
svr1.fit(X_train_scaled, y_train)
print('数据预处理后', kernal, ' 核函数调参后,模型训练集得分:{:.3f}'.format(svr1.score(X_train_scaled, y_train)))
print('数据预处理后', kernal, ' 核函数调参后,模型测试集得分:{:.3f}'.format(svr1.score(X_test_scaled, y_test)))
执行结果
dict_keys(['data', 'target', 'feature_names', 'DESCR'])
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
数据预处理后 linear 核函数的模型训练集得分:0.705
数据预处理后 linear 核函数的模型测试集得分:0.698
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
数据预处理后 rbf 核函数的模型训练集得分:0.665
数据预处理后 rbf 核函数的模型测试集得分:0.694
数据预处理后 rbf 核函数调参后,模型训练集得分:0.966
数据预处理后 rbf 核函数调参后,模型测试集得分:0.894
注释:
网友评论