三、Scikit-learn机器学习框架

3.1 Scikit-learn介绍

Scikit-learn介绍

对Python语言有所了解的科研人员可能都知道SciPy——一个开源的基于Python的科学计算工具包。

基于SciPy,目前开发者们针对不同的应用领域已经发展出了为数众多的分支版本,它们被统一称为Scikits,即SciPy工具包的意思。

而在这些分支版本中,最有名,也是专门面向机器学习的一个就是Scikit-learn。

Scikit-learn项目最早由数据科学家 David Cournapeau 在 2007 年发起,需要NumPy和SciPy等其他包的支持,是Python语言中专门针对机器学习应用而发展起来的一款开源框架。

和其他众多的开源项目一样,Scikit-learn目前主要由社区成员自发进行维护。可能是由于维护成本的限制,Scikit-learn相比其他项目要显得更为保守。

  • Scikit-learn从来不做除机器学习领域之外的其他扩展
  • Scikit-learn从来不采用未经广泛验证的算法

Scikit-learn六大功能

  • 分类
  • 回归
  • 聚类
  • 数据降维
  • 模型选择
  • 数据预处理

3.2 Scikit-learn功能:分类

Scikit-learn功能:分类

分类是指识别给定对象的所属类别,属于监督学习的范畴,最常见的应用场景包括垃圾邮件检测和图像识别等。

目前Scikit-learn已经实现的算法包括:

  • 支持向量机(SVM)
  • K-近邻
  • 逻辑回归
  • 决策树
  • 随机森林
  • 多层感知器(MLP)神经网络

Scikit-learn针对每个算法和模块都提供了丰富的参考样例和详细的说明文档。

Scikit-learn功能:回归

回归是指预测与给定对象相关联的连续值属性,最常见的应用场景包括预测药物反应和预测股票价格等。

目前Scikit-learn已经实现的算法包括:

  • 支持向量回归(SVR)
  • 岭回归
  • Lasso回归
  • 弹性网络(Elastic Net)
  • 最小角回归(LARS)
  • 贝叶斯回归
  • 各种不同的鲁棒回归算法等

可以看到,这里实现的回归算法几乎涵盖了所有开发者的需求范围,而且更重要的是,Scikit-learn还针对每种算法都提供了简单明了的用例参考。

Scikit-learn功能:聚类

聚类是指自动识别具有相似属性的给定对象,并将其分组为集合,属于无监督学习的范畴,最常见的应用场景包括顾客细分和试验结果分组。

目前Scikit-learn已经实现的算法包括:

  • K-均值聚类
  • 谱聚类
  • 均值偏移
  • 分层聚类
  • DBSCAN聚类等

Scikit-learn功能:数据降维

数据降维是指使用主成分分析(PCA)、非负矩阵分解(NMF)或特征选择等降维技术来减少要考虑的随机变量的个数,其主要应用场景包括可视化处理和效率提升。

Scikit-learn功能:模型选择

模型选择是指对于给定参数和模型的比较、验证和选择,其主要目的是通过参数调整来提升精度。

目前Scikit-learn实现的模块包括:

  • 网格搜索
  • 交叉验证
  • 各种针对预测误差评估的度量函数

Scikit-learn功能:数据预处理

数据预处理是指数据的特征提取和归一化,是机器学习过程中的第一个也是最重要的一个环节。

  • 归一化是指将输入数据转换为具有零均值和单位权方差的新变量,但因为大多数时候都做不到精确等于零,因此会设置一个可接受的范围,一般都要求落在0-1之间。
  • 特征提取是指将文本或图像数据转换为可用于机器学习的数字变量。

3.3 机器学习代码实例(1)

代码实例

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn import metricsiris = load_iris()
X, y = iris.data[:,:2],iris.target
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.3,random_state=42)
scaler = StandardScaler().fit(X_train)
X_train = scaler.transform(X_train)
X_test  = scaler.transform(X_test)
knn = KNeighborsClassifier(n_neighbors=5)
knn.fit(X_train,y_train)
y_pred = knn.predict(X_test)
metrics.accuracy_score(y_test,y_pred)
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.naive_bayes import GaussianNB
from sklearn import metricsiris = load_iris()
X, y = iris.data[:,:2],iris.target
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.3,random_state=42)
scaler = StandardScaler().fit(X_train)
X_train = scaler.transform(X_train)
X_test  = scaler.transform(X_test)
gnb = GaussianNB()
gnb.fit(X_train,y_train)
y_pred = gnb.predict(X_test)
metrics.accuracy_score(y_test,y_pred)
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC
from sklearn import metricsiris = load_iris()
X, y = iris.data[:,:2],iris.target
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.3,random_state=42)
scaler = StandardScaler().fit(X_train)
X_train = scaler.transform(X_train)
X_test  = scaler.transform(X_test)
svc = SVC(kernel='linear',C=0.1)
svc.fit(X_train,y_train)
y_pred = svc.predict(X_test)
metrics.accuracy_score(y_test,y_pred)

3.4 机器学习代码实例(2)

加载数据集

from sklearn.datasets import load_iris
iris = load_iris()
X = iris.data
y = iris.target

或者

from sklearn.datasets import load_iris
X, y = load_iris(return_X_y=True)
函数 描述 问题类别
load_boston() 波士顿房价数据集 回归
load_breast_cancer() 威斯康辛州乳腺癌数据集 分类
load_diabetes() 糖尿病数据集 回归
load_digits() 数字数据集 分类
load_iris() 鸢尾花数据集 分类
load_linnerud() linnerud数据集 多变量回归
load_wine() 红酒数据集 分类

拆分数据集

from sklearn.model_selection import train_test_split
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.3,random_state=42)
  • test_size:测试集大小
  • train_size:训练集大小
  • random_state:随机种子

特征工程

from sklearn.preprocessing import StandardScaler
scaler = StandardScaler().fit(X_train)
X_train = scaler.transform(X_train)
X_test  = scaler.transform(X_test)

特征工程是指从原始数据转换为特征向量的过程。

特征工程是机器学习中最重要的起始步骤,会直接影响机器学习的效果,并通常需要大量的时间。

典型的特征工程包括数据清理、特征提取、特征选择等过程。

建立模型

from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier(n_neighbors=5)
from sklearn.naive_bayes import GaussianNB
gnb = GaussianNB()
from sklearn.svm import SVC
svc = SVC(kernel='linear',C=0.1)

拟合模型

knn.fit(X_train,y_train)
gnb.fit(X_train,y_train)
svc.fit(X_train,y_train)

3.5 机器学习预测并评价模型

进行预测并评价模型

y_pred = knn.predict(X_test)
metrics.accuracy_score(y_test,y_pred)
y_pred = gnb.predict(X_test)
metrics.accuracy_score(y_test,y_pred)
y_pred = svc.predict(X_test)
metrics.accuracy_score(y_test,y_pred)

