Sklearn_入门
1. Sklearn简介
Scikit-learn(Sklearn) 是机器学习中常用的第三方模块,对常用的机器学习方法进行了封装,包括回归(Regression),降维(Dimensionality Reduction),分类(Classfication),聚类(Clustering)等方法。面临不同的机器学习问题,采用不同的方法。
Sklearn 具有如下特点:
- 简单高效的数据挖掘与分析工具
- 建立在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_入门相关推荐
- 用Construct 2制作入门小游戏~
今天在软导课上了解到了Construct 2这个神器,本零基础菜鸟决定尝试做一个简单的小游戏(实际上是入门的教程啊= = 首先呢,肯定是到官网下载软件啊,点击我下载~ 等安装完毕后我便按照新手教程开始 ...
- Docker入门六部曲——Swarm
原文链接:http://www.dubby.cn/detail.html?id=8738 准备工作 安装Docker(版本最低1.13). 安装好Docker Compose,上一篇文章介绍过的. 安 ...
- Docker入门六部曲——Stack
原文链接:http://www.dubby.cn/detail.html?id=8739 准备知识 安装Docker(版本最低1.13). 阅读完Docker入门六部曲--Swarm,并且完成其中介绍 ...
- Docker入门六部曲——服务
原文链接:http://www.dubby.cn/detail.html?id=8735 准备 已经安装好Docker 1.13或者以上的版本. 安装好Docker Compose.如果你是用的是Do ...
- 【springboot】入门
简介: springBoot是spring团队为了整合spring全家桶中的系列框架做研究出来的一个轻量级框架.随着spring4.0推出而推出,springBoot可以説是J2SEE的一站式解决方案 ...
- SpringBoot (一) :入门篇 Hello World
什么是SpringBoot Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不 ...
- 入门指南目录页 -PaddlePaddle 飞桨 入门指南 FAQ合集-深度学习问题
入门指南目录页 -PaddlePaddle 飞桨 入门指南 FAQ合集 GT_Zhang关注 0.1012019.08.01 18:43:34字数 1,874阅读 795 Hi,欢迎各位来自Paddl ...
- 5 分钟入门 Google 最强NLP模型:BERT
BERT (Bidirectional Encoder Representations from Transformers) 10月11日,Google AI Language 发布了论文 BERT: ...
- 命名实体识别入门教程(必看)
关于开发自己的命名实体识别先期思路: 虽然网上有很多相关代码,但实际如何入门材料较少,故整理下: CRF:先期可以用人民日报语料库去做,步骤如下: https://blog.csdn.net/hude ...
最新文章
- 闲来无事 linux cp命令的三种实现方式
- kmeans聚类源代码
- OpenWrt-DreamBox 20120201下设置二级路由
- 洛谷——P2083 找人
- Phalcon和YII的优点
- android通话记录列表apk,android打电话,发短信,获取通讯录、通话记录、短信记录...
- 【机器学习算法专题(蓄力计划)】十一、特征数据预处理
- VTK:InfoVis之MutableGraphHelper
- Linux: find和xargs用法整理
- Dubbo服务端暴露全流程
- python循环5次_Python自学之路五:分支,循环,迭代
- linux笔记_防止ddos攻击
- bat脚本保存dir结果_DOS批处理脚本及应用举例
- 手机谷歌浏览器设置不阻止弹窗弹出
- 一文彻底解决 matplotlib 中的字体管理
- Android设置拍照或者上传本地图片
- 服务器UDIMM、LRDIMM、RDIMM的区别
- 复盘 2019 ,展望 2020
- WIN7下硬盘安装centos 7
- 《奇异博士》+片尾两彩蛋