Python机器学习库scikit-learn安装与基本使用教程


Posted in Python onJune 25, 2018

本文实例讲述了Python机器学习库scikit-learn安装与基本使用。分享给大家供大家参考,具体如下:

引言

scikit-learn是Python的一个开源机器学习模块,它建立在NumPySciPymatplotlib模块之上能够为用户提供各种机器学习算法接口,可以让用户简单、高效地进行数据挖掘和数据分析。

scikit-learn安装

python 中安装许多模板库之前都有依赖关系,安装 scikit-learn 之前需要以下先决条件:

Python(>= 2.6 or >= 3.3)
NumPy (>= 1.6.1)
SciPy (>= 0.9)

如无意外,下面用 pip 的安装方法可以顺利完成~~

安装 numpy

sudo pip install numpy

安装 scipy

需要先安装 matplotlib ipython ipython-notebook pandas sympy

sudo apt-get install python-matplotlib ipython ipython-notebook
sudo apt-get install python-pandas python-sympy python-nose
sudo pip install scipy

安装 scikit-learn

sudo pip install -U scikit-learn

测试

在 terminal 里面输入

pip list

这个会列出 pip 安装的所有东西,如果里面有 sklearn 这一项,应该就是大功告成了!

或者尝试着将几个模板库导入进来

import numpy
import scipy
import sklearn

加载数据(Data Loading)

本文所使用的数据集为‘今日头条'近期两篇热门新闻“牛!川大学霸寝室5人获16份名校通知书”、“张超凡的最后14天:山西15岁休学少年是如何殒命网吧的”分别500条评论,共1000条评论。

去除停用词后得到了词库大小为3992的词库。因此构建了1000×3992的特征矩阵,以及长度为1000的对应评论所属类别列表

import numpy as np
feature_matrix = np.load('dataSet/feature_matrix_save.npy')
class_list = np.load('dataSet/class_result_save.npy')

数据归一化(Data Normalization)

大多数机器学习算法中的梯度方法对于数据的缩放和尺度都是很敏感的,在开始跑算法之前,我们应该进行归一化或者标准化的过程,这使得特征数据缩放到0-1范围中。scikit-learn提供了归一化的方法:

from sklearn import preprocessing
# 归一化(Normalization)
normalized_X = preprocessing.normalize(feature_matrix)
print normalized_X
# 标准化(Standardization)
standardized_X = preprocessing.scale(feature_matrix)
print standardized_X

特征选择(Feature Selection)

在解决一个实际问题的过程中,选择合适的特征或者构建特征的能力特别重要。这成为特征选择或者特征工程。

特征选择时一个很需要创造力的过程,更多的依赖于直觉和专业知识,并且有很多现成的算法来进行特征的选择。

下面的树算法(Tree algorithms)计算特征的信息量:

from sklearn.ensemble import ExtraTreesClassifier
model = ExtraTreesClassifier()
print feature_matrix.shape # 原特征矩阵规模
feature_matrix = model.fit(feature_matrix, class_list).transform(feature_matrix)
print feature_matrix.shape # 特征选择后 特征矩阵的规模

特征提取(Feature Extraction)

用TFIDF算法来计算特征词的权重值是表示当一个词在这篇文档中出现的频率越高,同时在其他文档中出现的次数越少,则表明该词对于表示这篇文档的区分能力越强,所以其权重值就应该越大。

from sklearn.feature_extraction.text import TfidfTransformer
tfidf_transformer = TfidfTransformer()
feature_matrix = tfidf_transformer.fit_transform(feature_matrix).toarray()

朴素贝叶斯(Naive Bayes)

朴素贝叶斯是一个很著名的机器学习算法,主要是根据训练样本的特征来计算各个类别的概率,在多分类问题上用的比较多。

from sklearn import metrics
from sklearn.naive_bayes import GaussianNB
# 构建朴素贝叶斯模型
model = GaussianNB()
model.fit(feature_matrix, class_list)
print model
# 使用测试集进行测试(此处将训练集做测试集)
expected = class_list
predicted = model.predict(feature_matrix)
# 输出测试效果
print metrics.classification_report(expected, predicted)
print metrics.confusion_matrix(expected, predicted)

k近邻(k-Nearest Neighbours)

k近邻算法常常被用作是分类算法一部分,比如可以用它来评估特征,在特征选择上我们可以用到它。

from sklearn import metrics
from sklearn.neighbors import KNeighborsClassifier
# 构建knn模型
model = KNeighborsClassifier()
model.fit(feature_matrix, class_list)
print model
# 使用测试集进行测试(此处将训练集做测试集)
expected = class_list
predicted = model.predict(feature_matrix)
# 输出测试效果
print metrics.classification_report(expected, predicted)
print metrics.confusion_matrix(expected, predicted)

决策树(Decision Tree)

