快速入门Python机器学习(16)

简介: 快速入门Python机器学习(16)

8.4 SVR


8.4.1 SVR类参数、属性和方法



class sklearn.svm.SVR(*, kernel='rbf', degree=3, gamma='scale', coef0=0.0, tol=0.001, C=1.0, epsilon=0.1, shrinking=True, cache_size=200, verbose=False, max_iter=- 1)


参数

属性

类型

解释

C

float, default=1.0

正则化参数。正则化的强度与C成反比,必须是严格正的。惩罚是l2惩罚的平方。

kernel

{'linear', 'poly', 'rbf', 'sigmoid', 'precomputed'}, default='rbf'

指定要在算法中使用的内核类型。它必须是'linear''poly',' sigmoid','precomputed''callable'之一。如果没有给出,则使用'rbf'。如果给定了一个可调用函数,它将用于预计算内核矩阵。

gamma

{'scale', 'auto' or float, default='scale'

'rbf','poly''sigmoid'的核系数。如果gamma='scale '(默认值)被传递,那么它使用1 / (n_features * X.var())作为gamma的值,如果'auto',则使用1 / n_features


属性

属性

解释

class_weight_

ndarray of shape (n_classes,)

coef_

ndarray of shape (1, n_features)

dual_coef_

ndarray of shape (1, n_SV)

fit_status_

int

intercept_

ndarray of shape (1,)

n_support_

ndarray of shape (n_classes,), dtype=int32

shape_fit_

tuple of int of shape (n_dimensions_of_X,)

support_

ndarray of shape (n_SV,)

support_vectors_

ndarray of shape (n_SV, n_features)


方法

fit(X, y[, sample_weight])

根据给定的训练数据拟合SVM模型。

get_params([deep])

获取此估计器的参数。

predict(X)

X中的样本执行回归。

score(X, y[, sample_weight])

返回预测的确定系数R2

set_params(**params)

设置此估计器的参数。


8.4.2 分析make_regression无噪音

def SVR_for_make_regression():
       myutil = util()
       X,y = make_regression(n_samples=100,n_features=1,n_informative=2,random_state=8)
       X_train,X_test,y_train,y_test = train_test_split(X, y, random_state=8,test_size=0.3)
       clf = SVR().fit(X,y)
       title = "make_regression SVR ()回归线(无噪音)"
       myutil.print_scores(clf,X_train,y_train,X_test,y_test,title)
       myutil.draw_line(X[:,0],y,clf,title)
       myutil.plot_learning_curve(SVR(),X,y,title)
       myutil.show_pic(title)


输出

make_regression LinearRegression()回归线(无噪音):
33.56%
make_regression LinearRegression()回归线(无噪音):
41.08%

image.png

image.png


结果非常糟糕


8.4.3 分析make_regression有噪音

def SVR_for_make_regression_add_noise():
       myutil = util()
       X,y = make_regression(n_samples=100,n_features=1,n_informative=2,noise=50,random_state=8)
       X_train,X_test,y_train,y_test = train_test_split(X, y, random_state=8,test_size=0.3)
       clf = SVR().fit(X,y)
       title = "make_regression SVR ()回归线(有噪音)"
       myutil.print_scores(clf,X_train,y_train,X_test,y_test,title)
       myutil.draw_line(X[:,0],y,clf,title)
       myutil.plot_learning_curve(SVR(),X,y,title)
       myutil.show_pic(title)


输出

make_regression LinearRegression()回归线(有噪音):
18.74%
make_regression LinearRegression()回归线(有噪音):
18.98%

image.png

image.png

结果更加糟糕


8.4.4 SVR分析波士顿房价数据

def SVR_for_boston():
       myutil = util()
       boston = datasets.load_boston()
       X,y = boston.data,boston.target
       X_train,X_test,y_train,y_test = train_test_split(X, y, random_state =8)
       for kernel in ['linear','rbf','sigmoid','poly']:
              svr = SVR(kernel=kernel)
              svr.fit(X_train,y_train)
              title = "SVR kernel=:"+kernel+"(预处理前)"
              myutil.print_scores(svr,X_train,y_train,X_test,y_test,title)
       scaler = StandardScaler()
       scaler.fit(X_train)
       X_train_scaler = scaler.transform(X_train)
       X_test_scaler = scaler.transform(X_test)
       for kernel in ['linear','rbf','sigmoid','poly']:
              svr = SVR(kernel=kernel)
              svr.fit(X_train_scaler,y_train)
              title = "SVR kernel=:"+kernel+"(预处理后)"
              myutil.print_scores(svr,X_train_scaler,y_train,X_test_scaler,y_test,title)


输出

SVR kernel=:linear(预处理前):
70.88%
SVR kernel=:linear(预处理前):
69.64%
SVR kernel=:rbf(预处理前):
19.20%
SVR kernel=:rbf(预处理前):
22.23%
SVR kernel=:sigmoid(预处理前):
5.94%
SVR kernel=:sigmoid(预处理前):
7.53%
SVR kernel=:poly(预处理前):
19.50%
SVR kernel=:poly(预处理前):
20.70%
SVR kernel=:linear(预处理后):
70.56%
SVR kernel=:linear(预处理后):
69.84%
SVR kernel=:rbf(预处理后):
66.50%
SVR kernel=:rbf(预处理后):
69.46%
SVR kernel=:sigmoid(预处理后):
56.44%
SVR kernel=:sigmoid(预处理后):
63.41%
SVR kernel=:poly(预处理后):
68.60%
SVR kernel=:poly(预处理后):
62.33%


kernel

linear

rbf      

sigmoid

poly

预处理前

70.88%/69.64%

19.20%/22.23%

5.94%/7.53%

19.50%/20.70%

预处理后

70.56%/69.84%

66.50%/69.46%

56.44%/63.41%

68.60%/62.33%


可见,除了linear,预处理后的得分远远高于处理前。scaler = StandardScaler()我们以前介绍过。

def SVR_for_boston_for_gamma():
       myutil = util()
       boston = datasets.load_boston()
       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_scaler = scaler.transform(X_train)
       X_test_scaler = scaler.transform(X_test)
       for kernel in ['linear','rbf','sigmoid','poly']:
                for gamma in ['scale', 'auto',0.1,0.01,0.001]:
                        svr = SVR(kernel=kernel)
                        svr.fit(X_train_scaler,y_train)
                        title = "SVR kernel=:"+kernel+",gamma="+str(gamma) 
                        myutil.print_scores(svr,X_train_scaler,y_train,X_test_scaler,y_test,title)
                        #myutil.plot_learning_curve(SVR(kernel=kernel),X,y,title)
                        #myutil.show_pic(title)输出


由于画图很花时间,这里不画了


输出

SVR kernel=:linear,gamma=scale:
70.56%
SVR kernel=:linear,gamma=scale:
69.84%
SVR kernel=:linear,gamma=auto:
70.56%
SVR kernel=:linear,gamma=auto:
69.84%
SVR kernel=:linear,gamma=0.1:
70.56%
SVR kernel=:linear,gamma=0.1:
69.84%
SVR kernel=:linear,gamma=0.01:
70.56%
SVR kernel=:linear,gamma=0.01:
69.84%
SVR kernel=:linear,gamma=0.001:
70.56%
SVR kernel=:linear,gamma=0.01:
69.84%
SVR kernel=:linear,gamma=0.001:
70.56%
SVR kernel=:linear,gamma=0.001:
69.84%
SVR kernel=:rbf,gamma=scale:
66.50%
SVR kernel=:rbf,gamma=scale:
69.46%
SVR kernel=:rbf,gamma=auto:
66.50%
SVR kernel=:rbf,gamma=auto:
69.46%
SVR kernel=:rbf,gamma=0.1:
64.18%
SVR kernel=:rbf,gamma=0.1:
66.96%
SVR kernel=:rbf,gamma=0.01:
56.81%
SVR kernel=:rbf,gamma=0.01:
60.37%
SVR kernel=:rbf,gamma=0.001:
22.75%
SVR kernel=:rbf,gamma=0.001:
24.48%
SVR kernel=:sigmoid,gamma=scale:
56.44%
SVR kernel=:sigmoid,gamma=scale:
63.41%
SVR kernel=:sigmoid,gamma=auto:
56.44%
SVR kernel=:sigmoid,gamma=auto:
63.41%
SVR kernel=:sigmoid,gamma=0.1:
35.92%
SVR kernel=:sigmoid,gamma=0.1:
39.85%
SVR kernel=:sigmoid,gamma=0.01:
49.05%
SVR kernel=:sigmoid,gamma=0.01:
52.26%
SVR kernel=:sigmoid,gamma=0.001:
13.84%
SVR kernel=:sigmoid,gamma=0.001:
14.82%
SVR kernel=:poly,gamma=scale:
68.60%
SVR kernel=:poly,gamma=scale:
62.33%
SVR kernel=:poly,gamma=auto:
68.60%
SVR kernel=:poly,gamma=auto:
62.33%
SVR kernel=:poly,gamma=0.1:
76.02%
SVR kernel=:poly,gamma=0.1:
63.72%
SVR kernel=:poly,gamma=0.01:
1.59%
SVR kernel=:poly,gamma=0.01:
1.03%
SVR kernel=:poly,gamma=0.001:
-2.36%
SVR kernel=:poly,gamma=0.001:
-2.66%


8.4.5 SVR分析糖尿病数据

#分析糖尿病数据
def SVR_for_diabetes_for_gamma():
       myutil = util()
       diabetes = datasets.load_diabetes()
       X,y = diabetes.data,diabetes.target
       X_train,X_test,y_train,y_test = train_test_split(X, y, random_state =8)
       for kernel in ['linear','rbf','sigmoid','poly']:
              for gamma in ['scale', 'auto',0.1,0.01,0.001]:
                     svr = SVR(kernel=kernel,gamma=gamma)
                     svr.fit(X_train,y_train)
                     title = "SVR kernel=:"+kernel+",gamma="+str(gamma)
                     myutil.print_scores(svr,X_train,y_train,X_test,y_test,title)


输出

SVR kernel=:linear,gamma=scale:
-0.89%
SVR kernel=:linear,gamma=scale:
0.35%
SVR kernel=:linear,gamma=auto:
-0.89%
SVR kernel=:linear,gamma=auto:
0.35%
SVR kernel=:linear,gamma=0.1:
-0.89%
SVR kernel=:linear,gamma=0.1:
0.35%
SVR kernel=:linear,gamma=0.01:
-0.89%
SVR kernel=:linear,gamma=0.01:
0.35%
SVR kernel=:linear,gamma=0.001:
-0.89%
SVR kernel=:linear,gamma=0.001:
0.35%
SVR kernel=:rbf,gamma=scale:
18.30%
SVR kernel=:rbf,gamma=scale:
15.14%
SVR kernel=:rbf,gamma=auto:
-2.94%
SVR kernel=:rbf,gamma=auto:
-1.77%
SVR kernel=:rbf,gamma=0.1:
-2.94%
SVR kernel=:rbf,gamma=0.1:
-1.77%
SVR kernel=:rbf,gamma=0.01:
-3.18%
SVR kernel=:rbf,gamma=0.01:
-2.07%
SVR kernel=:rbf,gamma=0.001:
-3.20%
SVR kernel=:rbf,gamma=0.001:
-2.10%
SVR kernel=:sigmoid,gamma=scale:
37.86%
SVR kernel=:sigmoid,gamma=scale:
38.36%
SVR kernel=:sigmoid,gamma=auto:
-3.07%
SVR kernel=:sigmoid,gamma=auto:
-1.94%
SVR kernel=:sigmoid,gamma=0.1:
-3.07%
SVR kernel=:sigmoid,gamma=0.1:
-1.94%
SVR kernel=:sigmoid,gamma=0.01:
-3.19%
SVR kernel=:sigmoid,gamma=0.01:
-2.09%
SVR kernel=:sigmoid,gamma=0.001:
-3.20%
SVR kernel=:sigmoid,gamma=0.001:
-2.10%
SVR kernel=:poly,gamma=scale:
23.87%
SVR kernel=:poly,gamma=scale:
31.86%
SVR kernel=:poly,gamma=auto:
-3.20%
SVR kernel=:poly,gamma=auto:
-2.10%
SVR kernel=:poly,gamma=0.1:
-3.20%
SVR kernel=:poly,gamma=0.1:
-2.10%
SVR kernel=:poly,gamma=0.01:
-3.20%
SVR kernel=:poly,gamma=0.01:
-2.10%
SVR kernel=:poly,gamma=0.001:
-3.20%
SVR kernel=:poly,gamma=0.001:
-2.10%


分数很低,即使进行预处理,也没有用

目录
相关文章
|
8月前
|
机器学习/深度学习 算法 Python
机器学习特征筛选:向后淘汰法原理与Python实现
向后淘汰法(Backward Elimination)是机器学习中一种重要的特征选择技术,通过系统性地移除对模型贡献较小的特征,以提高模型性能和可解释性。该方法从完整特征集出发,逐步剔除不重要的特征,最终保留最具影响力的变量子集。其优势包括提升模型简洁性和性能,减少过拟合,降低计算复杂度。然而,该方法在高维特征空间中计算成本较高,且可能陷入局部最优解。适用于线性回归、逻辑回归等统计学习模型。
335 7
|
6月前
|
机器学习/深度学习 人工智能 算法
Scikit-learn:Python机器学习的瑞士军刀
想要快速入门机器学习但被复杂算法吓退?本文详解Scikit-learn如何让您无需深厚数学背景也能构建强大AI模型。从数据预处理到模型评估,从垃圾邮件过滤到信用风险评估,通过实用案例和直观图表,带您掌握这把Python机器学习的'瑞士军刀'。无论您是AI新手还是经验丰富的数据科学家,都能从中获取将理论转化为实际应用的关键技巧。了解Scikit-learn与大语言模型的最新集成方式,抢先掌握机器学习的未来发展方向!
987 12
Scikit-learn:Python机器学习的瑞士军刀
|
5月前
|
Linux 数据库 数据安全/隐私保护
Python web Django快速入门手册全栈版,共2590字,短小精悍
本教程涵盖Django从安装到数据库模型创建的全流程。第一章介绍Windows、Linux及macOS下虚拟环境搭建与Django安装验证;第二章讲解项目创建、迁移与运行;第三章演示应用APP创建及项目汉化;第四章说明超级用户创建与后台登录;第五章深入数据库模型设计,包括类与表的对应关系及模型创建步骤。内容精炼实用,适合快速入门Django全栈开发。
236 1
|
9月前
|
机器学习/深度学习 数据可视化 算法
Python与机器学习:使用Scikit-learn进行数据建模
本文介绍如何使用Python和Scikit-learn进行机器学习数据建模。首先,通过鸢尾花数据集演示数据准备、可视化和预处理步骤。接着,构建并评估K近邻(KNN)模型,展示超参数调优方法。最后,比较KNN、随机森林和支持向量机(SVM)等模型的性能,帮助读者掌握基础的机器学习建模技巧,并展望未来结合深度学习框架的发展方向。
Python与机器学习:使用Scikit-learn进行数据建模
|
8月前
|
机器学习/深度学习 数据可视化 TensorFlow
Python 高级编程与实战:深入理解数据科学与机器学习
本文深入探讨了Python在数据科学与机器学习中的应用,介绍了pandas、numpy、matplotlib等数据科学工具,以及scikit-learn、tensorflow、keras等机器学习库。通过实战项目,如数据可视化和鸢尾花数据集分类,帮助读者掌握这些技术。最后提供了进一步学习资源,助力提升Python编程技能。
|
8月前
|
机器学习/深度学习 数据可视化 算法
Python 高级编程与实战:深入理解数据科学与机器学习
在前几篇文章中,我们探讨了 Python 的基础语法、面向对象编程、函数式编程、元编程、性能优化和调试技巧。本文将深入探讨 Python 在数据科学和机器学习中的应用,并通过实战项目帮助你掌握这些技术。
|
机器学习/深度学习 存储 搜索推荐
利用机器学习算法改善电商推荐系统的效率
电商行业日益竞争激烈,提升用户体验成为关键。本文将探讨如何利用机器学习算法优化电商推荐系统,通过分析用户行为数据和商品信息,实现个性化推荐,从而提高推荐效率和准确性。
526 14
|
机器学习/深度学习 算法 数据可视化
实现机器学习算法时,特征选择是非常重要的一步,你有哪些推荐的方法?
实现机器学习算法时,特征选择是非常重要的一步,你有哪些推荐的方法?
497 1
|
机器学习/深度学习 算法 搜索推荐
Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)
Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)
|
机器学习/深度学习 数据采集 算法
解码癌症预测的密码:可解释性机器学习算法SHAP揭示XGBoost模型的预测机制
解码癌症预测的密码:可解释性机器学习算法SHAP揭示XGBoost模型的预测机制
1014 0

热门文章

最新文章

推荐镜像

更多