Python机器学习:Scikit-Learn教程
作者头像
  • 陈丽慧
  • 2019-12-03 13:03:28 7

Python机器学习教程:使用scikit-learn探索手写数字

使用Python进行机器学习

机器学习是计算机科学的一个分支,专注于研究能够自我学习的算法。常见的任务包括概念学习、性能学习、聚类和模式发现。这些任务通常通过观察已有数据来实现学习。

机器学习的目标是通过经验提升性能,最终实现自动化学习,以减少人类干预。今天的教程将带你了解Python机器学习的基础知识。

探索Python机器学习

在这个教程中,你将学习如何使用Python及其库(如NumPy和Matplotlib)来探索数据。你将学会如何进行主成分分析(PCA)、预处理数据、构建和评估聚类模型,以及使用支持向量机(SVM)进行分类。

加载数据集

在数据科学中,第一步通常是加载数据。这里我们将使用scikit-learn提供的手写数字数据集。如果你是初学者,可以从UCI机器学习库或Kaggle下载其他数据集。

要加载数据集,请使用以下代码:

```python

导入数据集模块

from sklearn import datasets

加载手写数字数据集

digits = datasets.load_digits()

打印数据集信息

print(digits.data) ```

探索数据

初次接触数据集时,先进行数据描述,查看数据的基本信息。你可以使用以下代码来查看数据的形状和目标值:

```python

获取数据集的键

print(digits.keys())

查看数据

print(digits.data)

查看目标值

print(digits.target)

查看数据描述

print(digits.DESCR) ```

可视化数据

使用Matplotlib库可以将数据可视化。你可以通过以下代码绘制数据的图像:

```python import matplotlib.pyplot as plt

设置图像大小

fig = plt.figure(figsize=(6, 6))

调整子图参数

fig.subplots_adjust(left=0, right=1, bottom=0, top=1, hspace=0.05, wspace=0.05)

绘制图像

for i in range(64): ax = fig.add_subplot(8, 8, i + 1, xticks=[], yticks=[]) ax.imshow(digits.images[i], cmap=plt.cm.binary, interpolation='nearest') ax.text(0, 7, str(digits.target[i]))

plt.show() ```

使用主成分分析(PCA)降维

由于数据集维度较高,使用PCA可以帮助你更好地理解数据。以下是使用PCA降维并可视化数据的代码:

```python from sklearn.decomposition import PCA

创建PCA模型

pca = PCA(n_components=2)

拟合并转换数据

reduceddatapca = pca.fit_transform(digits.data)

打印数据形状

print(reduceddatapca.shape)

可视化PCA结果

colors = ['black', 'blue', 'purple', 'yellow', 'white', 'red', 'lime', 'cyan', 'orange', 'gray']

for i in range(len(colors)): x = reduceddatapca[:, 0][digits.target == i] y = reduceddatapca[:, 1][digits.target == i] plt.scatter(x, y, c=colors[i])

plt.legend(digits.targetnames, bboxto_anchor=(1.05, 1), loc=2, borderaxespad=0.) plt.xlabel('First Principal Component') plt.ylabel('Second Principal Component') plt.title("PCA Scatter Plot") plt.show() ```

构建聚类模型

接下来,使用KMeans算法构建聚类模型。以下是构建和评估模型的代码:

```python from sklearn.cluster import KMeans

创建KMeans模型

clf = KMeans(init='k-means++', nclusters=10, randomstate=42) clf.fit(digits.data)

可视化聚类中心

fig = plt.figure(figsize=(8, 3)) fig.suptitle('Cluster Center Images', fontsize=14, fontweight='bold') for i in range(10): ax = fig.addsubplot(2, 5, 1 + i) ax.imshow(clf.clustercenters_[i].reshape((8, 8)), cmap=plt.cm.binary) plt.axis('off')

plt.show() ```

使用支持向量机(SVM)进行分类

最后,使用SVM进行分类。以下是使用SVM构建和评估分类模型的代码:

```python from sklearn import svm from sklearn.modelselection import traintestsplit from sklearn.metrics import classificationreport, confusion_matrix

划分数据集

Xtrain, Xtest, ytrain, ytest = traintestsplit(digits.data, digits.target, testsize=0.25, randomstate=42)

创建SVM模型

svcmodel = svm.SVC(gamma=0.001, C=100., kernel='linear') svcmodel.fit(Xtrain, ytrain)

预测并评估模型

predicted = svcmodel.predict(Xtest) print(classificationreport(ytest, predicted)) print(confusionmatrix(ytest, predicted))

可视化预测结果

fig, ax = plt.subplots(1, 2, figsize=(8, 4)) fig.subplots_adjust(top=0.85)

Xiso = Isomap(nneighbors=10).fittransform(Xtrain) ax[0].scatter(Xiso[:, 0], Xiso[:, 1], c=predicted) ax[0].settitle('Predicted labels') ax[1].scatter(Xiso[:, 0], Xiso[:, 1], c=ytrain) ax[1].set_title('Actual Labels')

fig.suptitle('Predicted versus actual labels', fontsize=14, fontweight='bold') plt.show() ```

通过这些步骤,你已经掌握了Python机器学习的基础知识,包括数据加载、探索、可视化、降维、聚类和分类。现在,你可以开始自己的项目,使用其他数据集进行探索和分析。

    本文来源:图灵汇
责任编辑: : 陈丽慧
声明:本文系图灵汇原创稿件,版权属图灵汇所有,未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:图灵汇",违者将依法追究责任。
    分享
机器教程ScikitPython学习Learn
    下一篇