• 机器学习
    • Scipy 栈(Scipy stack)
      • 安装
    • scikit-learn
      • 安装
      • 例子

    机器学习

    https://farm4.staticflickr.com/3954/34018729885_002ced9b54_k_d.jpg
    Python拥有大量的数据分析、统计和机器学习库,使其成为许多数据科学家的首选语言。

    一些广泛使用的机器学习和其他数据科学应用程序包被列在下面:

    Scipy 栈(Scipy stack)

    Scipy 栈由数据科学所使用的一组核心帮助包组成,用于统计分析和数据可视化。由于其庞大的功能和易用性,scripy栈被认为是大多数数据科学应用的必备条件。

    该栈包含以下包(提供文档链接):

    • NumPy
    • SciPy library
    • Matplotlib
    • IPython
    • pandas
    • Sympy
    • nose
      该栈还附带了Python,但已被排除在上面的列表中。

    安装

    要安装完整的栈或单个包,您可以参考 这里给出的说明。

    注意:Anaconda 是高推荐的,因为它可以无缝地安装和维护数据科学包。

    scikit-learn

    Scikit是一个用于Python的免费开源机器学习库。 它提供了现成的功能来实现诸如线性回归、分类器、SVM、k-均值和神经网络等多种算法。它还有一些可直接用于训练和测试的样本数据集。

    由于其速度、鲁棒性和易用性,它是许多机器学习应用程序中使用最广泛的库之一。

    安装

    通过 PyPI:

    1. pip install -U scikit-learn

    通过 conda:

    1. conda install scikit-learn

    scikit-learn 也随Anaconda发行(如上所述)。 有关更多安装说明,请参阅此链接 。

    例子

    本例中,我们在 Iris 数据集上训练一个简单的分类器,它与scikit-learn捆绑在一起。

    数据集具有花的四个特征:萼片长度,萼片宽度,花瓣长度和花瓣宽度,并将它们分为三个花种(标签):setosa、versicolor或virginica。 标签已经被表示为数据集中的数字:0(setosa),1(versicolor)和2(virginica)。

    我们清洗Iris数据集,并将其分为独立的训练和测试集:保留最后10个数据点进行测试,剩余的进行训练。然后我们在训练集训练分类器,并对测试集进行预测。

    1. from sklearn.datasets import load_iris
    2. from sklearn import tree
    3. from sklearn.metrics import accuracy_score
    4. import numpy as np
    5.  
    6. #loading the iris dataset
    7. iris = load_iris()
    8.  
    9. x = iris.data #array of the data
    10. y = iris.target #array of labels (i.e answers) of each data entry
    11.  
    12. #getting label names i.e the three flower species
    13. y_names = iris.target_names
    14.  
    15. #taking random indices to split the dataset into train and test
    16. test_ids = np.random.permutation(len(x))
    17.  
    18. #splitting data and labels into train and test
    19. #keeping last 10 entries for testing, rest for training
    20.  
    21. x_train = x[test_ids[:-10]]
    22. x_test = x[test_ids[-10:]]
    23.  
    24. y_train = y[test_ids[:-10]]
    25. y_test = y[test_ids[-10:]]
    26.  
    27. #classifying using decision tree
    28. clf = tree.DecisionTreeClassifier()
    29.  
    30. #training (fitting) the classifier with the training set
    31. clf.fit(x_train, y_train)
    32.  
    33. #predictions on the test dataset
    34. pred = clf.predict(x_test)
    35.  
    36. print pred #predicted labels i.e flower species
    37. print y_test #actual labels
    38. print (accuracy_score(pred, y_test))*100 #prediction accuracy

    由于我们在每次迭代中随机分割和分类训练,所以准确性可能会有所不同。运行上面的代码得到:

    1. [0 1 1 1 0 2 0 2 2 2]
    2. [0 1 1 1 0 2 0 2 2 2]
    3. 100.0

    第一行包含由我们的分类器预测的测试数据的标签(即花种),第二行包含数据集中给出的实际花种。我们这次准确率达到100%。

    关于scikit-learn的更多内容可以在 文档中阅读。

    原文: http://pythonguidecn.readthedocs.io/zh/latest/scenarios/ml.html