当前位置:   article > 正文

基于Python实现五大常用分类算法(原理+代码)_python分类算法

python分类算法

读: 在机器学习和统计中,分类算法通过对已知类别训练集的计算和分析,从中发现类别规则并预测新数据的类别。分类被认为是监督学习的一个实例,即学习可以获得正确识别的观察的训练集的情况。

实现分类的算法,特别是在具体实现中,被称为分类器。本文将从实际应用案例出发,总结性介绍几种常用的单模型分类器。原理和代码均在文中,内容较长,建议收藏,后面需要用到时方便查看。

获取更多资源,关注VX公中号:python语言空间

一般应用

分类分析用于提炼应用规则

  • 利用构建算法过程中的分类规则;

  • 以决策树为例:决策树分类节点表示局部最优化的显著特征值,每个节点下的特征变量以及对应的值的组合构成规则。

分类用于提取特征

  • 从大量的输入变量中获得重要性特征,然后提取权重最高的几个特征。

分类用于处理缺失值

  • 缺失值是分类变量,基于模型法填补缺失值;

  • 基于已有其他字段,将缺失字段作为目标变量进行预测。

分类分析算法的选取

  • 文本分类时用到最多的是朴素贝叶斯。

  • 训练集比较小,那么选择高偏差且低方差的分类算法效果逢高,如朴素贝叶斯、支持向量机、这些算法不容易过拟合。

  • 训练集比较大,选取何种方法都不会显著影响准确度。

  • 省时好操作选着用支持向量机,不要使用神经网络。

  • 重视算法准确度,那么选择算法精度高的算法,例如支持向量机、随机森林。

  • 想得到有关预测结果的概率信息,使用逻辑回归。

  • 需要清洗的决策规则,使用决策树。

数据准备

本次分类分析使用股市数据。此处可参考金融数据准备

KNN

K-Nearest Neighbors (KNN) 是一种懒惰学习算法和分类算法。此外,KNN是机器学习中最简单的方法。利用KNN进行分类,预测新点的分类。

数据预处理

从数据集dataset中选取需要用的数据作为输入数据和标签。

  1. = dataset.loc[ : , ['high','low','close']].values
  2. = dataset.loc[ : , ['Up_Down']].values
  3. from sklearn.model_selection import train_test_split  
  4. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.20)  

数据标准化

数据标准化对于距离类模型,数据归一化是非常有必要的。这里使用sklearn.preprocessingStandardScaler

  1. from sklearn.preprocessing import StandardScaler  
  2. scaler = StandardScaler()  
  3. scaler.fit(X_train)
  4. X_train = scaler.transform(X_train)  
  5. X_test = scaler.transform(X_test

模型训练与预测

  1. from sklearn.neighbors import KNeighborsClassifier  
  2. knn = KNeighborsClassifier(n_neighbors=5)  
  3. knn.fit(X_train, y_train) 
  4. y_pred = knn.predict(X_test)

模型评价

  1. from sklearn.metrics import classification_report, confusion_matrix  
  2. print(confusion_matrix(y_test, y_pred))  
  3. print(classification_report(y_test, y_pred))
  1. [[39 31]
  2. [32 44]]
  3. precision recall f1-score support
  4. -1 0.55 0.56 0.55 70
  5. 1 0.59 0.58 0.58 76
  6. accuracy 0.57 146
  7. macro avg 0.57 0.57 0.57 146
  8. weighted avg 0.57 0.57 0.57 146

绘制学习曲线

分类以KNeighbors个数为x轴,模型得分为y轴,绘制学习曲线,以模型得分最高的n_neighbors为本次模型最终参数。

  1. from sklearn.metrics import accuracy_score
  2. score = []
  3. for K in range(40):
  4.     K_value = K+1
  5.     knn = KNeighborsClassifier(n_neighbors = K_value, weights='uniform', algorithm='auto')
  6.     knn.fit(X_train, y_train) 
  7.     y_pred = knn.predict(X_test)
  8.     score.append(round(accuracy_score(y_test,y_pred)*100,2))
  9.     
  10. plt.figure(figsize=(126))  
  11. plt.plot(range(141), score, color='red', linestyle='dashed', marker='o',  
  12.          markerfacecolor='blue', markersize=10)
  13. plt.title('The Learning curve')  
  14. plt.xlabel('K Value')  
  15. plt.ylabel('Score'

带误差线的学习曲线

  1. from sklearn import metrics
  2. Ks = 10
  3. mean_acc = np.zeros((Ks-1))
  4. std_acc = np.zeros((Ks-1))
  5. ConfustionMx = [];
  6. for n in range(1,Ks):
  7.     
  8.     # 模
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/140872
推荐阅读
相关标签
  

闽ICP备14008679号