sklearn.svm.svc() öğesini kullanarak 3 özellikli veri kümesine uyduğum. Matplotlib ve Axes3D kullanarak her bir gözlem için noktayı çizebilirim. Uygunluğu görmek için karar sınırını çizmek istiyorum. Karar sınırını boşuna çizmek için 2D örneklerini uyarlamayı denedim. Clf.coef_'ın karar sınırına normal bir vektör olduğunu anlıyorum. Puanları nereye böldüğünü görmek için bunu nasıl çizebilirim?3D Karar Sınırını Çizmek Doğrusal SVM'den
2
A
cevap
5
İşte bir oyuncak veri kümesi üzerinde bir örnektir. 3B'de çizimin matplotlib
ile eğlenceli olduğunu unutmayın. Bazen, düzlemin arkasında bulunan noktalar önündeymiş gibi görünebilir, bu yüzden neler olup bittiğini anlamak için arsa döndürmekle uğraşmak zorunda kalabilirsiniz.
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from sklearn.svm import SVC
rs = np.random.RandomState(1234)
# Generate some fake data.
n_samples = 200
# X is the input features by row.
X = np.zeros((200,3))
X[:n_samples/2] = rs.multivariate_normal(np.ones(3), np.eye(3), size=n_samples/2)
X[n_samples/2:] = rs.multivariate_normal(-np.ones(3), np.eye(3), size=n_samples/2)
# Y is the class labels for each row of X.
Y = np.zeros(n_samples); Y[n_samples/2:] = 1
# Fit the data with an svm
svc = SVC(kernel='linear')
svc.fit(X,Y)
# The equation of the separating plane is given by all x in R^3 such that:
# np.dot(svc.coef_[0], x) + b = 0. We should for the last coordinate to plot
# the plane in terms of x and y.
z = lambda x,y: (-svc.intercept_[0]-svc.coef_[0][0]*x-svc.coef_[0][1])/svc.coef_[0][2]
tmp = np.linspace(-2,2,51)
x,y = np.meshgrid(tmp,tmp)
# Plot stuff.
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(x, y, z(x,y))
ax.plot3D(X[Y==0,0], X[Y==0,1], X[Y==0,2],'ob')
ax.plot3D(X[Y==1,0], X[Y==1,1], X[Y==1,2],'sr')
plt.show()
İlgili konular
- 1. Doğuştan doğrusal olmayan dağınık saçılma
- 2. Çizmek/NaN
- 3. bir rgl 3d arsa
- 4. ggplot2 ile karar sınırları çizilsin mi?
- 5. Ağırlıklı Karar Ağaçları Entropy
- 6. Bir Karar Ağacı Oluşturma
- 7. Bir kenarlıktaki hücre sınırını kaldır
- 8. Dizin 256 bayt sınırını geçmiyor
- 9. ggplot2 içinde doğrusal çizgi çizilemiyor
- 10. Plot 3D prizmalar plotly
- 11. 3D dönüşüm?
- 12. 3d Sphere
- 13. Matplotlib arsa darbe yayılımı 3d
- 14. C# dizi Doğrusal Arama
- 15. Java'da Ağırlıklı Doğrusal Regresyon
- 16. Doğrusal zamanda sıralama
- 17. R doğrusal modelden log
- 18. Doğrusal süre Grafik algoritması
- 19. Haskell doğrusal cebir?
- 20. Android doğrusal hızlanma doğruluğu
- 21. CSS'de doğru doğrusal dönüşüm
- 22. doğrusal degrade köşegen gölge
- 23. Cant çizmek Java'daki şekiller
- 24. Apache Spark'de (pyspark 1.4.1) bir karar ağacını nasıl görselleştirir/çizerim?
- 25. Yansıtılmış görünümü değiştirmeye karar verin
- 26. Karar Ağacı Öğrenme ve Katkılı
- 27. Karar ağaçlarında çoğulluk sınıflandırması nedir?
- 28. jFree kullanarak 3B alan grafiği çizmek mümkün mü?
- 29. R'de 3D yığılmış histogram nasıl çizilir?
- 30. Plotted fonksiyonunu 3d matris olarak kaydetme
iyi cevap için teşekkürler ve çok net bir açıklama! Kesişmenin anlamını yanlış anladım! – pioneer903
Çok teşekkür ederim Chester. Sadece bir küçük hata ya da yazım hatası var: '(-svc.intercept_ [0] -svc.coef_ [0] [0] * x-svc.coef_ [0] [1]' __ * y__ ')/svc.coef_ [0] [2] ' – mescarra