【问题标题】:GridSearchCV results heatmapGridSearchCV 结果热图
【发布时间】:2021-09-09 07:14:31
【问题描述】:

我正在尝试为来自 sklearn 的 GridSearchCV 结果生成热图。我喜欢sklearn-evaluation 的一点是它非常容易生成热图。但是,我遇到了一个问题。当我将参数设为 None 时,例如

max_depth = [3, 4, 5, 6, None]

在生成热图时,它显示错误提示:

TypeError: '<' not supported between instances of 'NoneType' and 'int'

有什么解决方法吗? 我找到了其他生成热图的方法,例如使用 matplotlib 和 seaborn,但没有什么能像 sklearn-evalutaion 那样提供漂亮的热图。

【问题讨论】:

    标签: python matplotlib scikit-learn seaborn sklearn-pandas


    【解决方案1】:

    我摆弄了grid_search.py 文件/lib/python3.8/site-packages/sklearn_evaluation/plot/grid_search.py。在第 192/193 行更改行

    来自

    row_names = sorted(set([t[0] for t in matrix_elements.keys()]),
                       key=itemgetter(1))
    col_names = sorted(set([t[1] for t in matrix_elements.keys()]),
                       key=itemgetter(1))
    

    收件人:

    row_names = sorted(set([t[0] for t in matrix_elements.keys()]),
                       key=lambda x: (x[1] is None, x[1]))
    col_names = sorted(set([t[1] for t in matrix_elements.keys()]),
                       key=lambda x: (x[1] is None, x[1]))
    

    在排序时将所有None 移动到列表的末尾是基于先前的answer 来自安德鲁·克拉克。

    使用这个调整,我的演示脚本如下所示:

    import numpy as np
    import sklearn.datasets as datasets
    from sklearn.ensemble import RandomForestClassifier
    from sklearn.model_selection import GridSearchCV
    from sklearn_evaluation import plot
    
    data = datasets.make_classification(n_samples=200, n_features=10, n_informative=4, class_sep=0.5)
    
    
    X = data[0]
    y = data[1]
    
    hyperparameters = {
        "max_depth": [1, 2, 3, None],
        "criterion": ["gini", "entropy"],
        "max_features": ["sqrt", "log2"],
    }
    
    est = RandomForestClassifier(n_estimators=5)
    clf = GridSearchCV(est, hyperparameters, cv=3)
    clf.fit(X, y)
    plot.grid_search(clf.cv_results_, change=("max_depth", "criterion"), subset={"max_features": "sqrt"})
    
    
    import matplotlib.pyplot as plt
    
    plt.show()
    

    输出如下图:

    【讨论】:

    • 这是一个不错的解决方案。目前,我正在使用需要一些手动数据操作的 seaborn 热图。很高兴看到这个解决方案合并到 sklearn-evaluation 中。
    猜你喜欢
    • 2020-11-16
    • 2020-09-26
    • 2020-03-09
    • 2017-05-29
    • 2018-01-31
    • 2018-06-11
    • 2022-01-13
    • 2015-02-02
    • 2019-08-18
    相关资源
    最近更新 更多