今天介绍一个机器学习包,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学习笔记的更多相关文章

  1. Logistic Regression学习笔记

    1.李航<统计学习方法>: 2.https://blog.csdn.net/laobai1015/article/details/78113214 3.http://www.cnblogs ...

  2. Stepwise regression 学习笔记

    之前在 SPSS 中的回归分析算法中发现,在它里面实现的算法有 Enter 和 Stepwise 两种.Enter 很容易理解,就是将所有选定的自变量一起放入模型中,直接去计算包含所有自变量的整个模型 ...

  3. Hands on Machine Learning with Sklearn and TensorFlow学习笔记——机器学习概览

    一.什么是机器学习? 计算机程序利用经验E(训练数据)学习任务T(要做什么,即目标),性能是P(性能指标),如果针对任务T的性能P随着经验E不断增长,成为机器学习.[这是汤姆米切尔在1997年定义] ...

  4. 学习Logistic Regression的笔记与理解(转)

    学习Logistic Regression的笔记与理解 1.首先从结果往前来看下how logistic regression make predictions. 设我们某个测试数据为X(x0,x1, ...

  5. ufldl学习笔记和编程作业:Softmax Regression(softmax回报)

    ufldl学习笔记与编程作业:Softmax Regression(softmax回归) ufldl出了新教程.感觉比之前的好,从基础讲起.系统清晰,又有编程实践. 在deep learning高质量 ...

  6. [Machine Learning]学习笔记-Logistic Regression

    [Machine Learning]学习笔记-Logistic Regression 模型-二分类任务 Logistic regression,亦称logtic regression,翻译为" ...

  7. [ML学习笔记] 回归分析(Regression Analysis)

    [ML学习笔记] 回归分析(Regression Analysis) 回归分析:在一系列已知自变量与因变量之间相关关系的基础上,建立变量之间的回归方程,把回归方程作为算法模型,实现对新自变量得出因变量 ...

  8. ufldl学习笔记与编程作业:Softmax Regression(vectorization加速)

    ufldl学习笔记与编程作业:Softmax Regression(vectorization加速) ufldl出了新教程,感觉比之前的好.从基础讲起.系统清晰,又有编程实践. 在deep learn ...

  9. ufldl学习笔记与编程作业:Logistic Regression(逻辑回归)

    ufldl学习笔记与编程作业:Logistic Regression(逻辑回归) ufldl出了新教程,感觉比之前的好,从基础讲起.系统清晰,又有编程实践. 在deep learning高质量群里面听 ...

随机推荐

  1. C++ | C++ 概览 基础知识 | 01

    一.基本概念 1.1 类型.变量和算术运算 1.2 常量 1.3 检验和循环 1.4 指针,数组和循环 二.用户自定义类型 2.1 结构 2.2 类 2.3 枚举 三.模块化 3.1 分离编译 3.2 ...

  2. 案例分析丨谷歌设计冲刺 4 天决定 Clips 的功能特性

    这次为大家带来Google冲刺日程案例,之前案例分析可以戳对应文字直达:ING集团.音乐流媒体Spotify.美国知名超市Target 作为一款工具类产品,谷歌十分注重产品候选人的技术背景,同时也看重 ...

  3. VS2015发布WEB项目

    第一步:在打开的VS2015中,右击项目,在弹出的对话框中,点击“发布”. 第二步:配置发布的WEB项目. 1.为要发布的项目起个名称,一般和项目名称相同. 2.选择以文件系统发布. 3.设置相关配置 ...

  4. 搭建个人OpenAPI

    简介 OpenAPI Open API 即开放 API,也称开放平台. 所谓的开放 API(OpenAPI)是服务型网站常见的一种应用,网站的服务商将自己的网站服务封装成一系列 API(Applica ...

  5. 关于爬虫的日常复习(17)——scrapy系列2

  6. python 线程事件

    与进程的事件相似 # 事件,模拟连接数据库 import time from threading import Event, Thread def wait(e): while 1: e.wait(1 ...

  7. mysql本地连接远程连接不上

    首先测试linux下的端口有没有开通 /etc/init.d/iptables status 查看3306端口没有开通 使用以下命令开通 /sbin/iptables -I INPUT -p tcp ...

  8. http的异步请求

    需要用到的包(包版本应该可能不同): httpcore-4.1.4.jar httpsayncclient-4.0-alpha3.jar httpcore-nio-4.2-alpha3.jar /** ...

  9. 关于checkbox取值的问题

    今天,在做一个小界面的时候,要用到checkbox来判断用户是否选择记住密码. 本来我想这个不是挺简单吗,直接用jquery获取checkbox的checked属性值好了,如下: var rememb ...

  10. [bzoj2186] [洛谷P2155] [Sdoi2008] 沙拉公主的困惑

    Description 大富翁国因为通货膨胀,以及假钞泛滥,政府决定推出一项新的政策:现有钞票编号范围为1到N的阶乘,但是,政府只发行编号与M!互质的钞票.房地产第一大户沙拉公主决定预测一下大富翁国现 ...