Python SciKit学习教程

时间:2020-02-23 14:43:15  来源:igfitidea点击:

Scikit学习

Scikit-learn是用于Python的机器学习库。
它具有多种回归,分类和聚类算法,包括SVM,梯度提升,k均值,随机森林和DBSCAN。
它旨在与Python Numpy和SciPy一起使用。

scikit-learn项目由David Cournapeau的scikits.learn作为Google的"代码之夏"项目(也称为GSoC)启动。
它的名称来自" Scikit",这是SciPy的单独第三方扩展。

Python Scikit学习

Scikit是用Python编写的(大部分),其一些核心算法是用Cython编写的,以实现更好的性能。

Scikit-learn用于构建模型,不建议将其用于读取,处理和汇总数据,因为有更好的框架可用于此目的。

它是开源的,并在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学习加载数据集

让我们从加载要播放的数据集开始。
让我们加载一个名为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学习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学习线性回归

使用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)

让我们运行分类器并检查结果,分类器应返回0。
让我们尝试以下示例:

K均值聚类

这是最简单的聚类算法。
该集合分为" 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])

在运行该程序时,我们将在列表中看到单独的群集。