美文网首页
python Scikit-Learn 算法

python Scikit-Learn 算法

作者: a十二_4765 | 来源:发表于2017-08-31 10:56 被阅读62次

    朴素贝叶斯

    它也是最有名的机器学习的算法之一,它的主要任务是恢复训练样本的数据分布密度。这个方法通常在多类的分类问题上表现的很好。

    from sklearn import metrics

    from sklearn.naive_bayes import GaussianNB

    model = GaussianNB()

    model.fit(X, y)

    print(model)

    # make predictions

    expected = y

    predicted = model.predict(X)

    # summarize the fit of the model

    print(metrics.classification_report(expected, predicted))

    print(metrics.confusion_matrix(expected, predicted))

    k-最近邻

    kNN(k-最近邻)方法通常用于一个更复杂分类算法的一部分。例如,我们可以用它的估计值做为一个对象的特征。有时候,一个简单的kNN算法在良好选择的特征上会有很出色的表现。当参数(主要是metrics)被设置得当,这个算法在回归问题中通常表现出最好的质量。

    from sklearn import metrics

    from sklearn.neighbors import KNeighborsClassifier

    # fit a k-nearest neighbor model to the data

    model = KNeighborsClassifier()

    model.fit(X, y)

    print(model)

    # make predictions

    expected = y

    predicted = model.predict(X)

    # summarize the fit of the model

    print(metrics.classification_report(expected, predicted))

    print(metrics.confusion_matrix(expected, predicted))

    决策树

    分类和回归树(CART)经常被用于这么一类问题,在这类问题中对象有可分类的特征且被用于回归和分类问题。决策树很适用于多类分类。

    from sklearn import metrics

    from sklearn.tree import DecisionTreeClassifier

    # fit a CART model to the data

    model = DecisionTreeClassifier()

    model.fit(X, y)

    print(model)

    # make predictions

    expected = y

    predicted = model.predict(X)

    # summarize the fit of the model

    print(metrics.classification_report(expected, predicted))

    print(metrics.confusion_matrix(expected, predicted))

    支持向量机

    SVM(支持向量机)是最流行的机器学习算法之一,它主要用于分类问题。同样也用于逻辑回归,SVM在一对多方法的帮助下可以实现多类分类。

    from sklearn import metrics

    from sklearn.svm import SVC

    # fit a SVM model to the data

    model = SVC()

    model.fit(X, y)

    print(model)

    # make predictions

    expected = y

    predicted = model.predict(X)

    # summarize the fit of the model

    print(metrics.classification_report(expected, predicted))

    print(metrics.confusion_matrix(expected, predicted))

    除了分类和回归问题,Scikit-Learn还有海量的更复杂的算法,包括了聚类, 以及建立混合算法的实现技术,如Bagging和Boosting。

    如何优化算法的参数

    在编写高效的算法的过程中最难的步骤之一就是正确参数的选择。一般来说如果有经验的话会容易些,但无论如何,我们都得寻找。幸运的是Scikit-Learn提供了很多函数来帮助解决这个问题。

    作为一个例子,我们来看一下规则化参数的选择,在其中不少数值被相继搜索了:

    import numpy as np

    from sklearn.linear_model import Ridge

    from sklearn.grid_search import GridSearchCV

    # prepare a range of alpha values to test

    alphas = np.array([1,0.1,0.01,0.001,0.0001,0])

    # create and fit a ridge regression model, testing each alpha

    model = Ridge()

    grid = GridSearchCV(estimator=model, param_grid=dict(alpha=alphas))

    grid.fit(X, y)

    print(grid)

    # summarize the results of the grid search

    print(grid.best_score_)

    print(grid.best_estimator_.alpha)

    有时候随机地从既定的范围内选取一个参数更为高效,估计在这个参数下算法的质量,然后选出最好的。

    import numpy as np

    from scipy.stats import uniform as sp_rand

    from sklearn.linear_model import Ridge

    from sklearn.grid_search import RandomizedSearchCV

    # prepare a uniform distribution to sample for the alpha parameter

    param_grid = {'alpha': sp_rand()}

    # create and fit a ridge regression model, testing random alpha values

    model = Ridge()

    rsearch = RandomizedSearchCV(estimator=model, param_distributions=param_grid, n_iter=100)

    rsearch.fit(X, y)

    print(rsearch)

    # summarize the results of the random parameter search

    print(rsearch.best_score_)

    print(rsearch.best_estimator_.alpha)

    相关文章

      网友评论

          本文标题:python Scikit-Learn 算法

          本文链接:https://www.haomeiwen.com/subject/mdxqjxtx.html