精华内容
下载资源
问答
  • 维度及交叉维度最佳解决方案
    千次阅读
    2020-09-22 09:51:42

    ​     公众号:大数据私房菜 

    1前言

           正常情况下,维表和事实表之间是一对多的关系,维表中的一行记录会连接事实表中的多行记录,事实表中的一行记录在维度表中只能关联上一条记录,不会发生数据发散的现象

           想法是美好的,但是事实总是不尽人意。因为现实中不但事实表和维度表之间存在多对多的关系,维度表和维度表之间也存在多对多的关系

            这两种情况本质是相同的,但事实表和维度表之间的多对多关系少了唯一描述事实和维度组的中间维度。

           对于这两种情况,一种称为桥接表的中间表就需要派上用场了,并且还可以支持更为复杂的多对多的关系

     

    2事实表与维度表多对多(多值维度)

           比如下单了一套学习课程,但是这套课程并不是某一个用户买的,而是好几个用户合买的,所以为了处理这种情况,需要创建一个桥接表,将这些合买的用户组成一个组


           ETL过程需要对每条事实表中的用户组,在桥接表中查找相应的用户主键,上图所示的桥接表有重复计数的风险。如果按用户累加购买金额,对某些分析而言结果是正确的,但对于其他情况仍会有重复计数的问题。要解决这个问题,可以向桥接表中添加权重。    

           权重是一个分数值,所有的用户组的权重累加起来为1。将权重和累加事实相乘,以按照每个用户在分组中的比重分配事实。

     

    优点:

    灵活简化了生成报表的难度

    借权重避免了多重计算

    缺点:

    桥接表的维护比较复杂,当出现一个新组合时,得先判断桥接表中是否已存在

     

    3维表与维表多对多(交叉维度)

          从分析的角度来看,维度之间的多对多关系是一个很重要的概念,大多数维度都不是完全相互独立的。

           在银行系统中,账户和顾客之间有直接关系,但不是一对一的关系。一个账户可以有一个或多个签名确认的用户,一个用户也可有多个账户

    有2种方案解决

    • 和多值维度一样,创建账户-用户组桥接表来连接事实表

    • 还有一种方法是利用账户和用户之间的关系,如下图

          

          桥接表可以捕获多对多关系,并且由于源系统中的关系是已知的,因此创建桥接表比多值维度手动构建维度表(桥接表)更容易

     

    4总结

     

           处理多值维度最好的办法是降低事实表的粒度。这种处理方式也是维度建模的一个原则,即事实表应该建立在最细粒度上。这样的处理,需要对事实表的事实进行分摊。

     

           但是有些时候,事实表的粒度是不能降低的,多值维度的出现是无法避免的。如上述交叉维度,事实表与用户维度没有直接的关系,不能将数据粒度进行细分,即使细分的话帐户余额也很难分摊。这时,可以采用桥接表技术进行处理。在帐户维度表和用户维度表之间建立个帐户-用户桥接表。这个桥接表可以解决掉帐户维度和用户维度之间的多对多关系,也解决掉的帐户维度表的多值维度问题。

     

           总之,多值维度是应该尽量避免的,它给数据处理带来了很大的麻烦。如果多值维度不能避免的话,应该建立桥接表来进行处理。

    更多相关内容
  • ↓↓↓欢迎关注我的公众号,在这里有数据相关技术经验的优质原创文章↓↓↓ 在Excel中作图时坐标轴是默认以0为坐标轴原点的且从从下到上数值逐渐增大的... 这时候需要再将坐标轴交叉改为最大即可修改两轴交叉的原点

    ↓↓↓欢迎关注我的公众号,在这里有数据相关技术经验的优质原创文章↓↓↓
    在这里插入图片描述

    在Excel中作图时坐标轴是默认以0为坐标轴原点的且从从下到上数值逐渐增大的。例如当纵坐标大于0时:
    在这里插入图片描述

    而当纵轴数值小于0时时这样的:

    在这里插入图片描述

    现在需要将纵轴(或横轴)倒序排列,可以选中轴后右键–设置轴格式–值倒序排列
    在这里插入图片描述
    这样设置后的问题是虽然值是倒序排的,但是坐标轴原点仍然是0,整个纵轴跑到下面去了:
    在这里插入图片描述

    这时候需要再将坐标轴交叉改为最大即可修改两轴交叉的原点值:

    在这里插入图片描述

    展开全文
  • 针对全局阈值法和局部阈值法的不足,提出一种基于LoG算子的边缘零交叉化方法,并通过实验分析各算法的二化效果及运算速度。
  • 摘 要: 针对全局阈值法和局部阈值法的不足,提出一种基于LoG算子的边缘零交叉化方法,并通过实验分析各算法的二化效果及运算速度。  1 现有的图像二化算法  二化是一幅图像包括目标物体、背景还有...
  • AR轴比(dB)与交叉极化的对应关系
  • 当存在值交叉但未出现该时,用户可以确定他们是否希望分配交叉- 到输入向量的前一个元素(选项“pre”),或- 到以下元素(选项“fol”),或- 到其更接近其交叉被寻找的的元素(选项“dis”),或- 在两个...
  • 函数计算具有时间滞后的阈值交叉时间序列之间的余弦交叉相似度。 它还计算显性滞后和最大。 更多细节http://www.ida.liu.se/~agbur/Software.htm
  • **2 什么是网格搜索(Grid Search)3 交叉验证,网格搜索(模型选择与调优)API:4 鸢尾花案例增加K调优 学习目标 掌握K-近邻算法实现过程 知道K-近邻算法的距离公式 知道K-近邻算法的超参数K以及取值问题 知道kd...
  • k值交叉验证 交叉验证集Cross-Validation also referred to as out of sampling technique is an essential element of a data science project. It is a resampling procedure used to evaluate machine learning ...

    k值交叉验证 交叉验证集

    Cross-Validation also referred to as out of sampling technique is an essential element of a data science project. It is a resampling procedure used to evaluate machine learning models and access how the model will perform for an independent test dataset.

    交叉验证(也称为“过采样”技术)是数据科学项目的基本要素。 它是一种重采样过程,用于评估机器学习模型并访问该模型对独立测试数据集的性能。

    In this article, you can read about 8 different cross-validation techniques having their pros and cons, listed below:

    在本文中,您可以阅读以下大约8种不同的交叉验证技术,各有其优缺点:

    1. Leave p out cross-validation

      省略p交叉验证

    2. Leave one out cross-validation

      留出一个交叉验证

    3. Holdout cross-validation

      保持交叉验证

    4. Repeated random subsampling validation

      重复随机二次抽样验证

    5. k-fold cross-validation

      k折交叉验证

    6. Stratified k-fold cross-validation

      分层k折交叉验证

    7. Time Series cross-validation

      时间序列交叉验证

    8. Nested cross-validation

      嵌套交叉验证

    Before coming to cross-validation techniques let us know why cross-validation should be used in a data science project.

    在介绍交叉验证技术之前,让我们知道为什么在数据科学项目中应使用交叉验证。

    为什么交叉验证很重要? (Why Cross-Validation is Important?)

    We often randomly split the dataset into train data and test data to develop a machine learning model. The training data is used to train the ML model and the same model is tested on independent testing data to evaluate the performance of the model.

    我们经常将数据集随机分为训练数据和测试数据,以开发机器学习模型。 训练数据用于训练ML模型,同一模型在独立的测试数据上进行测试以评估模型的性能。

    With the change in the random state of the split, the accuracy of the model also changes, so we are not able to achieve a fixed accuracy for the model. The testing data should be kept independent of the training data so that no data leakage occurs. During the development of an ML model using the training data, the model performance needs to be evaluated. Here’s the importance of cross-validation data comes into the picture.

    随着分裂随机状态的变化,模型的准确性也会发生变化,因此我们无法为模型获得固定的准确性。 测试数据应与训练数据无关,以免发生数据泄漏。 在使用训练数据开发ML模型的过程中,需要评估模型的性能。 这就是交叉验证数据的重要性。

    Data needs to split into:

    数据需要分为:

    • Training data: Used for model development

      训练数据:用于模型开发

    • Validation data: Used for validating the performance of the same model

      验证数据:用于验证相同模型的性能

    Image for post
    (Image by Author), Validation split
    (作者提供的图像),验证拆分

    In simple terms cross-validation allows us to utilize our data even better. You can further read, working, and implementation of 7 types of Cross-Validation techniques.

    简单来说,交叉验证使我们可以更好地利用我们的数据。 您可以进一步阅读,使用和实施7种类型的交叉验证技术。

    1.保留p-out交叉验证: (1. Leave p-out cross-validation:)

    Leave p-out cross-validation (LpOCV) is an exhaustive cross-validation technique, that involves using p-observation as validation data, and remaining data is used to train the model. This is repeated in all ways to cut the original sample on a validation set of p observations and a training set.

    离开p-out交叉验证(LpOCV)是一种详尽的交叉验证技术,涉及使用p观测作为验证数据,而其余数据则用于训练模型。 以所有方式重复此步骤,以在p个观察值的验证集和一个训练集上切割原始样本。

    A variant of LpOCV with p=2 known as leave-pair-out cross-validation has been recommended as a nearly unbiased method for estimating the area under ROC curve of a binary classifier.

    已推荐使用p = 2的LpOCV变体(称为休假配对交叉验证)作为估计二进制分类器ROC曲线下面积的几乎无偏的方法。

    2.一劳永逸的交叉验证: (2. Leave-one-out cross-validation:)

    Leave-one-out cross-validation (LOOCV) is an exhaustive cross-validation technique. It is a category of LpOCV with the case of p=1.

    留一法交叉验证(LOOCV)是一种详尽的交叉验证技术。 在p = 1的情况下,它是LpOCV的类别。

    Image for post
    Source), LOOCV operations 来源 ),LOOCV操作

    For a dataset having n rows, 1st row is selected for validation, and the rest (n-1) rows are used to train the model. For the next iteration, the 2nd row is selected for validation and rest to train the model. Similarly, the process is repeated until n steps or the desired number of operations.

    对于具有n行的数据集,选择第一行进行验证,其余(n-1)行用于训练模型。 对于下一次迭代,选择第二行进行验证,然后休息以训练模型。 类似地,重复该过程,直到n个步骤或所需的操作数。

    Both the above two cross-validation techniques are the types of exhaustive cross-validation. Exhaustive cross-validation methods are cross-validation methods that learn and test in all possible ways. They have the same pros and cons discussed below:

    以上两种交叉验证技术都是穷举性交叉验证的类型。 详尽的交叉验证方法是以各种可能的方式学习和测试的交叉验证方法。 它们具有以下讨论的优点和缺点:

    优点: (Pros:)

    1. Simple, easy to understand, and implement.

      简单,易于理解和实施。

    缺点: (Cons:)

    1. The model may lead to a low bias.

      该模型可能会导致较低的偏差。
    2. The computation time required is high.

      所需的计算时间长。

    3.保留交叉验证: (3. Holdout cross-validation:)

    The holdout technique is an exhaustive cross-validation method, that randomly splits the dataset into train and test data depending on data analysis.

    保持技术是一种详尽的交叉验证方法,该方法根据数据分析将数据集随机分为训练数据和测试数据。

    Image for post
    (Image by Author), 70:30 split of Data into training and validation data respectively
    (作者提供的图片),70:30将数据分别分为训练和验证数据

    In the case of holdout cross-validation, the dataset is randomly split into training and validation data. Generally, the split of training data is more than test data. The training data is used to induce the model and validation data is evaluates the performance of the model.

    在保持交叉验证的情况下,数据集被随机分为训练和验证数据。 通常,训练数据的分割不仅仅是测试数据。 训练数据用于推导模型,而验证数据用于评估模型的性能。

    The more data is used to train the model, the better the model is. For the holdout cross-validation method, a good amount of data is isolated from training.

    用于训练模型的数据越多,模型越好。 对于保持交叉验证方法,需要从训练中隔离大量数据。

    优点: (Pros:)

    1. Same as previous.

      和以前一样。

    缺点: (Cons:)

    1. Not suitable for an imbalanced dataset.

      不适合不平衡数据集。
    2. A lot of data is isolated from training the model.

      许多数据与训练模型隔离。

    4. k折交叉验证: (4. k-fold cross-validation:)

    In k-fold cross-validation, the original dataset is equally partitioned into k subparts or folds. Out of the k-folds or groups, for each iteration, one group is selected as validation data, and the remaining (k-1) groups are selected as training data.

    在k倍交叉验证中,原始数据集被平均分为k个子部分或折叠。 从k折或组中,对于每次迭代,选择一组作为验证数据,其余(k-1)个组选择为训练数据。

    Image for post
    Source), k-fold cross-validation 来源 ),k折交叉验证

    The process is repeated for k times until each group is treated as validation and remaining as training data.

    该过程重复k次,直到将每个组视为验证并保留为训练数据为止。

    Image for post
    (Image by Author), k-fold cross-validation
    (作者提供的图片),k倍交叉验证

    The final accuracy of the model is computed by taking the mean accuracy of the k-models validation data.

    模型的最终精度是通过获取k模型验证数据的平均精度来计算的。

    Image for post

    LOOCV is a variant of k-fold cross-validation where k=n.

    LOOCV是k倍交叉验证的变体,其中k = n。

    优点: (Pros:)

    1. The model has low bias

      该模型偏差低
    2. Low time complexity

      时间复杂度低
    3. The entire dataset is utilized for both training and validation.

      整个数据集可用于训练和验证。

    缺点: (Cons:)

    1. Not suitable for an imbalanced dataset.

      不适合不平衡数据集。

    5.重复随机二次抽样验证: (5. Repeated random subsampling validation:)

    Repeated random subsampling validation also referred to as Monte Carlo cross-validation splits the dataset randomly into training and validation. Unlikely k-fold cross-validation split of the dataset into not in groups or folds but splits in this case in random.

    重复的随机子采样验证(也称为蒙特卡洛交叉验证)将数据集随机分为训练和验证。 数据集的k倍交叉验证不太可能分成几类,而不是成组或成对,而是在这种情况下随机地成组。

    The number of iterations is not fixed and decided by analysis. The results are then averaged over the splits.

    迭代次数不是固定的,而是由分析决定的。 然后将结果平均化。

    Image for post
    (Image by Author), Repeated random subsampling validation
    (作者提供的图片),重复随机子采样验证
    Image for post

    优点: (Pros:)

    1. The proportion of train and validation splits is not dependent on the number of iterations or partitions.

      训练和验证拆分的比例不取决于迭代或分区的数量。

    缺点: (Cons:)

    1. Some samples may not be selected for either training or validation.

      某些样本可能无法选择用于训练或验证。
    2. Not suitable for an imbalanced dataset.

      不适合不平衡数据集。

    6.分层k折交叉验证: (6. Stratified k-fold cross-validation:)

    For all the cross-validation techniques discussed above, they may not work well with an imbalanced dataset. Stratified k-fold cross-validation solved the problem of an imbalanced dataset.

    对于上面讨论的所有交叉验证技术,它们可能不适用于不平衡的数据集。 分层k折交叉验证解决了数据集不平衡的问题。

    In Stratified k-fold cross-validation, the dataset is partitioned into k groups or folds such that the validation data has an equal number of instances of target class label. This ensures that one particular class is not over present in the validation or train data especially when the dataset is imbalanced.

    在分层k倍交叉验证中,数据集被划分为k个组或折叠,以使验证数据具有相等数量的目标类标签实例。 这样可以确保在验证或训练数据中不会出现一个特定的类,尤其是在数据集不平衡时。

    Image for post
    (Image by Author), Stratified k-fold cross-validation, Each fold has equal instances of the target class
    (作者提供的图片),分层k折交叉验证,每折具有相等的目标类实例

    The final score is computed by taking the mean of scores of each fold.

    最终分数是通过取各折分数的平均值来计算的。

    优点: (Pros:)

    1. Works well for an imbalanced dataset.

      对于不平衡的数据集,效果很好。

    缺点: (Cons:)

    1. Now suitable for time series dataset.

      现在适合时间序列数据集。

    7.时间序列交叉验证: (7. Time Series cross-validation:)

    The order of the data is very important for time-series related problem. For time-related dataset random split or k-fold split of data into train and validation may not yield good results.

    数据的顺序对于与时间序列相关的问题非常重要。 对于与时间相关的数据集,将数据随机拆分或k倍拆分为训练和验证可能不会产生良好的结果。

    For the time-series dataset, the split of data into train and validation is according to the time also referred to as forward chaining method or rolling cross-validation. For a particular iteration, the next instance of train data can be treated as validation data.

    对于时间序列数据集,根据时间将数据分为训练和验证,也称为前向链接方法滚动交叉验证 。 对于特定的迭代,可以将火车数据的下一个实例视为验证数据。

    Image for post
    (Image by Author), Time Series cross-validation
    (作者提供的图像),时间序列交叉验证

    As mentioned in the above diagram, for the 1st iteration, 1st 3 rows are considered as train data and the next instance T4 is validation data. The chance of choice of train and validation data is forwarded for further iterations.

    如上图所述,对于第一个迭代,第一个3行被视为训练数据,下一个实例T4是验证数据。 选择训练和验证数据的机会将被进一步迭代。

    8.嵌套交叉验证: (8. Nested cross-validation:)

    In the case of k-fold and stratified k-fold cross-validation, we get a poor estimate of the error in training and test data. Hyperparameter tuning is done separately in the earlier methods. When cross-validation is used simultaneously for tuning the hyperparameters and generalizing the error estimate, nested cross-validation is required.

    在进行k折和分层k折交叉验证的情况下,我们对训练和测试数据中的错误估计差。 超参数调整是在较早的方法中单独完成的。 当交叉验证同时用于调整超参数和泛化误差估计时,需要嵌套交叉验证。

    Nested Cross Validation can be applicable in both k-fold and stratified k-fold variants. Read the below article to know more about nested cross-validation and its implementation:

    嵌套交叉验证可同时应用于k折和分层k折变体。 阅读以下文章,以了解有关嵌套交叉验证及其实现的更多信息:

    结论: (Conclusion:)

    Cross-validation is used to compare and evaluate the performance of ML models. In this article, we have covered 8 cross-validation techniques along with their pros and cons. k-fold and stratified k-fold cross-validations are the most used techniques. Time series cross-validation works best with time series related problems.

    交叉验证用于比较和评估ML模型的性能。 在本文中,我们介绍了8种交叉验证技术及其优缺点。 k折和分层k折交叉验证是最常用的技术。 时间序列交叉验证最适合与时间序列相关的问题。

    Implementation of these cross-validations can be found out in the sklearn package. Read this sklearn documentation for more details.

    这些交叉验证的实现可以在sklearn包中找到。 阅读此sklearn文档以获取更多详细信息。

    翻译自: https://towardsdatascience.com/understanding-8-types-of-cross-validation-80c935a4976d

    k值交叉验证 交叉验证集

    展开全文
  • [PearsonR, PearsonP, SpearmanR, SpearmanP, yhat, R2 ] = BenStuff_CrossValCorr( x,y, [MathMagic], [OmNullModel] ) 留一法交叉验证的简单线性回归输入变量: x, y:数据向量(x(n) 和 y(n) 对应一对观测) ...
  • cvAUC R软件包提供了一种计算有效的方法,可以估计ROC曲线(AUC)估计交叉验证的面积的置信区间(或方差)。 在二元分类问题中, 通常用于评估预测模型的性能。 通常,它与相结合,以评估结果如何推广到一个...
  • 可测算效率,不会出现无效率状态,比传统dea模型测算结果更加客观
  • K折交叉验证:传统的求准确度的方法是将整个数据分为训练集和测试集,并根据测试数据计算出准确度,但这并不是最佳方法,因此我们采用K折交叉验证是许多精度的平均,并且它还提供了精度的标准偏差,这是评估模型的...
  • 运用训练集来做交叉验证,从而找到最优k 我们因为要同时观察训练集的子训练集和测试集效果随着k的增加而变化情况,所以这里直接用 sklearn.model_selection 中的 vlidation_curve 来完成。 import ...

    问题引出

    之前我们使用K近邻算法尝试寻找用户年龄与预估薪资之间的某种相关性,以及他们是否有购买SUV的决定。主要代码如下:

    
    from sklearn.neighbors import KNeighborsClassifier
    
    classifier = KNeighborsClassifier(n_neighbors=5, metric='minkowski', p=2)
    classifier.fit(X_train, y_train)
    

    现在有一个问题,上面的n_neighbors(k值)为什么是5,其他值可不可以?效果会怎么样?如何知道哪个k值的效果相对较好?这就需要用到交叉验证。

    交叉验证有什么用,为什么要用它?

    关于它有什么用,经过浏览相关网页获得了以下两点总结:

    • 在数据集很小的时候防止过拟合。
    • 找到合适的模型参数。

    看到这里,不知道你对为什么要用交叉验证有没有明白一点点,说白了就是我们手头上的数据量太小,直接对数据量小的数据集进行训练集和测试集的划分,最后的效果即使很好,也不能确定后面部署上线的结果会一样好,因为模型效果表现仅仅局限于我们那少得可怜的数据集上。

    假如我们有很多很多的数据,不要问多少,反正就是很多的那种,我个人觉得我们可以直接暴力的通过下面方式来找到KNN的最优k值:

    import matplotlib.pyplot as plt
    
    k_range = range(1, 51)
    k_scores = []
    
    for k in k_range:
        knn = KNeighborsClassifier(n_neighbors=k)
        knn.fit(X_train, y_train)
        score = knn.score(X_test, y_test)
        k_scores.append(score)
    
    plt.plot(k_range, k_scores)
    plt.xlabel('Vlaue of K for KNN')
    plt.ylabel('Cross-Validated Accuracy')
    plt.show()
    

    在这里插入图片描述

    这样,在我们有大量数据前提下,我们就可以大致确定哪个k值最优了,或者直接做深度学习。

    但是,现实中,我们往往很难收集到大量的数据,这种情况下,我们只好从我们那少得可怜的数据集下手了,也就是说,我们要在数据量少的情况下,尽量通过交叉验证来找到一组好的模型参数,让其在看到未知参数的情况​也一样好,这样也就防止了模型训练的效果好,看到未知数据不好的过拟合​情况。​

    如何交叉验证?

    简单来说就是对数据集进行重新划分,不再像之前那样只是简单将数据集划分训练集和测试集。关于如何重新划分数据集,网上主要有两种方式。

    1、先将数据集划分为训练集和测试集,再对训练集划分为子训练集和子测试集,如下图:
    在这里插入图片描述
    2、直接将数据集划分如下所示:
    在这里插入图片描述
    关于上面的两个方法,绝大多数都是第一种方式,我是这么认为的,既然交叉验证只是用来找到合适的模型参数,到最后我们要验证找的合适的模型参数是否合适,那么我们还是需要通过给模型看看它没有看过的数据来验证,所以我也支持第一种方法。

    还有一点要说明的是,从上面的图中可以看出,交叉验证的时候同时训练十个模型(训练集和测试集都不一样),然后将结果取求和平均。到这里我又有一个疑惑,为什么是十个,不是五个,有浏览一些网站,总结一点:大家普遍用5个或者是10个。我后面会选5个的。不要问为什么,因为如果我用10个你也会问我同意的问题。

    动手撸代码

    又到开心又快乐的撸代码(我信你鬼)环节,对了,上面和接下来要做的都是基于sklearn的K近邻算法做的。为了更加深刻了解机器学习的敲代码步骤,下面将尽量从头开始做起。

    案例描述

    一家汽车公司刚刚推出了他们新型的豪华SUV,我们尝试预测哪些用户会购买这种全新SUV。数据集是从某社交网络中收集的用户信息。这些信息涉及用户ID、性别、年龄以及预估薪资,最后一列用来表示用户是否购买。我们将建立一种模型来预测用户是否购买这种SUV,该模型基于两个变量,分别是年龄和预计薪资。我们尝试寻找用户年龄与预估薪资之间的某种相关性,以及他们是否有购买SUV的决定。
    在这里插入图片描述

    导入常用相关库。
    import numpy as np 
    import pandas as pd 
    import matplotlib.pyplot as plt
    
    导入数据集
    dataset = pd.read_csv('./datasets/Social_Network_Ads.csv')
    X = dataset.iloc[:, [2, 3]].values
    y = dataset.iloc[:, 4].values
    
    将数据集划分成为训练集和测试集。
    from sklearn.model_selection import train_test_split
    
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=1/4, random_state=0)
    
    数据标准化
    from sklearn.preprocessing import StandardScaler
    
    sc = StandardScaler()
    X_train = sc.fit_transform(X_train)
    X_test = sc.transform(X_test)
    
    运用训练集来做交叉验证,从而找到最优k值

    我们因为要同时观察训练集的子训练集和测试集效果随着k的增加而变化情况,所以这里直接用 sklearn.model_selection 中的 vlidation_curve 来完成。
    在这里插入图片描述
    在这里插入图片描述

    import matplotlib.pyplot as plt
    from sklearn.model_selection import validation_curve
    
    param_name = 'n_neighbors'
    param_range = range(1, 51)
    
    # scoring: 分类用 accuracy, 回归用 mean_squared_error
    train_scores, test_scores = validation_curve(
        KNeighborsClassifier(), X_train, y_train, cv=5,
        param_name=param_name, param_range=param_range,
        scoring='accuracy')
    
    train_scores_mean = np.mean(train_scores, axis=1)
    test_scores_mean = np.mean(test_scores, axis=1)
    
    plt.plot(param_range,train_scores_mean, color='red', label='train')
    plt.plot(param_range, test_scores_mean, color='green', label='test')
    plt.legend('best')
    plt.xlabel('param range of k')
    plt.ylabel('scores mean')
    plt.show()
    

    在这里插入图片描述
    从上图我们可以看到最优的k值在7。

    用找到的k值做模型训练
    classifier = KNeighborsClassifier(n_neighbors=7)
    classifier.fit(X_train, y_train)
    
    用测试集测试结果
    score = classifier.score(X_test, y_test)
    print(score)  
    # ===> 0.93
    

    到这里就结束了。最后要记住交叉验证不是用来提高模型准确率的,而是用来找到合适的模型参数,在数据集很小的时候防止过拟合。

    展开全文
  • 变评价过程中效用改变的途径由“基于权重的交换”转化为“基于交叉竞争博弈的指标调整”,实施对DEA模型的改进,设计交叉竞争的博弈效率DEA评价方法,得出确定型、风险型和不确定型DEA方法的分类和交叉竞争的博弈...
  • 交叉组合算法代码

    2018-06-19 11:35:31
    该资源为本人自己写的交叉组合算法代码的工具类,一共两个,搭配文章看效果更好!
  • 然后,应用基尼准则计算各个效率所包含的信息纯度,并借之实现交叉效率矩阵的集结;最后,根据集结结果对决策单元进行排序和择优.所提决策方法不仅能够克服传统DEA交叉效率方法的交叉评价策略选择难的问题,而且能够...
  • 10折交叉验证知识代码KNN算法方法 针对数据挖掘课程设计了不同的KNN算法。 有一个与患者的癌症状况相关的数据集,具有10个不同的特征,并且是用于诊断的类部分。 “ 1”用于诊断疾病,“ 0”反之亦然。 在家庭作业中...
  • 介绍了一种新的交叉定标方法。...将预测与对应通道的实测进行了比较。结果表明, 13个通道的差异不超过7.7%,第9通道的差异为11.9%。交叉定标合成不确定度优于7.7%。初步验证了这一新方法的原理可行性。
  • 然后将效率得分作为决策系统指标, 与系统中其他指标进行模糊等级转换, 通过证据理论对指标融合, 进而得到决策单元的期望效用, 据此对决策单元进行排序; 最后通过实例与其他文献方法进行对比分析, 以表明所提出...
  • EBS交叉验证规则

    2018-11-14 14:25:46
    EBS交叉验证规则是控制一个特定键弹性域结构内的组合规则
  • dea交叉效率评价

    2015-12-13 18:36:18
    dea交叉效率评价程序,用于企业效益评价,AHP综合评价方法的结合使用等
  • 型号为DS25CP102的交叉点开关电路通道的功耗只有125mW,以高达3.125Gbps的速度传送数据时,抖动只有6ps(典型)。这款芯片设有传送预加重及接收均衡这两个功能选项,确保电缆及FR-4底板内的信号可以传送到更远的范围...
  • 基于三忆阻器1T1M交叉阵列复位和读写的实现方法 pdf整理.zip
  • 交叉验证」到底如何选择K? 原文链接:https://cloud.tencent.com/developer/article/1410946 交叉验证(cross validation)一般被用于评估一个机器学习模型的表现。更多的情况下,我们也用交叉验证来进行模型选择...
  • 行和列的交叉处可以对数据进行多种汇总计算,如:求和、平均、记数、最大、最小值等。使用交叉表查询数据非常直观明了,被广泛应用。交叉表查询也是数据库的一个特点。 例如:  select 表1.组名,  (select ...
  • 然后对最小 交叉效率、平均交叉效率和最大交叉效率进行模糊化, 模糊化之后将其作为模糊综合评价的指标与非量化指 标一起进行二次评价, 以建立基于DEA交叉评价的模糊综合评价模型; 最后通过评价实例验证...
  • 利用交叉验证方法检验所建立的BP神经网络的分类效果,该程序是基于5折交叉验证对所建立的神经网络进行检验。
  • 随机泊松分布矩阵 x 和向量 y 用泊松广义线性模型 [1] 拟合,估计拟合优度有两种情况: 1 没有交叉验证会导致高伪 R2 (pR2) 2 交叉验证可提供正确的低 pR2 误导性的高 pR2 和没有交叉验证的良好拟合是由于...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 237,714
精华内容 95,085
关键字:

交叉值