1. Sklearn简介

Scikit-learn(Sklearn) 是机器学习中常用的第三方模块,对常用的机器学习方法进行了封装,包括回归(Regression),降维(Dimensionality Reduction),分类(Classfication),聚类(Clustering)等方法。面临不同的机器学习问题,采用不同的方法。

Sklearn 具有如下特点:

  1. 简单高效的数据挖掘与分析工具
  2. 建立在Numpy,Scipy,Matplotlib之上

2.Sklearn 安装

Sklearn 安装要求 python, numpy等 在一定的版本以上

3.Sklearn 通用学习模式

Sklearn中包含众多机器学习方法,但各种学习方法大致相同。

首先需要引入训练的数据,Sklearn自带部分数据集,也可以通过相应方法进行构造,

然后选择相应机器学习方法进行训练,训练过程中可以通过一些技巧调整参数,使得学习准确率更高。模型训练完成之后便可以预测新数据,然后我们还可以通过Matplotlib等方法来直观的展示数据。另外还可以将我们训练好的Model进行保存,方便移动到其他平台,不必重新训练。

4.Sklearn datasets

Sklearn 提供一些标准数据,不必再从其他网站上寻找数据进行训练。例如我们上面用来训练的load_iris数据,可以很方便的返回数据特征变量和目标值。除了引入数据以外,还可以通过load_sample_images() 来引入图片

from sklearn import datasetsdata = datasets.load_iris()
# load and return the iris dataset (classification).data = datasets.load_boston()
# load and return the boston house-prices dataset (regression) data = datasets.load_wine()
# load and return the wine dataset(classification).data = datasets.load_breast_cancer()
# load and return the breast cancer wisconsin dataset(classification)

iris:

from sklearn import datasets  iris = datasets.load_iris()irisiris_X = iris.data
iris_y = iris.target# iris_X.data.shape
# (150,5)  150 个 samples , 每个 samples 4个 features# iris_y.data.shape
# 对应的每个 iris_X  一个特征值

除了datasets提供的 iris,boston,wine 等数据集外,还可以自己来构造一些数据帮助我们学习。

构造数据常用参数:n_samples,  n_features, n_targets, noise, random_state.

构造拟合Regression数据

(拟合分为线性拟合,非线性拟合等,得到的是最接近的结果,看总体效果,不必经过每一个点;插值是用多项式拟合,要经过每一个点)

from sklearn.datasets import make_regressionX, y = datasets.make_regression(n_samples=100,n_features=1,n_targets=1,noise=1,random_state=10)plt.figure()
plt.scatter(X,y)
plt.show()

拟合数据容易出现的问题 

机器学习的基本问题是 利用模型对数据进行拟合, 学习的目的并非是对有限训练集进行正确预测,而是对未曾在训练集合中出现的样本能够正确预测。模型对训练集数据的误差称之为经验误差,对测试集数据的误差称之为泛化误差。模型对训练集以外的样本的预测能力就称之为模型的泛化能力,追求这种泛化能力始终是机器学习的目标。

过拟合 overfitting  和 欠拟合 underfitting 是导致模型泛化能力不高的两种常见原因,都是模型学习能力与模型复杂度之间失配的结果。

欠拟合 underfitting 常常在模型学习能力较弱,而数据复杂度较高的情况出现,此时由于模型学习能力不足,无法学习到数据集中的 ‘一般规律’,因而导致泛化能力弱。

与之相反,过拟合 overfitting 常常在模型学习能力过强的情况中出现此时的模型学习能力太强,以至于将训练集单个样本本身的特点都能捕捉到,并将其认为是‘一般规律’,同样这种情况也会导致模型的泛化能力下降。

过拟合 overfitting 与 欠拟合 underfitting 的区别在于,欠拟合在训练集合测试集上的性能都较差,而过拟合往往能较好地学习训练集数据的性质,而在测试集上的性能较差。

在神经网络训练的过程中,欠拟合主要表现为输出结果的高偏差,而过拟合主要表现为输出结果的高方差。

对于 过拟合 形象的 解释:(转自b乎)

欠拟合出现原因:1.模型复杂度过低  2.数据特征量过少

欠拟合的情况比较容易克服,常见解决方法有:

1.提高模型复杂度。

2.增加新特征。

过拟合出现的原因

1.建模样本选取有误,样本数量太少,选择方法

2.样本噪声干扰过大,使得机器将部分噪声认为是特征从而扰乱了预设的分类规则

3.假设的模型无法合理存在,假设成立的条件实际上并不成立

4.参数过多,模型复杂度过高

过拟合的解决方案

1.正则化

2.数据增扩

构造blobs数据

from sklearn.datasets.samples_generator import make_blobsX , y = make_blobs(n_samples=1000,n_features=2,centers=3)   print(X.shape )plt.figure()
plt.scatter(X[:,0],X[:,1],marker='o',label='CCCC')
plt.xlabel('XXXX')
plt.ylabel('YYYY')
plt.legend()
plt.show()  

也可以自己设置固定的中心点,不同的标准差

X , y = make_blobs(n_samples=1000, n_features=2,  centers=[[-1,-1], [0,0], [1,1], [2,2]],cluster_std=[0.2,0.2,0.2,0.2],random_state=10)

5.Sklearn  Model的属性和功能

数据训练完之后得到模型,我们可以根据不同模型得到相应的属性和功能,并将其输出得到直观结果。假如通过线性回归训练之后得到线性函数 y=0.7x + 7 ,可以通过_coef 得到 模型系数,_intercept 得到模型 截距

from sklearn import datasets
from sklearn.linear_model import LinearRegression#引入线性回归模型###引入数据###
load_data=datasets.load_boston()data_X=load_data.data
data_y=load_data.target#print(data_X.shape)
#(506, 13)data_X共13个特征变量###训练数据###
model=LinearRegression()
model.fit(data_X,data_y)
model.predict(data_X[:5,:])#预测前5个数据###属性和功能###
print(model.coef_)print(model.intercept_)

6.Sklearn数据预处理

数据集的标准化对于大部分机器学习算法来说都是一种常规的要求,如果单个特征没有或多或少的接近于正态分布,那么它可能并不能在项目中表现出良好的性能。

预处理   对模型评分的提升有很大的帮助。

7.交叉验证

交叉验证的基本思想是将原始数据进行分组,一部分作为训练集来训练模型,另一部分作为测试集来评价模型。交叉验证用于评估模型的预测性能,就其实训练好的模型在新数据上的表现,可以在一定程度上减少过拟合。还能从有限的数据中获取尽可能多的有效信息。

机器学习任务中,拿到数据后,我们首先会将原始数据集分为三部分:训练集、验证集和测试集。 训练集用于训练模型,验证集用于模型的参数选择配置,测试集对于模型来说是未知数据,用于评估模型的泛化能力。不同的划分会得到不同的最终模型。

以前我们是直接将数据分割成70%的训练数据和测试数据,现在我们利用K折交叉验证分割数据,首先将数据分为5组,然后再从5组数据之中选择不同数据进行训练。

Sklearn_入门相关推荐

  1. 用Construct 2制作入门小游戏~

    今天在软导课上了解到了Construct 2这个神器,本零基础菜鸟决定尝试做一个简单的小游戏(实际上是入门的教程啊= = 首先呢,肯定是到官网下载软件啊,点击我下载~ 等安装完毕后我便按照新手教程开始 ...

  2. Docker入门六部曲——Swarm

    原文链接:http://www.dubby.cn/detail.html?id=8738 准备工作 安装Docker(版本最低1.13). 安装好Docker Compose,上一篇文章介绍过的. 安 ...

  3. Docker入门六部曲——Stack

    原文链接:http://www.dubby.cn/detail.html?id=8739 准备知识 安装Docker(版本最低1.13). 阅读完Docker入门六部曲--Swarm,并且完成其中介绍 ...

  4. Docker入门六部曲——服务

    原文链接:http://www.dubby.cn/detail.html?id=8735 准备 已经安装好Docker 1.13或者以上的版本. 安装好Docker Compose.如果你是用的是Do ...

  5. 【springboot】入门

    简介: springBoot是spring团队为了整合spring全家桶中的系列框架做研究出来的一个轻量级框架.随着spring4.0推出而推出,springBoot可以説是J2SEE的一站式解决方案 ...

  6. SpringBoot (一) :入门篇 Hello World

    什么是SpringBoot Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不 ...

  7. 入门指南目录页 -PaddlePaddle 飞桨 入门指南 FAQ合集-深度学习问题

    入门指南目录页 -PaddlePaddle 飞桨 入门指南 FAQ合集 GT_Zhang关注 0.1012019.08.01 18:43:34字数 1,874阅读 795 Hi,欢迎各位来自Paddl ...

  8. 5 分钟入门 Google 最强NLP模型:BERT

    BERT (Bidirectional Encoder Representations from Transformers) 10月11日,Google AI Language 发布了论文 BERT: ...

  9. 命名实体识别入门教程(必看)

    关于开发自己的命名实体识别先期思路: 虽然网上有很多相关代码,但实际如何入门材料较少,故整理下: CRF:先期可以用人民日报语料库去做,步骤如下: https://blog.csdn.net/hude ...

最新文章

  1. 闲来无事 linux cp命令的三种实现方式
  2. kmeans聚类源代码
  3. OpenWrt-DreamBox 20120201下设置二级路由
  4. 洛谷——P2083 找人
  5. Phalcon和YII的优点
  6. android通话记录列表apk,android打电话,发短信,获取通讯录、通话记录、短信记录...
  7. 【机器学习算法专题(蓄力计划)】十一、特征数据预处理
  8. VTK:InfoVis之MutableGraphHelper
  9. Linux: find和xargs用法整理
  10. Dubbo服务端暴露全流程
  11. python循环5次_Python自学之路五:分支,循环,迭代
  12. linux笔记_防止ddos攻击
  13. bat脚本保存dir结果_DOS批处理脚本及应用举例
  14. 手机谷歌浏览器设置不阻止弹窗弹出
  15. 一文彻底解决 matplotlib 中的字体管理
  16. Android设置拍照或者上传本地图片
  17. 服务器UDIMM、LRDIMM、RDIMM的区别
  18. 复盘 2019 ,展望 2020
  19. WIN7下硬盘安装centos 7
  20. 《奇异博士》+片尾两彩蛋

热门文章

  1. 100G超长距离传输模块,彩光模块相关知识
  2. java 计算日期之间的时间间隔
  3. R语言——一秒决策树分析
  4. 【TCP-IP详解卷一:协议】ch16 BOOTP:引导程序协议
  5. wifi连不上,wlan还被禁用该怎么办
  6. 在 Hibernate 中inverse的属性
  7. 前端开发学习常用网站网址及api接口(都是免费的)
  8. 羽毛球球速详解,76速、77速、2号球、3号球的含义
  9. Capsule Network
  10. 浅析AnyCast网络技术