7.1.1 Scikit-learn简介
Scikit-learn(以下简称sklearn)是开源的Python机器学习库,它基于Numpy和Scipy,提供了大量用于数据挖掘和分析的工具,包括数据预处理、交叉验证、算法与可视化算法等一系列接口。sklearn的官方网站是http://scikit-learn.org/stable/,在上面可以找到相关的Scikit-Learn的资源,模块下载,文档,例程等。
sklearn的基本功能主要被分为六个部分,分类,回归,聚类,数据降维,模型选择,数据预处理,具体可以参考官方网站上的文档。
7.1.2 Scikit-learn快速入门
sklearn可以独立完成机器学习的以下六个步骤,
- 选择数据,即将数据分成三组,分别是训练数据、验证数据和测试数据。
- 模拟数据,使用训练数据来构建使用相关特征的模型。
- 验证模型,使用验证数据接入模型。
- 测试模型,使用测试数据检查被验证的模型的表现。
- 使用模型,使用完全训练好的模型在新数据上做预测。
- 调优模型,使用更多数据、不同的特征或调整过的参数来提升算法的性能表现。
此外sklearn支持多种格式的数据,下面以该库内置的莺尾花(iris)数据集为例,通过k邻近算法,利用scikit-learn模块对数据进行分析,示例代码:
from sklearn import neighbors, datasets, preprocessing
from sklearn.cross_validation import train_test_split
from sklearn.metrics import accuracy_score
iris = datasets.load_iris() #通过数据集导入iris数据
X, y = iris.data[:, :2], iris.target #将iris数据的自变量和结果标签分别赋予向量X和y
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=33) #切分数据集分别为训练集和测试集
scaler = preprocessing.StandardScaler().fit(X_train) #数据预处理,即数据标准化
X_train = scaler.transform(X_train)
X_test = scaler.transform(X_test)
knn = neighbors.KNeighborsClassifier(n_neighbors=5) #导入k近邻算法
knn.fit(X_train, y_train) #模拟数据模型
y_pred = knn.predict(X_test) #预测结果
accuracy_score(y_test, y_pred) #测试预测结果的准确率
运行结果:
0.63157894736842102
在本例中,通过sklearn库分别导入了k近邻算法的neighbors模块,内置的数据集datasets模块和数据预处理preprocessing模块,此外按照数据分析的流程,还导入了交叉验证模块cross_validation,以及检验数据模型效果的metrics模块。
此程序运行的结果即为该模型经过测试集检验得出的准确率。