一、KNN
K-Nearest Neighbors (KNN) 是一种基本的分类和回归方法。在分类任务中,KNN 根据输入特征的 k 个最近邻居的类别来预测输入的类别。而在回归任务中,KNN 则根据输入特征的 k 个最近邻居的实数值来预测输入的实数值。在训练过程中,KNN 并不需要明确的训练阶段和预测阶段的划分,而是在输入数据时进行即时预测。KNN 具有简单、直观和易于实现的特点,并且在一些简单的分类和回归问题上表现良好。但是,对于复杂的模式识别问题,KNN 可能需要较大的计算资源和时间来找到足够的最近邻居。
1 2 3 4 5 6 7 | from sklearn.neighbors import KNeighborsClassifier import numpy as np def KNN(X,y,XX):#X,y 分别为训练数据集的数据和标签,XX为测试数据 model = KNeighborsClassifier(n_neighbors=10)#默认为5 model.fit(X,y) predicted = model.predict(XX) return predicted |
二、SVM
Support Vector Machines (SVM) 是一种监督学习算法,主要用于分类和回归问题。SVM 通过将输入特征映射到高维空间中,使得数据在高维空间中更容易划分。在分类问题中,SVM 寻找一个超平面,使得正例和反例之间的边界最大化。在回归问题中,SVM 则寻找一个超平面,使得输入特征和实数值之间的差距最小化。SVM 具有泛化能力强、适用于大规模数据集和复杂模式识别问题的优点。但是,SVM 对于参数的选择很敏感,并且对于非线性问题需要使用核函数进行映射。
1 2 3 4 5 6 | from sklearn.svm import SVC def SVM(X,y,XX): model = SVC(c=5.0) model.fit(X,y) predicted = model.predict(XX) return predicted |
SVM Classifier using cross validation
1 2 3 4 5 6 7 8 9 10 11 12 13 | def svm_cross_validation(train_x, train_y): from sklearn.grid_search import GridSearchCV from sklearn.svm import SVC model = SVC(kernel='rbf', probability=True) param_grid = {'C': [1e-3, 1e-2, 1e-1, 1, 10, 100, 1000], 'gamma': [0.001, 0.0001]} grid_search = GridSearchCV(model, param_grid, n_jobs = 1, verbose=1) grid_search.fit(train_x, train_y) best_parameters = grid_search.best_estimator_.get_params() for para, val in list(best_parameters.items()): print(para, val) model = SVC(kernel='rbf', C=best_parameters['C'], gamma=best_parameters['gamma'], probability=True) model.fit(train_x, train_y) return model |
三、LR
Logistic Regression (LR) 是一种概率模型,用于预测二分类问题中的概率。LR 通过拟合一个逻辑函数来预测概率,并使用最大似然估计来估计模型参数。LR 可以用于解决二分类问题中的概率预测、分类阈值设置等问题。由于其简单、易于理解和实现的特点,LR 在很多领域都有广泛的应用。但是,LR 对于大规模数据集和复杂模式识别问题的处理能力有限,并且对于多分类问题需要进行扩展处理。
1 2 3 4 5 6 | from sklearn.linear_model import LogisticRegression def LR(X,y,XX): model = LogisticRegression() model.fit(X,y) predicted = model.predict(XX) return predicted |
四、决策树(CART)
Classification and Regression Trees (CART) 是一种决策树学习方法,可以用于解决分类和回归问题。CART 通过递归地将数据集划分成若干个子集,并对每个子集进行进一步的划分,直到满足停止条件为止。在分类问题中,CART 生成一棵分类树,根据树的路径来判断输入特征的类别。在回归问题中,CART 生成一棵回归树,根据树的路径来预测输入特征的实数值。CART 具有简单、直观和易于实现的特点,并且在很多领域都有广泛的应用。但是,CART 对于大规模数据集的处理能力有限,并且对于复杂模式识别问题的泛化能力有待提高。
1 2 3 4 5 6 | from sklearn.tree import DecisionTreeClassifier def CTRA(X,y,XX): model = DecisionTreeClassifier() model.fit(X,y) predicted = model.predict(XX) return predicted |
五、随机森林
Random Forests 是一种集成学习方法,通过构建多棵决策树并取其输出的平均值来进行预测。每棵树都是在随机选择的训练样本和随机选择的特征子集上独立构建的,这使得随机森林具有较好的泛化能力和处理大规模数据集的能力。随机森林广泛应用于分类和回归问题,并在很多领域都取得了良好的效果。但是,随机森林对于特征选择和数据预处理的要求较高,并且参数的选择也会影响其性能。
1 2 3 4 5 6 | from sklearn.ensemble import RandomForestClassifier def CTRA(X,y,XX): model = RandomForestClassifier() model.fit(X,y) predicted = model.predict(XX) return predicted |
六、GBDT(Gradient Boosting Decision Tree)
Gradient Boosting Decision Tree (GBDT) 是一种迭代算法,通过逐步优化损失函数来提高模型的预测精度。GBDT 在每一步中都通过在当前模型的基础上增加一个额外的决策树来减小损失函数的梯度。通过多轮迭代,GBDT 可以逐渐提高模型的预测精度。GBDT 在很多领域都有广泛的应用,尤其在机器学习竞赛中经常获得优异的成绩。但是,GBDT 对于特征选择和数据预处理的要求较高,并且对于大规模数据集的处理能力有限。
1 2 3 4 5 6 | from sklearn.ensemble import GradientBoostingClassifier def CTRA(X,y,XX): model = GradientBoostingClassifier() model.fit(X,y) predicted = model.predict(XX) return predicted |
七、朴素贝叶斯
朴素贝叶斯(Naive Bayes)是一种基于贝叶斯定理与特征条件独立假设的分类方法。它假设各个特征之间相互独立,这个假设在实际应用中往往是不成立的,这给朴素贝叶斯的正确分类带来了一定影响。朴素贝叶斯法在文本分类、图像识别等领域有着广泛的应用。
代码中给出了三种方式:一个是基于高斯分布求概率,一个是基于多项式分布求概率,一个是基于伯努利分布求概率。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | from sklearn.naive_bayes import GaussianNB from sklearn.naive_bayes import MultinomialNB from sklearn.naive_bayes import BernoulliNB def GNB(X,y,XX): model =GaussianNB() model.fit(X,y) predicted = model.predict(XX) return predicted def MNB(X,y,XX): model = MultinomialNB() model.fit(X,y) predicted = model.predict(XX return predicted def BNB(X,y,XX): model = BernoulliNB() model.fit(X,y) predicted = model.predict(XX return predicted |