Python机器学习库scikit-learn安装与基本使用教程
本文详细介绍Python机器学习库scikit-learn的安装步骤及基础应用。涵盖NumPy、SciPy等依赖配置,演示数据加载、归一化、特征选择与提取流程,并实战朴素贝叶斯、k近邻及决策树算法,帮助开发者快速上手数据挖掘与分析。
本文通过具体实例,解析Python机器学习库scikit-learn的安装流程及其基础用法,旨在为读者提供具有参考价值的操作指南。
引言
scikit-learn是Python生态中一个广受欢迎的开源机器学习工具包,其核心建立在NumPy、SciPy以及matplotlib模块之上。该库提供了丰富的机器学习算法接口,旨在帮助用户以简单且高效的方式完成数据挖掘与数据分析任务。
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的列表,用于记录每条评论所属的类别。
具体的爬虫代码及特征矩阵构建逻辑如下:
相关数据文件可通过以下链接下载:class_result_save.npy 和 feature_matrix_save.npy。
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数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》
希望本文所述内容能对大家的Python程序设计工作有所帮助。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









