import numpy as np import matplotlib.pyplot as plt from sklearn.neural_network import MLPClassifier from sklearn.metrics import confusion_matrix # tevesztesi matrixhoz ################# # 2 hold elkeszitese fuggvennyel def moons(n,r,w,t): alpha = np.random.uniform(0,np.pi,n) delta = np.random.uniform(-w/2,w/2,n) x1 = np.cos(alpha) * (r + delta) x2 = np.sin(alpha) * (r + delta) moon1=np.vstack((x1,x2,np.ones(n,))).T # output: 1 moon2=np.vstack((x1+r,-x2-t,np.zeros(n,))).T # output: 0 return np.concatenate((moon1,moon2),axis=0) moons=moons(300,10,6,-4) plt.plot(moons[:300,0],moons[:300,1],'bo') # blue output: 1 plt.plot(moons[300:,0],moons[300:,1],'ro') # red output: 0 plt.show() ############### # halozat elkeszitese X = moons[:,:2] # (600,2) d = moons[:,2] # (600,) net = MLPClassifier(solver='sgd', hidden_layer_sizes=(5,3),max_iter=20) # halozat elkeszitese net.fit(X, d) # tanitas net.predict([[10., 0.]]) # mi a (10,0) ponthoz a halozat altal hozzarendelt output? # A halozat parametereinek a kiiratasa # print(net.coefs_) # sulymatrixok # print(net.intercepts_)# torzitas vektorok # print(net.classes_) # osztalyok # print(net.loss_) # hiba # print(net.n_iter_) # hany epoch zajlott # print(net.n_layers_) # hany reteg ################################ # tevesztesi matrix elkeszitese y_true = d y_pred = net.predict(X) print(confusion_matrix(y_true, y_pred)) ################################ # a rosszul osztalyozott pontok megkeresese rosszak=np.empty(0,dtype=int) for i in range(600): if net.predict([[moons[i,0],moons[i,1]]])!=moons[i,2]: rosszak=np.append(rosszak,i) print(rosszak) # kiiratjuk a rosszul osztalyozott pontok indexeit print(len(rosszak)) # kiiratjuk a rosszul osztalyozott pontok szamat plt.plot(moons[:300,0],moons[:300,1],'bo') plt.plot(moons[300:,0],moons[300:,1],'ro') plt.plot(moons[rosszak,0],moons[rosszak,1],'k+') # bejeloljuk az abrankon a rosszul osztalyozott pontokat plt.show()