一心只为写bug 2021-05-10 17:52 采纳率: 0%
浏览 68

高光谱图像分类的问题

本人使用python进行高光谱图像分类的实验。 数据集使用的Indian Pines 。 使用的SVC分类器进行的训练和预测。 最后希望将预测的结果进行可视化,然后和GroundTruth图做个对比。 希望好心人能传授一下可视化的原理或者代码。

  • 写回答

1条回答 默认 最新

  • 天元浪子 Python领域优质创作者 2021-05-11 09:02
    关注

    题主没有提供数据集的特征维数,也没有分类数,很难给出有针对性的建议,只能泛泛而谈。

    首先,如果数据集特征维数较高,可能没有合适的数据可视化的方案。如果一定要做可视化数据,不妨用PCA降维试试看。

    如果是二分类问题,可以在评估指标方面做些可视化工作,比如混淆矩阵;如果是多分类问题,基本也没啥可视化的手段。

    不管题主使用LinearSVC、NuSVC或SVC的哪一种,都属于SVM二分类模型。SVM 在解决小样本、非线性及高维模式识别中表现出许 多特有的优势,并且还能够推广应用到函数拟合等其他机器学习问题中。不过,SVM 解决多元分类问题时效率较低,也难以对大规模训练样本实施训练。

    下面是基于SVM的乳腺癌数据集的二分类示例代码和模型评估,摘自拙著《Python高手修炼之道》。

    # -*- encoding: utf-8 -*-
    
    """
    8.4.5 支持向量机分类
    """
    
    from sklearn.datasets import load_breast_cancer
    from sklearn.model_selection import cross_val_score
    from sklearn import svm
    
    ds = load_breast_cancer() # 加载乳腺癌数据集
    msvc = svm.SVC() # 实例化SVC分类器
    mnusvc = svm.NuSVC()# 实例化NuSVC分类器
    mlsvc = svm.LinearSVC(dual=False) # 实例化LinearSVC分类器
    score_msvc = cross_val_score(msvc, ds.data, ds.target, cv=10)
    score_mnusvc = cross_val_score(mnusvc, ds.data, ds.target, cv=10)
    score_mlsvc = cross_val_score(mlsvc, ds.data, ds.target, cv=10)
    
    print(score_msvc.mean()) # SVC交叉验证10次的平均精度
    print(score_mnusvc.mean()) # NuSVC交叉验证10次的平均精度
    print(score_mlsvc.mean()) # LinearSVC交叉验证10次的平均精度
    # -*- encoding: utf-8 -*-
    
    """
    8.8.2 交叉验证
    """
    
    from sklearn.datasets import load_breast_cancer
    from sklearn.svm import SVC
    from sklearn.metrics import confusion_matrix
    from sklearn.model_selection import train_test_split as tsplit
    
    from sklearn.metrics import accuracy_score
    from sklearn.metrics import precision_score
    from sklearn.metrics import recall_score
    from sklearn.metrics import f1_score
    
    X, y = load_breast_cancer(return_X_y=True)
    X_train, X_test, y_train, y_test = tsplit(X, y, test_size=0.1)
    
    svc = SVC() # 实例化支持向量机分类器
    svc.fit(X_train, y_train) # 训练
    y_pred = svc.predict(X_test) # 预测
    
    print(confusion_matrix(y_test, y_pred)) # 返回混淆矩阵
    print(svc.score(X_test, y_test)) # 模型精度
    
    print(accuracy_score(y_test, y_pred)) # 模型精度
    print(precision_score(y_test, y_pred)) # 模型准确率
    print(recall_score(y_test, y_pred)) # 模型召回率
    print(f1_score(y_test, y_pred)) # f1分值
    评论

报告相同问题?

悬赏问题

  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音
  • ¥30 Pytorch深度学习服务器跑不通问题解决?
  • ¥15 部分客户订单定位有误的问题
  • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
  • ¥15 Bug traq 数据包 大概什么价
  • ¥15 在anaconda上pytorch和paddle paddle下载报错
  • ¥25 自动填写QQ腾讯文档收集表