SVM算法项目实践---波士顿房价回归分析

2020-09-28  本文已影响0人  一只怂货小脑斧

引言

采用波士顿房价数据,因为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

注释:

《Sklearn之数据预处理——StandardScaler》

上一篇 下一篇

猜你喜欢

热点阅读