不能错过!初学者三种类型机器学习必看指南
作者头像
  • 莫非你是
  • 2019-11-25 15:40:53 4

机器学习基础知识及应用

机器学习可以大致分为三种类型:监督学习、无监督学习和其他方法。其中,监督学习主要用于分类和回归任务,而无监督学习则主要用于聚类分析。本文将介绍这三种学习方法,并演示如何使用Python库scikit-learn来实现这些方法。

监督学习

在监督学习中,算法通过已知的输入(特征)和输出(标签)来学习输入和输出之间的关系。常见的监督学习任务包括分类和回归。

分类:分类任务的目标是将输入数据划分到不同的类别中。例如,垃圾邮件识别就是一种二分类问题。我们将使用scikit-learn中的load_wine数据集来演示分类过程。

首先,我们需要加载数据集并将其转换为pandas数据框:

```python import pandas as pd import numpy as np from sklearn.datasets import loadwine from sklearn.modelselection import traintestsplit from sklearn.metrics import f1_score

wine = loadwine() winedf = pd.DataFrame(wine.data, columns=wine.featurenames) winedf['TARGET'] = pd.Series(wine.target) ```

接下来,将数据集划分为训练集和测试集:

python X_w = wine_df.drop(['TARGET'], axis=1) y_w = wine_df['TARGET'] X_train_w, X_test_w, y_train_w, y_test_w = train_test_split(X_w, y_w, test_size=0.2)

最后,尝试不同的分类器并评估它们的性能:

```python classifiers = [ KNeighborsClassifier(3), SVC(kernel="rbf", C=0.025, probability=True), NuSVC(probability=True), DecisionTreeClassifier(), RandomForestClassifier(), AdaBoostClassifier(), GradientBoostingClassifier() ]

for classifier in classifiers: model = classifier model.fit(Xtrainw, ytrainw) ypredw = model.predict(Xtestw) print(f"{classifier}: {f1score(ytestw, ypred_w, average='weighted')}") ```

上述代码显示,随机森林分类器在本数据集上表现最好。

回归

回归任务的目标是预测连续变量的值。我们将使用波士顿房价数据集来演示回归过程。

首先,加载数据集并将其转换为pandas数据框:

```python from sklearn.datasets import load_boston

boston = loadboston() bostondf = pd.DataFrame(boston.data, columns=boston.featurenames) bostondf['TARGET'] = pd.Series(boston.target) ```

接着,将数据集划分为训练集和测试集:

python X_b = boston_df.drop(['TARGET'], axis=1) y_b = boston_df['TARGET'] X_train_b, X_test_b, y_train_b, y_test_b = train_test_split(X_b, y_b, test_size=0.2)

最后,尝试不同的回归算法并评估它们的性能:

```python regressors = [ linearmodel.Lasso(alpha=0.1), linearmodel.LinearRegression(), ElasticNetCV(alphas=None, copyX=True, cv=5, eps=0.001, fitintercept=True, l1ratio=0.5, maxiter=1000, nalphas=100, njobs=None, normalize=False, positive=False, precompute='auto', randomstate=0, selection='cyclic', tol=0.0001, verbose=0), SVR(C=1.0, cachesize=200, coef0=0.0, degree=3, epsilon=0.1, gamma='autodeprecated', kernel='rbf', maxiter=-1, shrinking=True, tol=0.001, verbose=False), linear_model.Ridge(alpha=.5) ]

for regressor in regressors: model = regressor model.fit(Xtrainb, ytrainb) ypredb = model.predict(Xtestb) print(f"{regressor}: {sqrt(meansquarederror(ytestb, ypredb))}") ```

上述代码显示,线性回归和岭回归在本数据集上的表现最好。

无监督学习

无监督学习主要用于探索数据的内在结构,最常见的方法之一是聚类。我们将使用K-means算法来演示聚类过程。

首先,加载数据集并将其转换为pandas数据框:

python X_w = wine_df.drop(['TARGET'], axis=1)

接着,将数据集划分为训练集和测试集:

python np.random.seed(0) msk = np.random.rand(len(X_w)) < 0.8 train_w = X_w[msk] test_w = X_w[~msk]

然后,进行特征缩放:

python x = train_w.values min_max_scaler = preprocessing.MinMaxScaler() x_scaled = min_max_scaler.fit_transform(x) X_scaled = pd.DataFrame(x_scaled, columns=train_w.columns)

使用Yellowbrick库来确定最佳的聚类数量:

```python from yellowbrick.cluster import KElbowVisualizer

model = KMeans() visualizer = KElbowVisualizer(model, k=(1, 8)) visualizer.fit(X_scaled) visualizer.show() ```

最后,初始化K-means算法并评估其效果:

```python from yellowbrick.cluster import SilhouetteVisualizer

model = KMeans(3, randomstate=42) visualizer = SilhouetteVisualizer(model, colors='yellowbrick') visualizer.fit(Xscaled) visualizer.show() ```

通过轮廓图可以观察到每个聚类的内部一致性和聚类间的差异。

总结

本文介绍了机器学习的三种主要类型,并展示了如何使用scikit-learnYellowbrick库来实现这些任务。通过这些方法,我们可以更好地理解和利用数据中的内在模式。希望这些内容对你有所帮助!

感谢阅读! [留言点赞关注]

[我们一同分享AI学习与发展的干货]

    本文来源:图灵汇
责任编辑: : 莫非你是
声明:本文系图灵汇原创稿件,版权属图灵汇所有,未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:图灵汇",违者将依法追究责任。
    分享
初学者错过机器类型不能指南学习
    下一篇