python数据分析:分类分析(classification analysis)

发布时间:2026/9/13 23:51:55
python数据分析:分类分析(classification analysis) 何为分类分析在机器学习里头, 还有统计范畴内, 存在这样一个问题, 那就是分类, 它是要依据有着其类别成员资格已然知晓的观察, 也就是实例, 所构成的训练数据集, 去辨认出新观察归属于哪一个类别, 也就是子群体, 这些类别是预先设定好的一组。比如说, 要把给定的电子邮件, 分派到“垃圾邮件”或者“非垃圾邮件”这个类别当中, 并且要依据观察到的患者自身的特点, 像是什么性别, 血压状况如何, 某些症状到底有没有存在啊等等这些特征, 来给给定的患者进行一个诊断分类。而分类, 它其实就是模式识别的一个具体示例。针对机器学习术语而言, 分类被视作监督学习的一个实例, 也就是学习能够获取正确识别的观察的训练集的情形。与之对应的无监督程序称作聚类, 并且涉及基于固有相似性或者距离的某种度量去划分数据。通常, 各个观察结果会被分析成一组属性, , 这些属性是可量化的, 它们被不同地称作解释变量或者特征, , 这些属性能够被不同地分类, 比如会按照血型可分为“A”, “B”, “AB”或者“O”, 会按照序数分为例如“大”, “中”或者“小”, 会按照整数值比如电子邮件中特定单词的出现次数来分, 还会按照实际值比如血压的测量值来分。达成分类的算法, 尤其是于具体达成里面, 被称作分类器。术语“分类器”有时候也指代由分类算法达成的数学函数, 它把输入数据映照至类别。针对跨领域的术语而言, 其呈现出的是多种多样的状态。在统计范畴里, 一般会运用逻辑回归或者类似的程序来实施分类, 其中, 被观察到的属性被称作解释变量或者独立变量、回归量等, 而需要进行预测的类别被叫做结果的那些, 被认定为像是因变量的相关可能值。在机器学习领域当中, 观察往往被称作实例, 解释变量被叫做特征这些要被分组成为特征向量, 而且要去预测的那些可能类别则为类的表示。在其他的领域方面, 也许会使用不一样的术语: 比如说, 在社区生态学里头, 术语为“分类”的情况, 通常所意味的是聚类分析, 也就是属于一种无监督学习的类别, 并非是本文所描述的监督学习那样。常用分类算法平常会用到的分类算法涵盖了朴素贝叶斯, 包含逻辑回归, 还有决策树, 以及随机森林, 另外还有支持向量机等等。分类分析使用场景用于分类“预测”是分类的主要用途与场景, 它依据已有的样本, 来预测新样本所属的类别, 像信用评级、风险等级、欺诈预测等并且它还是模式识别很关键的一部分被广泛运用到机器翻译、人脸识别、医学诊断、手写字符识别、指纹识别这类图像识别、语音识别、视频识别的领域除此之外, 分类算法能够用于知识抽取, 借助模型找出潜在规律, 助力业务获取可执行的规则。提炼应用规则为数据化运用提供规则也是分类分析的主要应用方向。常见应用场景提炼特征规则利用的是在构建分类算法时产生的分类规则。提取变量特征存在大量输入变量, 其重要性特征是分类分析重点应用中的其一之处此为数据归约以及数据降维的重要方式需对其获取与原始数据集并同步对数据实施预处理, 随后把数据集放置到分类算法内部加以训练, 进而从算法模型里抽取特征权重的信息处理缺失值将缺失字段作为目标变量进行预测从而得到较为可能的补全值。分类分析算法的选取代码实现决策树算法import numpy as np import pandas as pd from sklearn.model_selection import train_test_split from sklearn.tree import DecisionTreeClassifier, export_graphviz # 导入评估指标模块 from sklearn.metrics import accuracy_score, auc, confusion_matrix, f1_score, precision_score, recall_score, roc_curve # 导入表格库 import prettytable # 导入dot插件库 import pydotplus import matplotlib.pyplot as plt import seaborn as sns %matplotlib inline # 数据导入 df pd.read_csv(https://raw.githubusercontent.com/ffzs/dataset/master/glass.csv, usecols[Na,Ca,Type]) v# 为了决策树图示简洁我们尽量减少分类和特征值 dfs df[df.Type 3] # 获取特征值 X dfs[dfs.columns[:-1]].values # 获取标签值 y dfs[Type].values - 1 # 将数据37分为测试集合训练集 X_train, X_test, y_train, y_test train_test_split(X, y, test_size0.3, random_state2018) #### 模型训练 #### # 决策树模型 dt_model DecisionTreeClassifier(random_state2018) # 训练模型 dt_model.fit(X_train, y_train) # 对测试集做预测 pre_y dt_model.predict(X_test) ####模型评估#### # 混淆矩阵 confusion_m confusion_matrix(y_test, pre_y) df_confusion_m pd.DataFrame(confusion_m, columns[0, 1], index[0, 1]) df_confusion_m.index.name Real df_confusion_m.columns.name Predict df_confusion_m# 获取决策树的预测概率 y_score dt_model.predict_proba(X_test) # ROC fpr, tpr, thresholds roc_curve(y_test, y_score[:, [1]]) # AUC auc_s auc(fpr, tpr) # 准确率 accuracy_s accuracy_score(y_test, pre_y) # 精准度 precision_s precision_score(y_test, pre_y) # 召回率 recall_s recall_score(y_test, pre_y) # F1得分 f1_s f1_score(y_test, pre_y) # 评估数据制表 df_metrics pd.DataFrame([[auc_s, accuracy_s, precision_s, recall_s, f1_s]], columns[auc, accuracy, precision, recall, f1], index[结果]) df_metrics#### 可视化ROC##### plt.figure(figsize(8, 7)) plt.plot(fpr, tpr, labelROC) # 画出ROC曲线 plt.plot([0, 1], [0, 1], linestyle--, colork, labelrandom chance) # 画出随机状态下的准确率线 plt.title(ROC) # 子网格标题 plt.xlabel(false positive rate) # X轴标题 plt.ylabel(true positive rate) # y轴标题 plt.legend(loc0) plt.savefig(x.png)####保存决策树桂枝图为pdf#### # 决策树规则生成dot对象 dot_data export_graphviz(dt_model, max_depth5, feature_namesdfs.columns[:-1], filledTrue, roundedTrue) # 通过pydotplus将决策树规则解析为图形 graph pydotplus.graph_from_dot_data(dot_data) # 将决策树规则保存为PDF文件 graph.write_pdf(tree.pdf) # 保存为jpg图片 graph.write_jpg(xx.jpg)决策树节点信息混淆矩阵表示分类正确表示分类错误评估指标解释