三、Scikit-learn机器学习框架相关推荐

  1. 机器学习与Scikit Learn学习库

    摘要: 本文介绍机器学习相关的学习库Scikit Learn,包含其安装及具体识别手写体数字案例,适合机器学习初学者入门Scikit Learn. 在我科研的时候,机器学习(ML)是计算机科学领域中最 ...

  2. [转载]Scikit Learn: 在python中机器学习

    原址:http://my.oschina.net/u/175377/blog/84420 目录[-] Scikit Learn: 在python中机器学习 载入示例数据 一个改变数据集大小的示例:数码 ...

  3. Scikit Learn: 在python中机器学习

    Warning 警告:有些没能理解的句子,我以自己的理解意译. 翻译自:Scikit Learn:Machine Learning in Python 作者: Fabian Pedregosa, Ga ...

  4. 机器学习框架_一个框架解决几乎所有机器学习问题

    一个叫 Abhishek Thakur 的数据科学家,在他的 Linkedin 发表了一篇文章 Approaching (Almost) Any Machine Learning Problem,介绍 ...

  5. 【scikit-learn】如何用Python和SciKit Learn 0.18实现神经网络

    本教程的代码和数据来自于 Springboard 的博客教程.本文的作者为 Jose Portilla,他是网络教育平台 Udemy 一门数据科学类课程的讲师. GitHub 链接:https://g ...

  6. Web开发的机器学习框架

    目前,机器学习是软件开发中最热门的趋势之一.许多分析师甚至认为机器学习将彻底改变某些程序的开发过程,包括Web和移动应用程序. 以下几点清楚地表明了机器学习对Web开发的强大影响: 传统数据挖掘的良好 ...

  7. 从Spark MLlib到美图机器学习框架实践

    MLlib 是 Apache Spark 的可扩展机器学习库,旨在简化机器学习的工程实践工作,并方便扩展到更大规模的数据集. 机器学习简介 在深入介绍 Spark MLlib 之前先了解机器学习,根据 ...

  8. python scikit learn 关闭开源_scikit learn 里没有神经网络?

    本教程的代码和数据来自于 Springboard 的博客教程,希望能为你提供帮助.作者为 Jose Portilla,他是网络教育平台 Udemy 一门数据科学类课程的讲师. GitHub 链接:ht ...

  9. scikit - learn 做文本分类

    文章来源: https://my.oschina.net/u/175377/blog/84420 Scikit Learn: 在python中机器学习 Warning 警告:有些没能理解的句子,我以自 ...

最新文章

  1. Codeforces Round #535 (Div. 3)题解
  2. Apache,php,mysql整合安装包 for Windows 2000/xp/2003
  3. PowerDesigner教程系列(三)概念数据模型
  4. Hadoop详解(十):Hadoop 作业调度机制
  5. 程鑫峰:1.23日央行推行负利率政策,伦敦金后市行情解析
  6. 致我的2018 你好2019
  7. c语言万年历的设计任务,万年历设计报告
  8. 华为P50系列相机全球首发新技术:告别偏色做到真实原色捕捉
  9. 【MySQL】mysql show操作简单示例
  10. App后台开发运维和架构实践学习总结(8)——后台产品设计的4个原则
  11. 零基础自学python-零基础如何自学Python并且找到工作,其实也就这3点,4点
  12. Julia和Matlab中的sum()的不同
  13. python的输入和输出语句
  14. 蛋白质聚集的分子动力学模拟
  15. unity3d 挂载脚本_Unity3D加载资源的四种方式
  16. 宿舍物联网门锁系统之个人小程序注册
  17. xp下载的java8_windows xp下安装java8(jdk8) 看完就明白
  18. Ubuntu 显卡风扇调节问题 Unable to locate/open X configuration file. No package ‘xorg-server‘ found
  19. 夜神模拟器怎么开脚本?
  20. Python的学习(十八)---- 单元测试工具nose

热门文章

  1. java循环语句,break语句的作用,continue语句的作用
  2. Android判断后台服务(Service)是否运行
  3. 小企业如何挑选在线客服系统
  4. [经验教程]2022年618优惠力度大买苹果iPhone手机降价600元优惠券领取入口及淘宝天猫618超级红包每天领取1次天猫淘宝618超级红包活动入口
  5. 载5-FU聚己内酯纳米粒子(5-FU-PCL-NP)|PCL-PEG-PCL载姜黄素纳米粒子|齐岳供应
  6. 转发和重定向流程详解
  7. 初中计算机水平测试选择题,初中信息技术测试题第三十九套
  8. 华为WATCH 3 Pro new 和华为WATCH 3 Pro 有什么区别?
  9. java实现报时助手_用C++实现:报时助手
  10. maven管理的项目导入时pom报错