比较特征约简技术

比较特征约简技术

import numpy as np

import matplotlib.pyplot as plt

from sklearn.datasets import load_digits

from sklearn.model_selection import GridSearchCV

from sklearn.pipeline import Pipeline

from sklearn.svm import LinearSVC

from sklearn.decomposition import PCA, NMF

from sklearn.feature_selection import SelectKBest, chi2

plt.rcParams['font.sans-serif'] = ['SimHei']

plt.rcParams['axes.unicode_minus'] = False

pipe = Pipeline([

    # the reduce_dim stage is populated by the param_grid

    ('reduce_dim', 'passthrough'),

    ('classify', LinearSVC(dual=False, max_iter=10000))

])

N_FEATURES_OPTIONS = [2, 4, 8]

C_OPTIONS = [1, 10, 100, 1000]

param_grid = [

    {

        'reduce_dim': [PCA(iterated_power=7), NMF()],

        'reduce_dim__n_components': N_FEATURES_OPTIONS,

        'classify__C': C_OPTIONS

    },

    {

        'reduce_dim': [SelectKBest(chi2)],

        'reduce_dim__k': N_FEATURES_OPTIONS,

        'classify__C': C_OPTIONS

    },

]

reducer_labels = ['PCA', 'NMF', 'KBest(chi2)']

grid = GridSearchCV(pipe, n_jobs=1, param_grid=param_grid)

X, y = load_digits(return_X_y=True)

grid.fit(X, y)

mean_scores = np.array(grid.cv_results_['mean_test_score'])

# 分数按param_grid迭代的顺序排列,按字母顺序排列

mean_scores = mean_scores.reshape(len(C_OPTIONS), -1, len(N_FEATURES_OPTIONS))

# 选择最佳C的分数

mean_scores = mean_scores.max(axis=0)

bar_offsets = (np.arange(len(N_FEATURES_OPTIONS)) *

              (len(reducer_labels) + 1) + .5)

plt.figure()

COLORS = 'bgrcmyk'

for i, (label, reducer_scores) in enumerate(zip(reducer_labels, mean_scores)):

    plt.bar(bar_offsets + i, reducer_scores, label=label, color=COLORS[i])

plt.title("比较特征约简技术")

plt.xlabel('Reduced number of features')

plt.xticks(bar_offsets + len(reducer_labels) / 2, N_FEATURES_OPTIONS)

plt.ylabel('Digit classification accuracy')

plt.ylim((0, 1))

plt.legend(loc='upper left')

plt.show()


©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容