烟台门户网站开发,租赁公司网站源码,新媒体宣传推广方案,html编辑器在哪里目录 一、数据集下载
二、安装包
三、数据处理
四、模型训练
五、模型推理
六、踩坑记录 一、数据集下载
Hyperspectral Remote Sensing Scenes - Grupo de Inteligencia Computacional (GIC) (ehu.eus) Installing SPy — Spectral Python 0.21 documentation 二、安装…目录 一、数据集下载
二、安装包
三、数据处理
四、模型训练
五、模型推理
六、踩坑记录 一、数据集下载
Hyperspectral Remote Sensing Scenes - Grupo de Inteligencia Computacional (GIC) (ehu.eus) Installing SPy — Spectral Python 0.21 documentation 二、安装包
Spectral Python (SPy)是一个用于处理高光谱图像数据的纯Python模块。它具有读取、显示、操作和分类高光谱图像的功能。
Spectral安装
官网链接
Installing SPy — Spectral Python 0.21 documentation
安装命令
pip install spectral 三、数据处理
加载数据、统计元素个数、光谱图显示、重构需要用到的类、标准化数据并存储 import matplotlib.pyplot as plt
import numpy as np
from scipy.io import loadmat
import spectral
import cv2
import pandas as pd
from sklearn import preprocessingprint(OpenCV version:, cv2.__version__)
print(Spectral version:, spectral.__version__)input_image loadmat(rC:\xxxxxxxxxxxxxxxxxxxxxxx/KSC.mat)[KSC] #数据
output_image loadmat(rC:\xxxxxxxxxxxxxxxxxxxxxx/KSC_gt.mat)[KSC_gt]#标签dict_k {}
for i in range(output_image.shape[0]):for j in range(output_image.shape[1]):#if output_image[i][j] in [m for m in range(1,17)]:if output_image[i][j] in [1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13]:if output_image[i][j] not in dict_k:dict_k[output_image[i][j]]0dict_k[output_image[i][j]] 1print (dict_k)
#print (reduce(lambda x,y:xy,dict_k.values()))ksc_color np.array([[255,255,255],[184,40,99],[74,77,145],[35,102,193],[238,110,105],[117,249,76],[114,251,253],[126,196,59],[234,65,247],[141,79,77],[183,40,99],[0,39,245],[90,196,111],])ground_truth spectral.imshow(classes output_image.astype(int),figsize (9,9),colorsksc_color)cv2.imshow(1,output_image) #没有实质性的作用解决spectral.imshow闪退问题
cv2.waitKey(0)# 除掉 0 这个非分类的类把所有需要分类的元素提取出来
need_label np.zeros([output_image.shape[0],output_image.shape[1]])
for i in range(output_image.shape[0]):for j in range(output_image.shape[1]):if output_image[i][j] ! 0:need_label[i][j] output_image[i][j]new_datawithlabel_list []
for i in range(output_image.shape[0]):for j in range(output_image.shape[1]):if need_label[i][j] ! 0:c2l list(input_image[i][j])c2l.append(need_label[i][j])new_datawithlabel_list.append(c2l)new_datawithlabel_array np.array(new_datawithlabel_list)
data_D preprocessing.StandardScaler().fit_transform(new_datawithlabel_array[:,:-1])
data_L new_datawithlabel_array[:,-1]new np.column_stack((data_D,data_L))
new_ pd.DataFrame(new)
new_.to_csv(rC:xxxxxxxx/KSC.csv,headerFalse,indexFalse)# 将结果存档后续处理四、模型训练 import joblib
from sklearn.model_selection import KFold
from sklearn.model_selection import train_test_split
import numpy as np
from sklearn.svm import SVC
from sklearn import metrics
from sklearn import preprocessing
import pandas as pd# 导入数据集切割训练与测试数据
data pd.read_csv(rC:xxxxxxxxxxxxx/KSC.csv,headerNone)
data data.values
data_D data[:,:-1]
data_L data[:,-1]
data_train, data_test, label_train, label_test train_test_split(data_D,data_L,test_size0.5)# 模型训练与拟合
clf SVC(kernelrbf,gamma0.125,C16)
clf.fit(data_train,label_train)
pred clf.predict(data_test)
accuracy metrics.accuracy_score(label_test, pred)*100
print (accuracy)# 存储结果学习模型方便之后的调用
joblib.dump(clf, KSC_MODEL.m)五、模型推理
import matplotlib.pyplot as plt
import numpy as np
from scipy.io import loadmat
import spectral
import joblib
from sklearn import metrics
import cv2# KSC
input_image loadmat(rC:\xxxxxxxxxxx/KSC.mat)[KSC]
output_image loadmat(rC:\xxxxxxxxxx/KSC_gt.mat)[KSC_gt]testdata np.genfromtxt(rC:\xxxxxxxx/KSC.csv,delimiter,)
data_test testdata[:,:-1]
label_test testdata[:,-1]clf joblib.load(KSC_MODEL.m)predict_label clf.predict(data_test)
accuracy metrics.accuracy_score(label_test, predict_label)*100print (accuracy) # 97.1022836308# 将预测的结果匹配到图像中
new_show np.zeros((output_image.shape[0],output_image.shape[1]))
k 0
for i in range(output_image.shape[0]):for j in range(output_image.shape[1]):if output_image[i][j] ! 0 :new_show[i][j] predict_label[k]k 1 # 展示地物
ground_truth spectral.imshow(classes output_image.astype(int),figsize (9,9))
ground_predict spectral.imshow(classes new_show.astype(int), figsize (9,9))cv2.imshow(1,output_image)
cv2.waitKey(0)六、踩坑记录 1问题描述spectral.imshow(img)时图像一闪而过并且spectral好像没有类似CV2的waitKey方法。所以无法暂停。
C:\Users\admin\AppData\Roaming\Python\Python38\site-packages\spectral\graphics\spypylab.py:796: UserWarning: Failed to create RectangleSelector object. Interactive pixel class labeling will be unavailable. warnings.warn(msg) 解决方法借助CV2的waitKey
在ground_truth spectral.imshow(classes output_image.astype(int),figsize (9,9),colorsksc_color)下加入cv图像显示
cv2.imshow(1,output_image) cv2.waitKey(0) 2问题描述AttributeError: module spectral has no attribute preprocessing 解决方法:
导入该模块
from sklearn import preprocessing 3问题描述AttributeError: DataFrame object has no attribute as_matrix
解决方法as_matrix()属性已被淘汰所以DataFrame对象没有as_matrix属性
解决方法将 as_matrix() 改为 values
示例如下
将
data data.as_matrix()
改为 data data.values