找回密码
 立即注册
搜索

机器学习

文章目录

  • 1. 机器学习基本概念
  • 2. sklearn机器学习库
  • 3. 评估指标
  • 4. 机器学习用到的python库
1. 机器学习基本概念

1.1. 常用算法

  • 线性回归(Linear Regression
  • 逻辑回归(Logistic Regression
  • 聚类(k-meansDBSCAN
  • 决策树(Decision Tree
  • 集成算法(Random forestAdaBoostGradient Boosting
  • 支持向量机(Support Vector Machine
  • k近邻(K-Nearest Neighbors
  • 线性判别分析(Linear Discriminant Analysis
  • 朴素贝叶斯(Bayes Theorem
1.2. 基本概念

  • 训练集:又称训练样例,用来进行训练,也就是产生模型或者算法的数据集
  • 测试集:又称测试样例,用来专门进行测试已经学习好的模型或者算法的数据集
  • 特征值:属性的集合,通常用一个向量来表示,附属于一个实例
  • 标记:实例类别的标记(正例与反例或者更多)
  • 分类:目标标记为类别型数据
  • 回归:目标标记为连续型数值
  • 有监督学习:训练集有类别标记
  • 无监督学习:训练集无类别标记
  • 半监督学习:训练集既有有类别标记又有无类别标记
1.3. 机器学习步骤框架

  • 把数据拆分为训练集和测试集
  • 用训练集和训练集的特征向量来训练算法
  • 用学习来的算法运用在测试集上来评估算法(可能要涉及到调整参数,用验证集)
1.4. 机器学习中分类和预测算法的评估

  • 准确性
  • 速度
  • 强壮性
  • 可规模性
  • 可解释性
1.5. 分类与回归问题



2. sklearn机器学习库

2.1. 定义

  • 简介:sklearn是基于python语言的机器学习工具包,是目前做机器学习项目当之无愧的第一工具。 sklearn自带了大量的数据集,可供我们练习各种机器学习算法。 sklearn集成了数据预处理、数据特征选择、数据特征降维、分类\回归\聚类模型、模型评估等非常全面算法。
  • 分类:识别某个对象属于哪个类别,常用的算法有:SVM(支持向量机),nearest neighbors(最近邻)、random forest(随机森林)
  • 回归:预测与对象相关联的连续值属性,常用算法:SVR(支持向量机), ridge regression(岭回归)、Lasso
  • 聚类:将相似对象自动分组,常用算法: k-Means、 spectral clustering、mean-shift
  • 降维:减少要考虑的随机变量的数量,PCA(主成分分析), eature selection(特征选择)、non-negative matrix factorization(非负矩阵分解)
  • 模型选择:比较,验证,选择参数和模型,常用的模块有:grid search(网格搜索)、cross validation(交叉验证)、 metrics(度量)
  • 预处理:特征提取和归一化,把输入的数据转换为机器学习算法可用的数据
2.2. sklearn数据类型
机器学习最终处理的数据都是数字,只不过这些数据可能以不同的形态被呈现出来,如矩阵、文字、图片、视频、音频等。
2.3. sklearn总览



2.3.1. 数据预处理




  • sklearn.preprocessing
  • 函数功能preprocessing.scale( )标准化preprocessing.MinMaxScaler( )最大最小值标准化preprocessing.StandardScaler( )数据标准化preprocessing.MaxAbsScaler( )绝对值最大标准化preprocessing.RobustScaler( )带离群值数据集标准化preprocessing.QuantileTransformer( )使用分位数信息变换特征preprocessing.PowerTransformer( )使用幂变换执行到正态分布的映射preprocessing.Normalizer( )正则化preprocessing.OrdinalEncoder( )将分类特征转换为分类数值preprocessing.LabelEncoder( )将分类特征转换为分类数值preprocessing.MultiLabelBinarizer( )多标签二值化preprocessing.OneHotEncoder( )独热编码preprocessing.KBinsDiscretizer( )将连续数据离散化preprocessing.FunctionTransformer( )自定义特征处理函数preprocessing.Binarizer( )特征二值化preprocessing.PolynomialFeatures( )创建多项式特征preprocesssing.Normalizer( )正则化preprocessing.Imputer( )弥补缺失值
  • sklearn.svm
  • 函数介绍svm.OneClassSVM( )无监督异常值检测
  • 上述preprocessing类函数的方法如下:
  • 函数方法介绍xxx.fit( )拟合数据xxx.fit_transform( )拟合并转换数据xxx.get_params( )获取函数参数xxx.inverse_transform( )逆转换xxx.set_params( )设置参数xxx.transform( )转换数据
2.3.2. 数据集





  • sklearn.datasets

  • 获取小数据集(本地加载):datasets.load_xxx()
  • 获取大数据集(在线下载):datasets.fetch_xxx()
  • 本地生成数据集(本地构造):datasets.make_xxx()
  • 数据集介绍load_iris( )鸢尾花数据集:3类、4个特征、150个样本load_boston( )波斯顿房价数据集:13个特征、506个样本load_digits( )手写数字集:10类、64个特征、1797个样本load_breast_cancer( )乳腺癌数据集:2类、30个特征、569个样本load_diabets( )糖尿病数据集:10个特征、442个样本load_wine( )红酒数据集:3类、13个特征、178个样本load_files( )加载自定义的文本分类数据集load_linnerud( )体能训练数据集:3个特征、20个样本load_sample_image( )加载单个图像样本load_svmlight_file( )加载svmlight格式的数据make_blobs( )生成多类单标签数据集make_biclusters( )生成双聚类数据集make_checkerboard( )生成棋盘结构数组,进行双聚类make_circles( )生成二维二元分类数据集make_classification( )生成多类单标签数据集make_friedman1( )生成采用了多项式和正弦变换的数据集make_gaussian_quantiles( )生成高斯分布数据集make_hastie_10_2( )生成10维度的二元分类数据集make_low_rank_matrix( )生成具有钟形奇异值的低阶矩阵make_moons( )生成二维二元分类数据集make_multilabel_classification( )生成多类多标签数据集make_regression( )生成回归任务的数据集make_s_curve( )生成S型曲线数据集make_sparse_coded_signal( )生成信号作为字典元素的稀疏组合make_sparse_spd_matrix( )生成稀疏堆成的正定矩阵make_sparse_uncorrelated( )使用稀疏的不相关设计生成随机回归问题make_spd_matrix( )生成随机堆成的正定矩阵make_swiss_roll( )生成瑞士卷曲线数据集
2.3.3. 特征选择





  • sklean.feature_selection
  • 函数功能feature_selection.SelectKBest( ) feature_selection.chi2 ( )feature_selection.f_regression( ) feature_selection.mutual_info_regression( )选择K个得分最高的特征feature_selection.VarianceThreshold( )无监督特征选择feature_selection.REF( )递归式特征消除feature_selection.REFCV( )递归式特征消除交叉验证法feature_selection.SelectFromModel( )特征选择
2.3.4. 特征降维





  • sklearn.decomposition
  • 函数功能decomposition.PCA( )主成分分析decomposition.KernelPCA( )核主成分分析decomposition.IncrementalPCA( )增量主成分分析decomposition.MiniBatchSparsePCA( )小批量稀疏主成分分析decomposition.SparsePCA( )稀疏主成分分析decomposition.FactorAnalysis( )因子分析decomposition.TruncatedSVD( )截断的奇异值分解decomposition.FastICA( )独立成分分析的快速算法decomposition.DictionaryLearning( )字典学习decomposition.MiniBatchDictonaryLearning( )小批量字典学习decomposition.dict_learning( )字典学习用于矩阵分解decomposition.dict_learning_online( )在线字典学习用于矩阵分解decomposition.LatentDirichletAllocation( )在线变分贝叶斯算法的隐含迪利克雷分布decomposition.NMF( )非负矩阵分解decomposition.SparseCoder( )稀疏编码
  • sklearn.manifold
  • 函数功能manifold.LocallyLinearEmbedding( )局部非线性嵌入manifold.Isomap( )流形学习manifold.MDS( )多维标度法manifold.t-SNE( )t分布随机邻域嵌入manifold.SpectralEmbedding( )频谱嵌入非线性降维
2.3.5. 模型构建

(1)分类模型





  • sklearn.tree
  • 函数功能tree.DecisionTreeClassifier()决策树
  • sklearn.ensemble
  • 函数功能ensemble.BaggingClassifier()装袋法集成学习ensemble.AdaBoostClassifier( )提升法集成学习ensemble.RandomForestClassifier( )随机森林分类ensemble.ExtraTreesClassifier( )极限随机树分类ensemble.RandomTreesEmbedding( )嵌入式完全随机树ensemble.GradientBoostingClassifier( )梯度提升树ensemble.VotingClassifier( )投票分类法
  • sklearn.linear_model
  • 函数功能linear_model.LogisticRegression( )逻辑回归linear_model.Perceptron( )线性模型感知机linear_model.SGDClassifier( )具有SGD训练的线性分类器linear_model.PassiveAggressiveClassifier( )增量学习分类器
  • sklearn.svm
  • 函数功能svm.SVC( )支持向量机分类svm.NuSVC( )Nu支持向量分类svm.LinearSVC( )线性支持向量分类
  • sklearn.neighbors
  • 函数功能neighbors.NearestNeighbors( )无监督学习临近搜索neighbors.NearestCentroid( )最近质心分类器neighbors.KNeighborsClassifier()K近邻分类器neighbors.KDTree( )KD树搜索最近邻neighbors.KNeighborsTransformer( )数据转换为K个最近邻点的加权图
  • sklearn.discriminant_analysis
  • 函数功能discriminant_analysis.LinearDiscriminantAnalysis( )线性判别分析discriminant_analysis.QuadraticDiscriminantAnalysis( )二次判别分析
  • sklearn.gaussian_process
  • 函数功能gaussian_process.GaussianProcessClassifier( )高斯过程分类
  • sklearn.naive_bayes
  • 函数功能naive_bayes.GaussianNB( )朴素贝叶斯naive_bayes.MultinomialNB( )多项式朴素贝叶斯naive_bayes.BernoulliNB( )伯努利朴素贝叶斯
(2)回归模型





  • sklearn.tree
  • 函数功能tree.DecisionTreeRegress( )回归决策树tree.ExtraTreeRegressor( )极限回归树
  • sklearn.ensemble
  • 函数功能ensemble.GradientBoostingRegressor( )梯度提升法回归ensemble.AdaBoostRegressor( )提升法回归ensemble.BaggingRegressor( )装袋法回归ensemble.ExtraTreeRegressor( )极限树回归ensemble.RandomForestRegressor( )随机森林回归
  • sklearn.linear_model
  • 函数功能linear_model.LinearRegression( )线性回归linear_model.Ridge( )岭回归linear_model.Lasso( )经L1训练后的正则化器linear_model.ElasticNet( )弹性网络linear_model.MultiTaskLasso( )多任务Lassolinear_model.MultiTaskElasticNet( )多任务弹性网络linear_model.Lars( )最小角回归linear_model.OrthogonalMatchingPursuit( )正交匹配追踪模型linear_model.BayesianRidge( )贝叶斯岭回归linear_model.ARDRegression( )贝叶斯ADA回归linear_model.SGDRegressor( )随机梯度下降回归linear_model.PassiveAggressiveRegressor( )增量学习回归linear_model.HuberRegression( )Huber回归
  • sklearn.svm
  • 函数功能svm.SVR( )支持向量机回归svm.NuSVR( )Nu支持向量回归svm.LinearSVR( )线性支持向量回归
  • sklearn.neighbors
  • 函数功能neighbors.KNeighborsRegressor( )K近邻回归neighbors.RadiusNeighborsRegressor( )基于半径的近邻回归
  • sklearn.kernel_ridge
  • 函数功能kernel_ridge.KernelRidge( )内核岭回归
  • sklearn.gaussian_process
  • 函数功能gaussian_process.GaussianProcessRegressor( )高斯过程回归
  • sklearn.cross_decomposition
  • 函数功能cross_decomposition.PLSRegression( )偏最小二乘回归
(3)聚类模型





  • sklearn.cluster
  • 函数功能cluster.DBSCAN( )基于密度的聚类cluster.GaussianMixtureModel( )高斯混合模型cluster.AffinityPropagation( )吸引力传播聚类cluster.AgglomerativeClustering( )层次聚类cluster.Birch( )利用层次方法的平衡迭代聚类cluster.KMeans( )K均值聚类cluster.MiniBatchKMeans( )小批量K均值聚类cluster.MeanShift( )平均移位聚类cluster.OPTICS( )基于点排序来识别聚类结构cluster.SpectralClustering( )谱聚类cluster.Biclustering( )双聚类cluster.ward_tree( )集群病房树
  • 模型方法
  • 方法功能xxx.fit( )模型训练xxx.get_params( )获取模型参数xxx.predict( )预测新输入数据xxx.score( )评估模型分类/回归/聚类模型xxx.set_params( )设置模型参数
2.3.6. 模型评估





  • 分类模型评估
  • 函数功能metrics.accuracy_score( )准确率metrics.average_precision_score( )平均准确率metrics.log_loss( )对数损失metrics.confusion_matrix( )混淆矩阵metrics.classification_report( )分类模型评估报告:准确率、召回率、F1-scoremetrics.roc_curve( )受试者工作特性曲线metrics.auc( )ROC曲线下面积metrics.roc_auc_score( )AUC值
  • 回归模型评估
  • 函数功能metrics.mean_squared_error( )平均决定误差metrics.median_absolute_error( )中值绝对误差metrics.r2_score( )决定系数
  • 聚类模型评估
  • 函数功能metrics.adjusted_rand_score( )随机兰德调整指数metrics.silhouette_score( )轮廓系数
2.3.7. 模型优化




函数
功能
model_selection.cross_val_score( )
交叉验证
model_selection.LeaveOneOut( )
留一法
model_selection.LeavePout( )
留P法交叉验证
model_selection.GridSearchCV( )
网格搜索
model_selection.RandomizedSearchCV( )
随机搜索
model_selection.validation_curve( )
验证曲线
model_selection.learning_curve( )
学习曲线

3. 评估指标

3.1. 各种算法的评估指标




3.2. 分类任务

二分类问题的混淆矩阵
TP代表正样本中预测正确的样本个数;FN代表正样本中预测错误的样本个数;FP代表负样本中预测错误的样本个数;TN代表父样本中预测正确的样本个数,以下的公式基本都基于混淆矩阵而言。




  • 准确率:准确率表示的是分类正确的比例(所有样本),但是在样本不平衡的情况下,并不能作为很好的指标来衡量结果。
    A c c u r a c y = T P + T N T P + T N + F P + F N Accuracy=\frac{TP+TN}{TP+TN+FP+FN}Accuracy=TP+TN+FP+FNTP+TN
    对应sklearn包
  • sklearn.metrics.accuracy_score(y_true, y_pred, *, normalize=True, sample_weight=None)
  • 参数
  • 参数说明y_true1d array-like, or label indicator array / sparse matrix 真实标签。y_pred1d array-like, or label indicator array / sparse matrix 预测标签,由分类器返回。normalizebool, optional (default=True) 如果为False,则返回正确分类的样本数。否则,返回正确分类的样本的分数。sample_weightarray-like of shape (n_samples,), default=None 样本权重。
  • 返回值
  • 返回值说明scorefloat 如果normalize == True,则返回正确分类的样本的分数(浮点数),否则返回正确分类的样本数(整数)。 最佳性能,在normalize == True时,为1;在normalize == False时,为样本数量。
  • 精确率(查准率):精确率代表的是预测为正样本的样本总体预测正确的占比(正样本)。
    P r e c i s i o n = T P T P + F P Precision=\frac{TP}{TP+FP}Precision=TP+FPTP​
    对应sklearn包
  • sklearn.metrics.precision_score(y_true, y_pred, *, labels=None, pos_label=1, average='binary', sample_weight=None, zero_division='warn')
  • 参数
  • 参数说明y_true1d array-like, or label indicator array / sparse matrix 真实目标值。y_pred1d array-like, or label indicator array / sparse matrix 分类器返回的估计目标。labelslist, optional 当average!='binary’时要包括的一组标签,如果average是None,则为标签的顺序。可以排除数据中存在的标签,例如,以忽略多数否定类的方式计算多类平均值,而数据中不存在的标签将导致宏平均值中的0成分。对于多标签目标,标签是列索引。 默认情况下,y_true和y_pred中的所有标签均按排序顺序使用。 在版本0.17中进行了更改:针对多类问题改进了参数标签。pos_labelstr or int, 1 by default average ='binary’且数据为二进制的报告类。如果数据是多类或多标签的,则将被忽略; 设置labels= [pos_label]和average!='binary’将仅报告该标签的分数。averagestring, [None|‘binary’ (default)| ‘micro’| ‘macro’| ‘samples’|‘weighted’] 对于多类/多标签目标,此参数是必需的。如果为None,则返回每个班级的分数。否则,将根据数据的平均表现确定类型: - 'binary': 仅报告由pos_label指定的类的结果。仅当目标(y_ {true,pred})为二进制时才适用。 - 'micro': 通过计算真正例、假负例和假正例的总数来全局计算指标。 - 'macro': 计算每个标签的指标,并找到其未加权平均值。 没有考虑标签不平衡。 - 'weighted': 计算每个标签的指标,并找到它们受支持的平均权重(每个标签的真实实例数)。这会更改‘macro’以解决标签不平衡的问题;这可能导致F-score不在精确度和召回率之间。 - 'samples': 计算每个实例的指标,并找到它们的平均值(仅对不同于accuracy_score的多标签分类有意义)。sample_weightarray-like of shape (n_samples,), default=None 样本权重。zero_division“warn”, 0 or 1, default=”warn” 设置零分频时返回的值。如果设置为“ warn”,则该值为0,但也会发出警告。
  • 返回值
  • 返回值说明precisionfloat (if average is not None) or array of float, shape = [n_unique_labels] 二进制分类中正类的精度,或者多类任务的每个类的精度的加权平均值。
  • 召回率(查全率):召回率代表的是实际为正样本的样本总体预测正确的占比。精确度与召回率是一对矛盾的度量,一般来说,精确率高的时候,召回率往往偏低;精确率低的时候,召回率往往偏高。
    R e c a l l = T P T P + F N Recall=\frac{TP}{TP+FN}Recall=TP+FNTP​
    对应sklearn包
  • sklearn.metrics.recall_score(y_true, y_pred, *, labels=None, pos_label=1, average='binary', sample_weight=None, zero_division='warn')
  • 参数
  • 参数说明y_true1d array-like, or label indicator array / sparse matrix 真实目标值。y_pred1d array-like, or label indicator array / sparse matrix 分类器返回的估计目标。labelslist, optional 当average!='binary’时要包括的一组标签,如果average是None,则是标签的顺序。可以排除数据中存在的标签,例如,以忽略多数否定类的方式计算多类平均值,而数据中不存在的标签将导致宏平均值中的0成分。对于多标签目标,标签是列索引。 默认情况下,y_true和y_pred中的所有标签均按排序顺序使用。 在版本0.17中进行了更改:针对多类问题改进了参数标签。pos_labelstr or int, 1 by default average ='binary’且数据为二进制的报告类。如果数据是多类或多标签的,则将被忽略; 设置labels=[pos_label]和average!='binary’将仅报告该标签的分数。averagestring, [None|‘binary’ (default)| ‘micro’| ‘macro’| ‘samples’|‘weighted’] 对于多类/多标签目标,此参数是必需的。如果为None,则返回每个类的得分。否则,将根据数据的平均表现确定类型: - 'binary': 仅报告由pos_label指定的类的结果。仅当目标(y_ {true,pred})为二进制时才适用。 - 'micro': 通过计算真正例、假负例和假正例的总数来全局计算度量。 - 'macro': 计算每个标签的度量,并找到其未加权平均值。 这没有考虑标签不平衡。 - 'weighted': 计算每个标签的度量,并找到它们受支持的平均权重(每个标签的真实实例数)。这会更改‘macro’以解决标签不平衡的问题;这可能导致F-score不在精确度和召回率之间。 - 'samples': 计算每个实例的度量,并找到它们的平均值(仅对不同于accuracy_score的多标签分类有意义)。sample_weightarray-like of shape (n_samples,), default=None 样本权重。zero_division“warn”, 0 or 1, default=”warn” 设置零分频时返回的值。如果设置为“ warn”,则该值为0,但也会发出警告。
  • 返回值
  • 返回值说明recallfloat (if average is not None) or array of float, shape = [n_unique_labels] 二进制分类中的正例类的召回率或多类别任务的每个类别的召回率加权平均
  • P-R曲线:以查准率为纵轴,查全率为横轴,就得到了查准率-查全率曲线,又被称为P-R曲线。P-R曲线能直观地显示出学习器在样本总体上的查全率、查准率。如下图,学习器A优于学习器C(学习器A的曲线完全包住学习器C),但是学习器A与B很难比较,因为出现了交叉,平衡点(BEP)也就是查准率等于查全率的时候,对应的坐标值,坐标值大的相对优一点。但BEP过于简化,因此常用F1。
  • 对应sklearn包
  • sklearn.metrics.average_precision_score(y_true, y_score, *, average='macro', pos_label=1, sample_weight=None)
  • 参数
  • 参数说明y_truearray, shape = [n_samples] or [n_samples, n_classes] 真正的二进制标签或二进制标签指示符。y_scorearray, shape = [n_samples] or [n_samples, n_classes] 目标分数可以是肯定类别的概率估计值,置信度值或决策的非阈值度量(如某些分类器上的“ decision_function”所返回)。averagestring, [None, ‘micro’, ‘macro’ (default), ‘samples’, ‘weighted’] 如果为None,则返回每类的得分。否则,将确定对数据平均表现的类型: - ‘micro’: 通过将标签指标矩阵的每个元素都视为标签来全局计算指标。 - ‘macro’: 计算每个标签的指标,并找到其未加权平均值。此处没有考虑标签不平衡问题。 - ‘weighted’: 计算每个标签的指标,并找到它们的平均值,然后按支持度(每个标签的真实实例数)加权。 - ‘samples’: 计算每个实例的指标,并找到它们的平均值。 当y_true为二进制时将被忽略。pos_labelint or str (default=1) 正向类别的标签。仅适用于二进制y_true。 对于multilabel-indicator y_true,pos_label固定为1。sample_weightarray-like of shape (n_samples,), default=None 样本权重。
  • 返回值
  • 返回值说明average_precisionfloat
  • F值:当需要在精确率与召回率之间进行权衡时,F1曲线同时考虑了两者,可以作为一种评价指标,它是精确率和召回率的调和平均数。当β > 1时,召回率的权重高于精确率,当β < 1时精确率的权重高于召回率,当β = 1时,就变成了F1值。
    F β = ( 1 + β 2 ) ⋅ P r e c i s i o n ⋅ R e c a l l β 2 ⋅ P r e c i s i o n + R e c a l l F_\beta=(1+\beta^2)\cdot\frac{Precision \cdot Recall}{\beta^2 \cdot Precision + Recall}Fβ​=(1+β2)⋅β2⋅Precision+RecallPrecision⋅Recall​
    F1:
    F 1 = 2 ⋅ P r e c i s i o n ⋅ R e c a l l P r e c i s i o n + R e c a l l F_1=\frac{2\cdot Precision \cdot Recall}{Precision + Recall}F1​=Precision+Recall2⋅Precision⋅Recall​
    对应sklearn包
  • sklearn.metrics.f1_score(y_true, y_pred, *, labels=None, pos_label=1, average='binary', sample_weight=None, zero_division='warn')
  • 参数
  • 参数说明y_true1d array-like, or label indicator array / sparse matrix 真实目标值。y_pred1d array-like, or label indicator array / sparse matrix 分类器返回的估计目标。labelslist, optional 当average!='binary’时要包括的一组标签,如果average是None,则是标签的顺序。可以排除数据中存在的标签,例如,以忽略多数否定类的方式计算多类平均值,而数据中不存在的标签将导致宏平均值中的0成分。对于多标签目标,标签是列索引。 默认情况下,y_true和y_pred中的所有标签均按排序顺序使用。 在版本0.17中进行了更改:针对多类问题改进了参数标签。pos_labelstr or int, 1 by default average ='binary’且数据为二进制的要进行报告的类。如果数据是多类或多标签的,则将被忽略;设置labels=[pos_label]及average!='binary’将仅报告该标签的得分。averagestring,[None| ‘binary’(default)| ‘micro’| ‘macro’| ‘samples’| ‘weighted’] 对于多类/多标签目标,此参数是必需的。如果为None,则返回每个类的得分。否则,将确定数据执行的平均类型: - 'binary': 仅报告由pos_label指定的类的结果。仅当目标(y_ {true,pred})为二进制时才适用。 - 'micro': 通过计算真正例、假负例和假正例的总数来全局计算度量。 - 'macro': 计算每个标签的度量,并找到其未加权平均值。 这没有考虑标签不平衡。 - 'weighted': 计算每个标签的度量,并找到它们受支持的平均权重(每个标签的真实实例数)。这会更改‘macro’以解决标签不平衡的问题;这可能导致F-score不在精确度和召回率之间。 - 'samples': 计算每个实例的度量,并找到它们的平均值(仅对不同于accuracy_score的多标签分类有意义)。sample_weightarray-like of shape (n_samples,), default=None 样本权重。zero_division“warn”, 0 or 1, default=”warn” 设置除数为零(即所有预测和标签均为负)时的返回值。如果设置为“warn”,则该值为0,但也会发出警告。
  • 返回值
  • 返回值说明f1_scorefloat or array of float, shape = [n_unique_labels] 二进制分类中的正例类的F1分数,或者对于多类别任务,每个类别的F1分数的加权平均值。
  • G值:是精确率与召回率的另一种评价指标,它是精确率和召回率的几何平均数。
    G = P r e c i s i o n ⋅ R e c a l l G=\sqrt{Precision \cdot Recall}G=Precision⋅Recall​

  • ROC曲线和AUC :当测试集中的正负样本的分布变化的时候,ROC曲线能够保持不变,即ROC曲线能够很好的消除样本类别不平衡对评估指标产生的影响(把实际中的正样例与负样例分开考虑)。ROC曲线与下方坐标轴围成的面积就是AUC,考虑的是样本预测的排序质量,因此与排序误差有紧密联系,AUC的值应当越大越好。
  • 对应sklearn包 (AUC):
  • sklearn.metrics.auc(x, y)
  • 参数
  • 参数说明xarray, shape = [n] x坐标。这些必须是单调递增或单调递减。yarray, shape = [n] y坐标。
  • 返回值
  • 返回值说明aucfloat
  • 对应sklearn包(ROC) :
  • sklearn.metrics.roc_curve(y_true, y_score, *, pos_label=None, sample_weight=None, drop_intermediate=True)
  • 参数
  • 参数说明y_truearray, shape = [n_samples] 真正的二进制标签。 如果标签既不是{-1,1}也不是{0,1},则应该明确给出pos_label。y_scorearray, shape = [n_samples] 目标分数可以是正例类的概率估计值,置信度值或决策的非阈值度量(如某些分类器上的“ decision_function”所返回)。pos_labelint or str, default=None 正例类的标签。当pos_label = None时,如果y_true在{-1,1}或{0,1}中,则pos_label设置为1,否则将引发错误。sample_weightarray-like of shape (n_samples,), default=None 样本权重。drop_intermediateboolean, optional (default=True) 是否降低一些未达到最佳阈值的阈值,这些阈值不会出现在绘制的ROC曲线上。 这对于创建较浅的ROC曲线很有用。 版本0.17中的新功能:参数drop_intermediate。
  • 返回值
  • 返回值说明fprarray, shape = [>2] 增加假正例率,使得元素i是score >= thresholds预测的假正例率。tprarray, shape = [>2] 增加真正例率,使得元素i是score >= thresholds的预测的真正例率。thresholdsarray, shape = [n_thresholds] 用于计算fpr和tpr的决策函数的阈值递减。 thresholds [0]表示没有实例在预测中,可以任意设置为max(y_score)+ 1。
  • 真正率假正率真负率假负率
  • 真正率:在所有实际正例的样本中,正确判断为正例的概率;
  • 假正率:在所有实际负例的样本中,错误判断为负例的概率;
  • 真负率:在所有实际负例的样本中,正确判断为负例的概率;
  • 假负率:在所有实际正例的样本中,错误判断为正例的概率。
    T P R = T P T P + F N F P R = F P F P + T N T N R = T N T N + F P F N R = F N F N + T P TPR=\frac{TP}{TP+FN} \quad FPR=\frac{FP}{FP+TN} \quad TNR=\frac{TN}{TN+FP} \quad FNR=\frac{FN}{FN+TP} \quadTPR=TP+FNTP​FPR=FP+TNFP​TNR=TN+FPTN​FNR=FN+TPFN​
    对应sklearn包
  • sklearn.metrics.confusion_matrix(y_true, y_pred, *, labels=None, sample_weight=None, normalize=None)
  • 参数
  • 参数说明y_truearray-like of shape (n_samples,) 真实目标值。y_predarray-like of shape (n_samples,) 分类器返回的估计目标。labelsarray-like of shape (n_classes), default=None 索引矩阵的标签列表。可用于重新排序或选择标签的子集。如果指定None,则那些在y_true或y_pred中至少出现一次的标签将按照排序使用。sample_weightarray-like of shape (n_samples,), default=None 样本权重。 版本0.18中的新功能。normalize{‘true’, ‘pred’, ‘all’}, default=None 对真实(行),预测(列)条件或所有总体的混淆矩阵进行归一化。 如果为None,则不会对混淆矩阵进行归一化。
  • 返回值
  • 返回值说明Cndarray of shape (n_classes, n_classes) 混淆矩阵,其第i行和第j列条目指示真实标签为第i类且预测标签为第j类的样本数。
3.3. 回归任务


  • 均方误差(MSE)或L2范数损失:通过计算真实值与预测值的差值的平方和的均值来衡量距离。
    M S E = 1 m ∑ i = 1 m ( f ( x i ) − y i ) 2 MSE=\frac{1}{m} \sum_{i=1}^{m}{(f(x_i)-y_i)^2}MSE=m1​i=1∑m​(f(xi​)−yi​)2

对应sklearn包
sklearn.metrics.mean_squared_error(y_true, y_pred, *, sample_weight=None, multioutput='uniform_average', squared=True)
参数
参数
说明
y_true
array-like of shape (n_samples,) or (n_samples, n_outputs) 真实目标值。
y_pred
array-like of shape (n_samples,) or (n_samples, n_outputs) 预测目标值。
sample_weight
array-like of shape (n_samples,), optional 样本权重。
multioutput
string in [‘raw_values’, ‘uniform_average’] or array-like of shape (n_outputs) 定义多个输出值的汇总。类似数组的值定义了用于平均误差的权重。 - ‘raw_values’: 如果是多输出格式的输入,则返回完整的错误集。 - ‘uniform_average’: 所有输出的误差均以相同的权重平均。
squared
boolean value, optional (default = True) 如果为True,则返回MSE值;如果为False,则返回RMSE值。

返回值
返回值
说明
loss
float or ndarray of floats 非负浮点值(最佳值为0.0)或浮点值数组,每个目标对应一个浮点值。


  • 均方根误差(RMSE): 通过计算真实值与预测值的差值的平方和的均值的标准差来衡量距离。
    R M S E = 1 m ∑ i = 1 m ( f ( x i ) − y i ) 2 RMSE=\sqrt{ \frac{1}{m} \sum_{i=1}^{m}{(f(x_i)-y_i)^2}}RMSE=m1​i=1∑m​(f(xi​)−yi​)2​

  • 平均绝对误差(MAE)或L1范数损失: 通过计算预测值和真实值之间的距离的绝对值的均值来衡量距离。
    M A E = 1 m ∑ i = 1 m ∣ y i − f ( x i ) ∣ MAE=\frac{1}{m} \sum_{i=1}^{m}|{y_i-f(x_i)|}MAE=m1​i=1∑m​∣yi​−f(xi​)∣

  • 对应sklearn包
  • sklearn.metrics.mean_absolute_error(y_true, y_pred, *, sample_weight=None, multioutput='uniform_average')
  • 参数
  • 参数说明y_truearray-like of shape (n_samples,) or (n_samples, n_outputs) 真实目标值。y_predarray-like of shape (n_samples,) or (n_samples, n_outputs) 预测目标值。sample_weightarray-like of shape (n_samples,), optional 样本权重。multioutputstring in [‘raw_values’, ‘uniform_average’] or array-like of shape (n_outputs) 定义多个输出值的汇总。类似数组的值定义了用于平均误差的权重。 - ‘raw_values’: 如果是多输出格式的输入,则返回完整的错误集。 - ‘uniform_average’: 所有输出的误差均以相同的权重平均。
  • 返回值
  • 返回值说明lossfloat or ndarray of floats 如果多输出为‘raw_values’,则分别为每个输出返回均值绝对错误。如果多输出是‘uniform_average’或权重的ndarray,则将返回所有输出错误的加权平均值。 MAE输出为非负浮点。最佳值为0.0。
3.4. 无监督任务

轮廓系数:适应于实际类别信息未知的情况。对于单个样本,设a是与它同类别中其它样本的 平均距离,b是与它距离最近不同类别中样本的平均距离,定义为:
S = b − a m a x ( a , b ) S=\frac{b-a}{max(a,b)}S=max(a,b)b−a​
对应sklearn包
sklearn.metrics.silhouette_score(X, labels, *, metric='euclidean', sample_size=None, random_state=None, **kwds)
参数
参数
说明
X
array [n_samples_a, n_samples_a] if metric == “precomputed”, or, [n_samples_a, n_features] otherwise 样本之间的成对距离数组或特征数组。
labels
array, shape = [n_samples] 每个样本的预测标签。
metric
string, or callable 计算特征阵列中实例之间的距离时使用的度量。如果metric是字符串,则它必须是metrics.pairwise.pairwise_distances允许的选项之一。如果X是距离数组本身,则使用metric=“precomputed”。
sample_size
int or None 在数据的随机子集上计算轮廓系数时要使用的样本大小。如果sample_size为None,则不使用采样。
random_state
int, RandomState instance or None, optional (default=None) 确定用于选择样本子集的随机数生成。当sample_size不为None时使用。在多个函数调用之间传递int以获得可重复的结果。请参阅词汇表。
**kwds
optional keyword parameters 任何其他参数都直接传递给距离函数。如果使用scipy.spatial.distance度量,则参数仍取决于度量。有关用法示例,请参见scipy文档。

返回值
返回值
说明
silhouette
float 所有样本的平均轮廓系数。

4. 机器学习用到的python库

4.1. Numpy


  • Numpy:通常用来进行矢量化的计算
  • 常用函数:
创建数组


np.array()
用于创建一维或多维数组
np.arange()
在给定的间隔内返回具有一定步长的整数
np.linspace()
创建一个具有指定间隔的浮点数的数组
np.random.randint()
在一个范围内生成n个随机整数样本
np.zeros()
创建一个全部为0的数组
np.ones()
创建一个全部为1的数组
np.full()
创建一个单独值的n维数组

数组操作


np.min()
返回数组中的最小值
np.max()
返回数组中的最大值
np.mean()
返回数组的平均数
np.median()
返回数组的中位数
np.np.sort()
对数组排序


  • 优点:numpy的基本对象是ndarray,最大的优势在于用它进行多维数组的计算,不用写多重for循环,直接可以进行矢量化的运算封装了vectorize函数,可以把处理标量的函数矢量化,极大地提高了计算速度
  • 缺点:ndarray中的数据类型必须相同,于是有了pandas可以处理不同数据类型的数据集
4.2. Pandas


  • Pandas: 通常用来处理结构化的数据
  • 优点:数据结构Series,理解为一个一维的数组,只是index名称可以自己改动。类似于定长的有序字典,有index和value数据结构DataFrame,理解为一个二维数组,索引有两个维度,可更改。一行一样本,一列一特征。每一行都可以看作一个样本,每一列都可以看作一个Series封装的to_datetime函数转换日期数据类型,支持大多数的日期格式,而且转换后的datetime类型数据支持日期运算
4.3. Matplotlib


  • Matplotlib: 用来绘制出直观的图表
Figure:是指整个图形,也就是一张画布,包括了所有的元素,如标题,轴线等;
Axes:绘制 2D 图像的实际区域,也称为轴域区,或者绘图区;
Axis:是指图形的水平轴和垂直轴,包括轴的长度、轴的标签和轴的刻度等;
xlabelylabel: 设置横轴、纵轴标签及大小
xticksyticks: 设置坐标轴刻度的字体大小
plt.legend():添加图例
plt.scatter():函数用于生成一个scatter散点图
plt.plot(x, y, format_string, **kwargs) :绘制函数曲线(绘制坐标图)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

大神点评5

文成波 2023-2-4 18:39:20 显示全部楼层
转发了
回复

使用道具 举报

傲雪风 2023-2-4 18:39:59 显示全部楼层
转发了
回复

使用道具 举报

楼主呀,,,您太有才了。。。
回复

使用道具 举报

剩牌一 2023-2-5 15:53:09 显示全部楼层
好棒的分享楼主多写点吧,写完记得通知我,哈哈
回复

使用道具 举报

加油!不要理那些键盘侠!
回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies