python,支持向量机(svm)散点图

导入所需要的库:

from sklearn.svm import SVC
from sklearn.metrics import accuracy_score
from sklearn.metrics import confusion_matrix
import matplotlib.pyplot as plt
from sklearn.datasets import make_moons
from sklearn.model_selection import train_test_split

随机生成数据集,并且将数据集进行划分,下面是按1:4划分的。

X,y=make_moons(n_samples=500,noise=0.18,random_state=0)
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2,random_state=0)

引用支持线性核函数向量机(svm)模型,并且对模型进行训练。

#使用线性核函数的SVM
line_svm = SVC(kernel="linear")
line_svm=line_svm.fit(X_train, y_train)

使用模型对测试集进行预测,并且输出分类准确率、混淆矩阵。

y_line=line_svm.predict(X_test)
print("线性核函数SVM的分类准确率:",accuracy_score(y_test,y_line))
print("混淆矩阵:")
print(confusion_matrix(y_test,y_line))

依次使用多项式核函数、高斯核函数的支持向量机,并且输出其准确率和混淆矩阵。

#使用多项式核函数的SVM
poly_svm = SVC(kernel="poly")
poly_svm=poly_svm.fit(X_train, y_train)
#预测
y_poly=poly_svm.predict(X_test)
print("多项式核函数SVM的分类准确率:",accuracy_score(y_test,y_poly))
print("混淆矩阵:")
print(confusion_matrix(y_test,y_poly))
# print("其他度量:")
# print(classification_report(y_test,y_poly))

#使用高斯核函数的SVM
rbf_svm = SVC(kernel="rbf")
rbf_svm=rbf_svm.fit(X_train, y_train)
#预测
y_rbf=rbf_svm.predict(X_test)
print("高斯核函数SVM的分类准确率:",accuracy_score(y_test,y_rbf))
print("混淆矩阵:")
print(confusion_matrix(y_test,y_rbf))

对上述三种方法进行可视化展示:

plt.figure(figsize=(10,10))
plt.subplot(221)
plt.scatter(X_test[:,0],X_test[:,1],c=y_test,s=20,cmap="rainbow")
plt.title("Original")

plt.subplot(222)
plt.scatter(X_test[:,0],X_test[:,1],c=y_line,s=20,cmap="rainbow")
plt.title("line_SVM")

plt.subplot(223)
plt.scatter(X_test[:,0],X_test[:,1],c=y_poly,s=20,cmap="rainbow")
plt.title("poly_SVM")

plt.subplot(224)
plt.scatter(X_test[:,0],X_test[:,1],c=y_rbf,s=20,cmap="rainbow")
plt.title("rbf_SVM")

plt.show()

运行结果:

全部代码如下:

from sklearn.svm import SVC
from sklearn.metrics import accuracy_score
from sklearn.metrics import confusion_matrix
import matplotlib.pyplot as plt
from sklearn.datasets import make_moons
from sklearn.model_selection import train_test_split

X,y=make_moons(n_samples=500,noise=0.18,random_state=0)
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2,random_state=0)

#使用线性核函数的SVM
line_svm = SVC(kernel="linear")
line_svm=line_svm.fit(X_train, y_train)
#预测
y_line=line_svm.predict(X_test)
print("线性核函数SVM的分类准确率:",accuracy_score(y_test,y_line))
print("混淆矩阵:")
print(confusion_matrix(y_test,y_line))
# print("其他度量:")
# print(classification_report(y_test,y_line))

#使用多项式核函数的SVM
poly_svm = SVC(kernel="poly")
poly_svm=poly_svm.fit(X_train, y_train)
#预测
y_poly=poly_svm.predict(X_test)
print("多项式核函数SVM的分类准确率:",accuracy_score(y_test,y_poly))
print("混淆矩阵:")
print(confusion_matrix(y_test,y_poly))
# print("其他度量:")
# print(classification_report(y_test,y_poly))

#使用高斯核函数的SVM
rbf_svm = SVC(kernel="rbf")
rbf_svm=rbf_svm.fit(X_train, y_train)
#预测
y_rbf=rbf_svm.predict(X_test)
print("高斯核函数SVM的分类准确率:",accuracy_score(y_test,y_rbf))
print("混淆矩阵:")
print(confusion_matrix(y_test,y_rbf))
# print("其他度量:")
# print(classification_report(y_test,y_rbf))

plt.figure(figsize=(10,10))
plt.subplot(221)
plt.scatter(X_test[:,0],X_test[:,1],c=y_test,s=20,cmap="rainbow")
plt.title("Original")

plt.subplot(222)
plt.scatter(X_test[:,0],X_test[:,1],c=y_line,s=20,cmap="rainbow")
plt.title("line_SVM")

plt.subplot(223)
plt.scatter(X_test[:,0],X_test[:,1],c=y_poly,s=20,cmap="rainbow")
plt.title("poly_SVM")

plt.subplot(224)
plt.scatter(X_test[:,0],X_test[:,1],c=y_rbf,s=20,cmap="rainbow")
plt.title("rbf_SVM")

plt.show()
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 为了在 Python 中可视化支持向量机SVM)高光谱像分类,首先需要准备好所需的数据和模型。这可以使用 scikit-learn 等机器学习库来实现。 然后,您可以使用 matplotlib 等 Python 可视化库来绘制像。 例如,下面是一个使用 matplotlib 和 SVM 进行高光谱像分类的简单示例: ```python import matplotlib.pyplot as plt from sklearn import datasets from sklearn import svm # 加载数据 data = datasets.load_iris() X = data["data"] Y = data["target"] # 训练模型 model = svm.SVC(kernel="linear") model.fit(X, Y) # 绘制像 plt.scatter(X[:, 0], X[:, 1], c=Y, cmap=plt.cm.Paired) plt.show() ``` 上面的代码会加载 iris 数据集,并使用 SVM 线性核函数对其进行分类,然后使用 matplotlib 绘制。你也可以尝试使用其他类型的表,例如布矩阵或决策边界来可视化分类结果。 希望这对你有帮助。如果你有任何其他问题,请随时告诉我。 ### 回答2: 支持向量机(Support Vector Machine, SVM)是一种常用的机器学习算法,用于分类和回归分析。在高光谱像分类中,我们可以使用Python来实现SVM并进行可视化。 首先,我们可以使用Python中的sklearn库来实现SVM分类器。我们需要导入相应的库和数据集。然后,我们可以对数据集进行预处理,例如标准化或归一化。接下来,我们可以使用SVM模型对数据进行训练和测试,并得到分类的结果。 在进行可视化方面,我们可以使用matplotlib库来绘制像。我们可以将分类结果可视化为不同类别的颜色或标记在高光谱像上。这样可以直观地显示出不同类别在像中的分布情况。 此外,我们还可以绘制决策边界,将不同类别分隔开来。这样可以更清楚地显示出分类结果。我们可以使用contour函数绘制等高线,以将不同类别分隔开来。 另外,我们还可以使用交叉验证方法来评估分类器的性能。我们可以使用Python中的cross_val_score函数来计算交叉验证的准确率。这样可以更客观地评估分类器的性能,并为调整参数提供指导。 总之,使用Python实现支持向量机高光谱像分类的可视化包括SVM模型的实现、数据的预处理、分类结果的可视化以及性能评估等步骤。这样可以更好地理解和分析高光谱像的分类结果,并为后续的研究和应用提供参考。 ### 回答3: 支持向量机(Support Vector Machine,SVM)是一种常用的机器学习算法,可用于高光谱像分类。在Python中,我们可以使用相关库和模块来实现SVM高光谱像分类的可视化。 首先,我们需要安装所需的库和模块,包括numpy、matplotlib、sklearn等。然后,导入相应的包和模块: ``` import numpy as np import matplotlib.pyplot as plt from sklearn import svm ``` 接下来,我们需要加载和准备高光谱像数据集。可以使用numpy库中的loadtxt函数加载以逗号分隔的文本文件,其中包含像数据和对应的标签。我们可以将像数据存储在X中,将标签存储在y中。 ``` # 加载数据集 data = np.loadtxt('data.csv', delimiter=',') X = data[:,:-1] y = data[:,-1] ``` 然后,我们使用svm库中的SVC函数来创建支持向量机模型。可以设置不同的核函数和参数来优化模型的性能。 ``` # 创建支持向量机模型 model = svm.SVC(kernel='linear', C=1.0) ``` 接下来,我们使用模型拟合训练数据: ``` # 拟合模型 model.fit(X, y) ``` 最后,我们可以使用matplotlib库中的绘函数来可视化支持向量机模型在高光谱像上的分类结果。 ``` # 可视化分类结果 plt.scatter(X[:, 0], X[:, 1], c=y, cmap=plt.cm.Paired) plt.scatter(model.support_vectors_[:, 0], model.support_vectors_[:, 1], s=80, facecolors='none', edgecolors='k') plt.xlabel('Feature 1') plt.ylabel('Feature 2') plt.show() ``` 通过以上步骤,我们可以实现使用Python支持向量机SVM)对高光谱像进行分类,并可视化分类结果。这样可以帮助我们更好地理解和分析高光谱像中的数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值