python sklearn实现机器学习分类算法

本文介绍了K-NearestNeighbors(KNN)、SupportVectorMachines(SVM)、LogisticRegression(LR)、决策树、随机森林、GBDT以及朴素贝叶斯等基础机器学习算法在分类和回归任务中的应用,强调了它们的特点、适用场景及在Python中的实现。
摘要由CSDN通过智能技术生成

一、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

KNN(K-Nearest Neighbors)是一种基于实例的学习方法,它是一种无参数的模型,能够处理分类和回归问题。 在Python中,我们可以使用scikit-learn(sklearn)库来实现KNN模型。下面是一个使用sklearn实现KNN模型的示例代码。 ```python from sklearn.neighbors import KNeighborsClassifier from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score # 加载数据集 iris = load_iris() X = iris.data y = iris.target # 划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42) # 创建KNN分类器 knn = KNeighborsClassifier(n_neighbors=3) # 训练模型 knn.fit(X_train, y_train) # 预测测试集 y_pred = knn.predict(X_test) # 计算准确率 accuracy = accuracy_score(y_test, y_pred) print("Accuracy:", accuracy) ``` 在上面的代码中,我们使用了鸢尾花数据集作为示例数据集,首先加载数据集并将其分为训练集和测试集。然后,我们创建了一个KNN分类器,并使用训练集对其进行训练。最后,我们对测试集进行预测,并计算准确率。 在创建KNN分类器时,我们指定了一个参数n_neighbors,它表示我们要考虑多少个最近的邻居。在训练模型时,KNN算法会计算每个样本点与最近的k个邻居之间的距离,并将它们归为最近的邻居中出现最多的类别。 总的来说,使用sklearn实现KNN模型非常简单,只需要几行代码就可以完成。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值