zoukankan      html  css  js  c++  java
  • 机器学习算法总结

    作者:大树
    更新时间:2017.12.14

    email:59888745@qq.com

    说明:因内容较多,会不断更新 xxx学习总结;

    回主目录:2017 年学习记录和总结

    机器学习算法总结:

    线性回归

    (Linear Regression) (ML分类)

    Y=aX+b

    利用连续性变量来估计实际数值

    通过线性回归算法找出自变量和因变量间的最佳线性关系,图形上可以确定一条最佳直线

    from   sklearn import linear_model

    x_train=input_variables_values_training_datasets

    y_train=target_variables_values_training_datasets

    x_test=input_variables_values_test_datasets

    linear   = linear_model.LinearRegression()

    linear.fit(x_train,   y_train)

    linear.score(x_train,   y_train)

    print('Coefficient:   ', linear.coef_)

    print('Intercept:   ', linear.intercept_)

    predicted=   linear.predict(x_test)

    房价,呼叫次数和总销售额

    逻辑回归(ML分类)

    利用已知的自变量来预测一个离散型因变量的值(像二进制值0/1,是/否,真/假)。简单来说,它就是通过拟合一个逻辑函数(logit fuction)来预测一个事件发生的概率。所以它预测的是一个概率值,自然,它的输出值应该在0到1之间.

    #Import   Library

    from   sklearn.linear_model import LogisticRegression

    #   Create logistic regression object

    model   = LogisticRegression()

    #   Train the model using the training sets and check score

    model.fit(X,   y)

    model.score(X,   y)

    #Equation   coefficient and Intercept

    print('Coefficient:   ', model.coef_)

    print('Intercept:   ', model.intercept_)

    #Predict   Output

    predicted=   model.predict(x_test)

    二进制值0/1,是/否,真/假

    决策树(ML分类)

    可以运用于类别变量(categorical variables)也可以作用于连续变量。这个算法可以让我们把一个总体分为两个或多个群组。分组根据能够区分总体的最重要的特征变量/自变量进行

    #   Create tree object

    model   = tree.DecisionTreeClassifier(criterion='gini')

    #   model = tree.DecisionTreeRegressor() for regression

    #   Train the model using the training sets and check score

    model.fit(X,   y)

    model.score(X,   y)

    #Predict   Output

    predicted=   model.predict(x_test)

    把一个总体分为两个或多个群组解决分类问题

    支持向量机(SVM)(ML分类)

    将每一个数据作为一个点在一个n维空间上作图(n是特征数),每一个特征值就代表对应坐标值的大小。比如说我们有两个特征:一个人的身高和发长。我们可以将这两个变量在一个二维空间上作图,图上的每个点都有两个坐标值(这些坐标轴也叫做支持向量)。

    #Import   Library

    from   sklearn import svm

    #   Create SVM classification object

    model   = svm.svc()

    #   Train the model using the training sets and check score

    model.fit(X,   y)

    model.score(X,   y)

    #Predict   Output

    predicted=   model.predict(x_test)

    是把不同颜色的小球分到不同空间里

    朴素贝叶斯(ML分类)

    假设条件是自变量之间相互独立。简言之,朴素贝叶斯假定某一特征的出现与其它特征无关.

    如何从先验概率P(c),P(x)和条件概率P(x|c)中计算后验概率P(c|x)。

    #Import   Library

    from   sklearn.naive_bayes import GaussianNB

    #   Create NB classification object model = GaussianNB()

    model   = GaussianNB()

    #   Train the model using the training sets and check score

    model.fit(X,   y)

    #Predict   Output

    predicted=   model.predict(x_test)

    如果一个水果它是红色的,圆状的,直径大概7cm左右,我们可能猜测它为苹果

    天气变量和目标变量“是否出去玩

                            

    KNN(K-邻近算法)(ML分类)

    找出已知数据中距离未知事件最近的K组数据,最后按照这K组数据里最常见的类别预测该事件, 距离函数可以是欧式距离,曼哈顿距离,闵氏距离   (Minkowski Distance), 和汉明距离(Hamming Distance)。前三种用于连续变量,汉明距离用于分类变量。如果K=1,那问题就简化为根据最近的数据分类。K值的选取时常是KNN建模里的关键。

    #Import   Library

    from   sklearn.neighbors import KNeighborsClassifier

    #Assumed   you have, X (predictor) and Y (target) for training data set and   x_test(predictor) of test_dataset

    #   Create KNeighbors classifier object model

    KNeighborsClassifier(n_neighbors=6)   # default value for n_neighbors is 5

    #   Train the model using the training sets and check score

    model.fit(X,   y)

    #Predict   Output

    predicted=   model.predict(x_test)

    分类问题,也可以用于回归问题

    KNN的计算成本很高.

    所有特征应该标准化数量级,否则数量级大的特征在计算距离上会有偏移.

    在进行KNN前预处理数据,例如去除异常值,噪音等.

    K均值算法(K-Means)(ML聚类非监督式学习)

    利用了一定数量的集群(假设K个集群)对给定数据进行分类。同一集群内的数据点是同类的,不同集群的数据点不同类.

    #Import   Library

    from   sklearn.cluster import KMeans

    #Assumed   you have, X (attributes) for training data set and x_test(attributes) of   test_dataset

    #   Create KNeighbors classifier object model

    k_means   = KMeans(n_clusters=3, random_state=0)

    #   Train the model using the training sets and check score

    model.fit(X)

    #Predict   Output

    predicted=   model.predict(x_test)

    解决聚类问题的非监督式学习算法.

    随机森林(ML分类)

    随机森林是对决策树集合的特有名称。随机森林里我们有多个决策树(所以叫“森林”)。为了给一个新的观察值分类,根据它的特征,每一个决策树都会给出一个分类。随机森林算法选出投票最多的分类作为分类结果。

    #Import Library

    from sklearn.ensemble import   RandomForestClassifier

    #Assumed you have, X (predictor) and Y   (target) for training data set and x_test(predictor) of test_dataset

    # Create Random Forest object

    model= RandomForestClassifier()

    # Train the model using the training sets   and check score

    model.fit(X, y)

    #Predict Output

    predicted= model.predict(x_test)

    降维算法(Dimensionality Reduction Algorithms

    怎样才能从1000或2000个变量里找到最重要的变量呢?这种情况下降维算法及其他算法,如决策树,随机森林,PCA,因子分析,相关矩阵,和缺省值比例等,就能帮我们解决难题。

    #Import   Library

    from   sklearn import decomposition

    #Assumed   you have training and test data set as train and test

    #   Create PCA obeject pca= decomposition.PCA(n_components=k) #default value of k   =min(n_sample, n_features)

    #   For Factor analysis

    #fa=   decomposition.FactorAnalysis()

    #   Reduced the dimension of training dataset using PCA

    train_reduced   = pca.fit_transform(train)

    #Reduced   the dimension of test dataset

    test_reduced   = pca.transform(test)

    Gradient Boosing 和 AdaBoost

    是在有大量数据时提高预测准确度的boosting算法。Boosting是一种集成学习方法。它通过有序结合多个较弱的分类器/估测器的估计结果来提高预测准确度。这些boosting算法在Kaggle,AV Hackthon,   CrowdAnalytix等数据科学竞赛中有出色发挥。

    #Import   Library

    from   sklearn.ensemble import GradientBoostingClassifier

    #Assumed   you have, X (predictor) and Y (target) for training data set and   x_test(predictor) of test_dataset

    #   Create Gradient Boosting Classifier object

    model=   GradientBoostingClassifier(n_estimators=100, learning_rate=1.0, max_depth=1,   random_state=0)

    # Train   the model using the training sets and check score

    model.fit(X,   y)

    #Predict   Output

    predicted=   model.predict(x_test)

  • 相关阅读:
    关于 TIdHttp
    DCEF3 相关资料
    WPF RichTextBox 控件常用方法和属性
    Delphi Data Type to C# Data Type
    获取 CPU 序列号
    Visual Studio 调用 Delphi DLL 会退出的解决方案
    IDHttp的基本用法(转)
    TChromeTabs 优化改进
    java与json转换
    js charAt()方法
  • 原文地址:https://www.cnblogs.com/csj007523/p/8039026.html
Copyright © 2011-2022 走看看