我正在学习机器学习教程。但我遇到了意想不到的麻烦。我尝试了更多的方法来解决错误。但我不能解决
def tur_dagilim_grafigi(turler=("bradypus_variegatus_0",
"microryzomys_minutus_0")):
"""
Tür dağılımın grafiği
"""
if len(turler)>2:
print("Not:İkiden fazla tür sağlandığında sadece ilk ikisi kullanacak")
t0=time()
#Baskılanmış veriyi yükle
veri=fetch_species_distributions()
xekseni,yekseni=construct_grids(veri)
#X,Y koordinatları içinde eksen
X,Y=np.meshgrid(xekseni,yekseni[::-1])
#Her tür için bir demet oluştur.
BV_demet=demet_turleri_olustur(turler[0],veri.train,veri.test,veri.coverages,xekseni,yekseni)
MM_demet=demet_turleri_olustur(turler[1],veri.train,veri.test,veri.coverages,xekseni,yekseni)
#Değerlendirme için arkaplan puanları
np.random.seed(13)
arkaplan_puanlari=np.c_[np.random.randint(low=0,high=veri.Ny,size=10000),
np.random.randint(low=0,high=veri.Nx,size=10000)].T
#Kapsamaya ait tüm ölçümlerin etki kullanımını yapacağız.
#Kara puanları-Bu bize kara ve su arasında karar vermemize yardım edecektir.
kara_referansi=veri.coverages[6]
for a,tur in enumerate([BV_demet,MM_demet]):
print("_"*80)
print("Türlerin dağılımı modellemesi %s" % tur.name)
ortalama=tur.cov_train.mean(axis=0)
sapma=tur.cov_train.std(axis=0)
sapmafarki=(tur.cov_train-ortalama)/sapma
print("-Tek sınıf SVM uydur",end='')
siniflandirma=svm.OneClassSVM(nu=0.1,kernel="rbf",gamma=0.5)
siniflandirma.fit(sapmafarki)
print("yapıldı")
#Güney Amerika harita arazisi
plt.subplot(1,2,a+1)
if tabanharitasi:
print("Kıyı çizgisi arazisi taban haritası kullanıyor")
l=Basemap(projection='cyl',llcrnrlat=Y.min(),
urcrnlat=Y.max(),
llcrnlon=X.min(),
urcrnrlon=X.max(),
resolution='c')
l.drawcoastlines()
l.drawcountries()
else:
print("kapsamdan kıyı çizgisi arazisi")
plt.contour(X,Y,kara_referansi,levels=[-9998],colors='k',linestyles='solid')
plt.xticks([])
plt.yticks([])
print("tür dağılımını tahmin etme")
#Eğitilmiş veriyi kullanarak tür dağılımını tahmin edelim.
K=np.ones((veri.Nx,veri.Ny),dtype=np.float64)
#Biz sadece kara puanlarını tahmin edeceğiz.
idx=np.where(kara_referansi >= -9999)
kapsam_karasi=veri.coverages[:,idx[0],idx[1]].T
tahmin=siniflandirma.decision_function((kapsam_karasi-ortalama) / sapma)
K *=tahmin.min()
K[idx[0],idx[1]]=tahmin
seviyeler=np.linspace(K.min(),K.max(),25)
K[kara_referansi==-9999]=-9999
plt.contourf(X, Y, K, levels=seviyeler, cmap=plt.cm.Reds)
plt.colorbar(format='%.2f')
#Eğitilmiş/sınama puanlarının saçılımı
plt.scatter(turler.asf_egitim['dd long'],turler.asf_egitim['dd lat'],s=2**2,c='yellow',marker='*',label='eğitim')
plt.scatter(turler.asf_sinama['dd long'],turler.asf_egitim['dd lat'],s=2**2,c='blue',marker='^',label='sınama')
plt.legend()
plt.title(tur.name)
plt.axis('eşit')
arkaplan_tahmini=K[arkaplan_puani[0],arkaplan_puani[1]]
tahmin_sinama=siniflandirma.decision_function((turler.X-ortalama) / sapma)
r=np.r_[tahmin_sinama,arkaplan_tahmini]
sayi=np.r_[np.ones(tahmin_sinama.shape),np.zeros(arkaplan_tahmini.shape)]
fpr,tpr,esikler=metrics.roc_curve(sayi,r)
roc_auc=metrics.auc(fpr,tpr)
plt.text('Alan ROC eğrisi altında:%f' % roc_auc)
print("\nZaman sarkması:%.2fs" % (time() - t0))
目前没有回答
相关问题 更多 >
编程相关推荐