分类与回归树(Classification and Regression Trees ,CART)算法常用于特征含有类别信息的分类或者回归问题,这种方法非常适用于多分类情况。

from sklearn import metrics
from sklearn.tree import DecisionTreeClassifier
# 构建决策数模型
model = DecisionTreeClassifier()
model.fit(feature_matrix, class_list)
print model
# 使用测试集进行测试(此处将训练集做测试集)
expected = class_list
predicted = model.predict(feature_matrix)
# 输出测试效果
print metrics.classification_report(expected, predicted)
print metrics.confusion_matrix(expected, predicted)

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python中使用Inotify监控文件实例
Feb 14 Python
python分析nignx访问日志脚本分享
Feb 26 Python
python实现汉诺塔递归算法经典案例
Mar 01 Python
python下读取公私钥做加解密实例详解
Mar 29 Python
Win10下python 2.7.13 安装配置方法图文教程
Sep 18 Python
使用Python的toolz库开始函数式编程的方法
Nov 15 Python
python实现创建新列表和新字典,并使元素及键值对全部变成小写
Jan 15 Python
Pandas之DataFrame对象的列和索引之间的转化
Jun 25 Python
python取均匀不重复的随机数方式
Nov 27 Python
TensorFlow Autodiff自动微分详解
Jul 06 Python
python 爬虫基本使用——统计杭电oj题目正确率并排序
Oct 26 Python
详解Open Folder as PyCharm Project怎么添加的方法
Dec 29 Python
python3实现随机数
Jun 25 #Python
Python实现快速计算词频功能示例
Jun 25 #Python
python实现画一颗树和一片森林
Jun 25 #Python
完美解决在oj中Python的循环输入问题
Jun 25 #Python
django rest framework 数据的查找、过滤、排序的示例
Jun 25 #Python
python使用turtle库绘制树
Jun 25 #Python
使用Python微信库itchat获得好友和群组已撤回的消息
Jun 24 #Python
You might like
德劲1103的维修打理经验
2021/03/02 无线电
在apache下限制每个虚拟主机的并发数!!!!
2006/10/09 PHP
PHP 文件缓存的性能测试
2010/04/25 PHP
PHP执行SQL文件并将SQL文件导入到数据库
2015/09/17 PHP
php求数组全排列,元素所有组合的方法
2016/05/05 PHP
ThinkPHP框架表单验证操作方法
2017/07/19 PHP
jQuery lazyLoad图片延迟加载插件的优化改造方法分享
2013/08/13 Javascript
jquery.autocomplete修改实现键盘上下键自动填充示例
2013/11/19 Javascript
可自定义速度的js图片无缝滚动示例分享
2014/01/20 Javascript
jquery实现像栅栏一样左右滑出式二级菜单效果代码
2015/08/24 Javascript
JavaScript中实现Map的示例代码
2015/09/09 Javascript
Js 获取当前函数参数对象的实现代码
2016/06/20 Javascript
JS简单实现tab切换效果的多窗口显示功能
2016/09/07 Javascript
微信小程序 Template详解及简单实例
2017/01/05 Javascript
js实现时间轴自动排列效果
2017/03/09 Javascript
Node.js 中exports 和 module.exports 的区别
2017/03/14 Javascript
jQuery实现表格冻结顶栏效果
2017/08/20 jQuery
vue-router 权限控制的示例代码
2017/09/21 Javascript
Vue 菜单栏点击切换单个class(高亮)的方法
2018/08/22 Javascript
微信小程序自定义组件传值 页面和组件相互传数据操作示例
2019/05/05 Javascript
vue 在methods中调用mounted的实现操作
2020/08/07 Javascript
[46:55]Ti4 冒泡赛第二轮 LGD vs C9
2014/07/14 DOTA
[01:01:31]2018DOTA2亚洲邀请赛3月29日小组赛B组 Mineski VS paiN
2018/03/30 DOTA
[04:54]DOTA2-DPC中国联赛1月31日Recap集锦
2021/03/11 DOTA
利用Python如何生成便签图片详解
2018/07/09 Python
keras训练浅层卷积网络并保存和加载模型实例
2020/07/02 Python
基于Python组装jmx并调用JMeter实现压力测试
2020/11/03 Python
selenium如何定位span元素的实现
2021/01/13 Python
HTML5 画布canvas使用方法
2016/03/18 HTML / CSS
用canvas显示验证码的实现
2020/04/10 HTML / CSS
英国大码女性时装零售商:Evans
2018/08/29 全球购物
幼师专业求职推荐信
2013/11/08 职场文书
求职自荐信怎么写
2014/03/06 职场文书
行政助理岗位职责
2015/02/10 职场文书
MySQL 自定义变量的概念及特点
2021/05/13 MySQL
JVM上高性能数据格式库包Apache Arrow入门和架构详解(Gkatziouras)
2021/05/26 Servers