Sklearn--(SVR)Regression学习笔记
今天介绍一个机器学习包,sklearn。其功能模块有regression\classification\clustering\Dimensionality reduction\data preprocessing\model selection
对我来说,常用的主要有regression(SVR)和classification(SVC)两个部分。
首先介绍一下用sklearn.svm.SVR来做回归,如下:
1)多元线性回归
import numpy as np
from sklearn.linear_model import LinearRegression rng = np.random.RandomState(10) # 设置随机局部种子
x = 100 * rng.rand(50, 3) # 设置一个50行3列 所有值乘100的随机矩阵 x1 = x[:, 0]
x1.shape = 50, 1
x2 = x[:, 1]
x2.shape = 50, 1
x3 = x[:, 2]
x3.shape = 50, 1
y = 1.25 * x1 + 2.5 * x2 + 3 * x3 + 10 + rng.randn(50, 1) # randn是标准正态分布,用于核验结果 model = LinearRegression(fit_intercept=True)
model.fit(x, y) a = np.linspace(0, 50, 1000) # 从0到50创建1000个等差数列,验证模型
x1_fit = a[:, np.newaxis] # 将a转置成列
x2_fit = a[:, np.newaxis]
x3_fit = a[:, np.newaxis]
x_fit = np.hstack((x1_fit, x2_fit, x3_fit)) # 将x1,x2,x3合并一起
y_fit = model.predict(x_fit) # 对y预测
print("Model slope: ", model.coef_[0])
print("Model intercept:", model.intercept_)
print('方程的判定系数(R^2): %.2f' % model.score(x, y)) #计算得分,R^2
2)多项式回归
import random
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures x_data, y_data = [], []
# 随机生成30个点
for x in range(-10, 20):
y = - x ** 2 + 5 * x - 10 + random.random() * 20
x_data.append([x])
y_data.append([y]) # 特征构造
poly_reg = PolynomialFeatures(degree=2) #多项式构造
x_poly = poly_reg.fit_transform(x_data) # 创建线性模型
linear_reg = LinearRegression()
linear_reg.fit(x_poly, y_data)
plt.plot(x_data, y_data, 'b.')
# 用特征构造数据进行预测
plt.plot(x_data, linear_reg.predict(poly_reg.fit_transform(x_data)), 'r')
plt.show()
3)非线性回归(一元为例)
from sklearn.svm import SVR
from sklearn.model_selection import GridSearchCV #自动选择最佳模型 from sklearn.tree import DecisionTreeRegressor #决策树 from sklearn.ensemble import RandomForestRegressor #随机森林
import numpy as np
import matplotlib.pyplot as plt x = np.array([68.67,54.351,92.991,80.39,64.46]).reshape(-1, 1) #reshape为(-1,1),里面是[[1],[2]...]
y = np.array([68.67,54.351,92.991,80.39,64.46]).reshape(-1, 1) # 选择模型
#model = SVR(kernel='rbf')
# model = DecisionTreeRegressor()
# model = RandomForestRegressor()
model = GridSearchCV(SVR(), param_grid={"kernel": ("linear", 'rbf', 'sigmoid'), "C": np.logspace(-3, 3, 7), "gamma": np.logspace(-3, 3, 7)})
model.fit(x, y) xneed = np.arrray([[1.2],[3.6]])
y_pre = model.predict(xneed)# 进行预测 plt.scatter(x, y, c='k', label='data', zorder=1)
plt.plot(xneed, y_pre, c='r', label='SVR_fit')
plt.show()
print(model.best_params_)
补充:
1.如果要划分训练样本和测试样本数据集。
from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=.3) #选取0.3的测试集
2.为了增强数据之间相关性,通常对数据进行预处理,如标准化。
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
x_std = scaler.fit_transform(x) # 标准化
3.可以用GridSearchCV自动选择最佳模型
from sklearn.model_selection import GridSearchCV
grid = GridSearchCV(svc, param_grid, cv=3, n_jobs=-1)
4.模型保存
from sklearn.externals import joblib #用于保存和读取模型pkl
joblib.dump(model, 'svr.pkl') # 保存模型
svr = joblib.load('svr.pkl') # 读取模型
过两天补充一下sklearn.svm.SVC...
Sklearn--(SVR)Regression学习笔记的更多相关文章
- Logistic Regression学习笔记
1.李航<统计学习方法>: 2.https://blog.csdn.net/laobai1015/article/details/78113214 3.http://www.cnblogs ...
- Stepwise regression 学习笔记
之前在 SPSS 中的回归分析算法中发现,在它里面实现的算法有 Enter 和 Stepwise 两种.Enter 很容易理解,就是将所有选定的自变量一起放入模型中,直接去计算包含所有自变量的整个模型 ...
- Hands on Machine Learning with Sklearn and TensorFlow学习笔记——机器学习概览
一.什么是机器学习? 计算机程序利用经验E(训练数据)学习任务T(要做什么,即目标),性能是P(性能指标),如果针对任务T的性能P随着经验E不断增长,成为机器学习.[这是汤姆米切尔在1997年定义] ...
- 学习Logistic Regression的笔记与理解(转)
学习Logistic Regression的笔记与理解 1.首先从结果往前来看下how logistic regression make predictions. 设我们某个测试数据为X(x0,x1, ...
- ufldl学习笔记和编程作业:Softmax Regression(softmax回报)
ufldl学习笔记与编程作业:Softmax Regression(softmax回归) ufldl出了新教程.感觉比之前的好,从基础讲起.系统清晰,又有编程实践. 在deep learning高质量 ...
- [Machine Learning]学习笔记-Logistic Regression
[Machine Learning]学习笔记-Logistic Regression 模型-二分类任务 Logistic regression,亦称logtic regression,翻译为" ...
- [ML学习笔记] 回归分析(Regression Analysis)
[ML学习笔记] 回归分析(Regression Analysis) 回归分析:在一系列已知自变量与因变量之间相关关系的基础上,建立变量之间的回归方程,把回归方程作为算法模型,实现对新自变量得出因变量 ...
- ufldl学习笔记与编程作业:Softmax Regression(vectorization加速)
ufldl学习笔记与编程作业:Softmax Regression(vectorization加速) ufldl出了新教程,感觉比之前的好.从基础讲起.系统清晰,又有编程实践. 在deep learn ...
- ufldl学习笔记与编程作业:Logistic Regression(逻辑回归)
ufldl学习笔记与编程作业:Logistic Regression(逻辑回归) ufldl出了新教程,感觉比之前的好,从基础讲起.系统清晰,又有编程实践. 在deep learning高质量群里面听 ...
随机推荐
- rest实践2
通过url读取图片资源 其他的上传图片和对应的添加信息到数据库等的相关操作则引入crud来操作,编写相关代码的话==>要引入相关的crud包.
- cogs 176. [USACO Feb07] 奶牛聚会 dijkstra
176. [USACO Feb07] 奶牛聚会 ★☆ 输入文件:sparty.in 输出文件:sparty.out 简单对比时间限制:3 s 内存限制:16 MB 译: zqzas N ...
- 倍增LCA模板
//https://www.luogu.org/problemnew/show/P3379#include<bits/stdc++.h> #define maxn 500010 #defi ...
- .NET为什么要使用异步(async)编程?⭐⭐⭐⭐⭐
.NET为什么要使用异步(async)编程? 有几点坐下笔记 ⭐⭐⭐⭐: 1. 同步方法 static void Main(string[] args) { Console.WriteLine($&q ...
- 《C# 爬虫 破境之道》:第一境 爬虫原理 — 第二节:WebRequest
本节主要来介绍一下,在C#中制造爬虫,最为常见.常用.实用的基础类 ------ WebRequest.WebResponse. 先来看一个示例 [1.2.1]: using System; usin ...
- hive 动态分区
非常重要的动态分区属性: hive.exec.dynamic.partition 是否启动动态分区.false(不开启) true(开启)默认是 false hive.exec.dynamic.pa ...
- AI漫谈:我们距离实现《庆余年》里的五竹叔机器人还有多远?
(警告: 本文包含少量剧透内容,请酌情阅读) 五竹叔是机器人吗? 看过庆余年的朋友,一定对五竹叔印象深刻,外表英俊潇洒,一袭黑衣加黑布条蒙眼,充满神秘侠客气息.五竹叔不但神秘,而且言行举止常常很 ...
- 每天玩转3分钟 MyBatis-Plus - 1. 配置环境
每天玩转3分钟 MyBatis-Plus - 1. 配置环境 每天玩转3分钟 MyBatis-Plus - 2. 普通查询 MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 ...
- 鉴于崔庆才大大的对于 beautifulsoup 的再理解
源地址看 soups = BeautifulSoup(html) soup = BeautifulSoup(open('index.html')) print soup.prettify() Tag通 ...
- gitbub 基本使用
一.环境 git:https://git-scm.com/ 申请github账号:https://github.com/ 二.安装git 一直next即可 三.创储存建库 1.选择New reposi ...