机器学习是计算机科学的一个分支,专注于研究能够自我学习的算法。常见的任务包括概念学习、性能学习、聚类和模式发现。这些任务通常通过观察已有数据来实现学习。
机器学习的目标是通过经验提升性能,最终实现自动化学习,以减少人类干预。今天的教程将带你了解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降维并可视化数据的代码:
```python from sklearn.decomposition import PCA
pca = PCA(n_components=2)
reduceddatapca = pca.fit_transform(digits.data)
print(reduceddatapca.shape)
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
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构建和评估分类模型的代码:
```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)
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机器学习的基础知识,包括数据加载、探索、可视化、降维、聚类和分类。现在,你可以开始自己的项目,使用其他数据集进行探索和分析。