一、Sklearn工具包介绍
scikit-learn,又写作sklearn,是一个开源的基于python语言的机器学习工具包。它通过NumPy, SciPy和Matplotlib等python数值计算的库实现高效的算法应用,并且涵盖了几乎所有主流机器学习算法。
官网:https://scikit-learn.org/stable/index.html
1、常用模块
Sklearn中常用模块:分类(Classification)、回归(Regression)、聚类(Clustering)、降维(Dimensionality reduction)、模型选择(Model selection)、数据预处理(Preprocessing)。
分类:识别某个对象属于哪个类别,常用的算法有:SVM(支持向量机)、nearest neighbors(最近邻)、random forest(随机森林),常见的应用有:垃圾邮件识别、图像识别。
回归:预测与对象相关联的连续值属性,常见的算法有:SVR(支持向量机)、 ridge regression(岭回归)、Lasso,常见的应用有:药物反应,预测股价。
聚类:将相似对象自动分组,常用的算法有:k-Means、 spectral clustering、mean-shift,常见的应用有:客户细分,分组实验结果。
降维:减少要考虑的随机变量的数量,常见的算法有:PCA(主成分分析)、feature selection(特征选择)、non-negative matrix factorization(非负矩阵分解),常见的应用有:可视化,提高效率。
模型选择:比较,验证,选择参数和模型,常用的模块有:grid search(网格搜索)、cross validation(交叉验证)、 metrics(度量)。它的目标是通过参数调整提高精度。
预处理:特征提取和归一化,常用的模块有:preprocessing,feature extraction,常见的应用有:把输入数据(如文本)转换为机器学习算法可用的数据。
2、模型评估: 量化预测的质量
有 3 种不同的 API 用于评估模型预测的质量:
- Estimator score method(估计器得分的方法): Estimators(估计器)有一个
score(得分)
方法,为其解决的问题提供了默认的 evaluation criterion (评估标准)。 在这个页面上没有相关讨论,但是在每个 estimator (估计器)的文档中会有相关的讨论。 - Scoring parameter(评分参数): Model-evaluation tools (模型评估工具)使用 cross-validation (如
model_selection.cross_val_score
和model_selection.GridSearchCV
) 依靠 internal scoring strategy (内部 scoring(得分) 策略)。这在 scoring 参数: 定义模型评估规则 部分讨论。 - Metric functions(指标函数):
metrics
模块实现了针对特定目的评估预测误差的函数。这些指标在以下部分部分详细介绍 分类指标, 多标签排名指标, 回归指标 和 聚类指标 。
二、SciKit-Learn数据集
sklearn.datasets 模块 包含加载数据集的实用程序,包括加载和获取流行引用数据集的方法。它还具有一些人工数据生成器。
更多细节查看: Dataset loading utilities
1、加载数据集
数据科学的第一步通常是加载数据,首先需要学会如何使用SciKit-Learn来加载数据集。
数据集的来源通常是自己准备或第三方处获取。非研究人员,通常是从第三方获取数据。可以下载获取数据集的网站:
SciKit-Learn库中,也有自带一些数据集可以尝试加载。
datasets
模块中也包含了获取其他流行数据集的方法,例如datasets.fetch_openml
可以从openml存储库获取数据集。
在sklearn的0.2版本中,fetch_mldata函数已经被fetch_openml函数取代,例如加载MNIST数据集。
def get_data():
"""
Get MNIST data ready to learn with.
:return:
"""
# 在sklearn的0.2版本中,fetch_mldata函数已经被fetch_openml函数取代
from sklearn.datasets import fetch_openml # 通过名称或数据集ID从openml获取数据集
# 查询到我电脑上的scikit data home目录
from sklearn.datasets.base import get_data_home
print(get_data_home()) # C:\Users\hqs\scikit_learn_data
# Mnist 数据是图像数据:(28,28,1)的灰度图
mnist = fetch_openml('mnist_784')
# print(mnist)
X, y = mnist["data"], mnist["target"]
X.shape # (70000, 784)
y.shape # (70000,)
2、数据集切分
将数据集切分为训练集、测试集。
def get_data():
"""
Get MNIST data ready to learn with.
:return:
"""
# 在sklearn的0.2版本中,fetch_mldata函数已经被fetch_openml函数取代
from sklearn.datasets import fetch_openml # 通过名称或数据集ID从openml获取数据集
# 查询到我电脑上的scikit data home目录
from sklearn.datasets.base import get_data_home
print(get_data_home()) # C:\Users\hqs\scikit_learn_data
# Mnist 数据是图像数据:(28,28,1)的灰度图
mnist = fetch_openml('mnist_784')
# print(mnist)
X, y = mnist["data"], mnist["target"]
X.shape # (70000, 784)
y.shape # (70000,)
# 切分为训练集和测试集
X_train, X_test, y_train, y_test = X[:60000], X[60