Python科学工具箱学习教程
Scikit Learn -> 科学工具学习

Python的Scikit-learn
Scikit主要使用Python进行开发,其中一些核心算法使用Cython编写以提供更好的性能。Scikit-learn用于构建模型,不建议将其用于读取、操纵和总结数据,因为有其他更适合此目的的框架可用。Scikit是开源软件,并采用BSD许可发布。
安装Scikit Learn
Scikit的前提是您的设备上运行着Python 2.7或更高版本的平台,并具有NumPy(1.8.2及以上版本)和SciPy(0.13.3及以上版本)软件包。一旦我们安装好这些软件包,就可以进行安装了。若要通过pip进行安装,请在终端中运行以下命令。
pip install scikit-learn
如果你喜欢conda,你也可以使用conda进行软件包安装,运行以下命令即可:
conda install scikit-learn
使用Scikit-Learn
安装完成后,您可以将scikit-learn导入您的Python代码中,以便轻松使用。
import sklearn
Scikit Learn 载入数据集
让我们从加载一个数据集开始玩起来。我们加载一个名为Iris的简单数据集。它是关于一朵花的数据集,包含了关于花不同测量值的150个观测结果。我们来看看如何使用scikit-learn加载这个数据集。
# Import scikit learn
from sklearn import datasets
# Load data
iris= datasets.load_iris()
# Print shape of data to confirm data is loaded
print(iris.data.shape)

Scikit Learn SVM – 学习和预测
现在我们已经加载了数据,让我们尝试从中学习并在新数据上进行预测。为了实现这个目的,我们需要创建一个估计器,然后调用其fit方法。
from sklearn import svm
from sklearn import datasets
# Load dataset
iris = datasets.load_iris()
clf = svm.LinearSVC()
# learn from the data
clf.fit(iris.data, iris.target)
# predict for unseen data
clf.predict([[ 5.0, 3.6, 1.3, 0.25]])
# Parameters of model can be changed by using the attributes ending with an underscore
print(clf.coef_ )

使用Scikit-Learn进行线性回归
使用scikit-learn创建各种模型相当简单。让我们以一个简单的回归示例开始。
#import the model
from sklearn import linear_model
reg = linear_model.LinearRegression()
# use it to fit a data
reg.fit ([[0, 0], [1, 1], [2, 2]], [0, 1, 2])
# Let's look into the fitted data
print(reg.coef_)

k-最近邻分类器
让我们尝试一个简单的分类算法。这个分类器使用基于球树的算法来表示训练样本。
from sklearn import datasets
# Load dataset
iris = datasets.load_iris()
# Create and fit a nearest-neighbor classifier
from sklearn import neighbors
knn = neighbors.KNeighborsClassifier()
knn.fit(iris.data, iris.target)
# Predict and print the result
result=knn.predict([[0.1, 0.2, 0.3, 0.4]])
print(result)

K-means聚类
这是最简单的聚类算法。将集合分成‘k’个簇,并将每个观测分配到一个簇中。这是迭代完成的,直到簇收敛。接下来的程序中我们将创建一个这样的聚类模型。
from sklearn import cluster, datasets
# load data
iris = datasets.load_iris()
# create clusters for k=3
k=3
k_means = cluster.KMeans(k)
# fit data
k_means.fit(iris.data)
# print results
print( k_means.labels_[::10])
print( iris.target[::10])

结论
在这个教程中,我们已经看到Scikit-Learn使得使用多个机器学习算法变得容易。我们已经看到了回归、分类和聚类的例子。Scikit-Learn仍在开发阶段,并由志愿者继续开发和维护,但在社区中非常受欢迎。去尝试你自己的例子吧。