plt.xlabel('sepal length [cm]') plt.ylabel('petal length [cm]') plt.legend(loc='upper left') plt.tight_layout() #plt.savefig('./images/02_06.png', dpi=300) plt.show() # エボックに関するプロット ppn = Perceptron(eta=0.1, n_iter=10) ppn.fit(X, y) plt.plot(range(1, len(ppn.errors_) + 1), ppn.errors_, marker='o') plt.xlabel('Epochs') plt.ylabel('Number of updates') plt.tight_layout() # plt.savefig('./perceptron_1.png', dpi=300) plt.show() # 決定境界のプロット plot_decision_regions(X, y, classifier=ppn) plt.xlabel('sepal length [cm]') plt.ylabel('petal length [cm]') plt.legend(loc='upper left') plt.tight_layout() # plt.savefig('./perceptron_2.png', dpi=300) plt.show()
# 1-100行目の目的関数の抽出 y = df.iloc[0:100, 4].values # Iris-setosaを-1,Iris-virginicaを1に変換 y = np.where(y == 'Iris-setosa', -1, 1) # 1-100行目の1,3列目の抽出 X = df.iloc[0:100, [0, 2]].values X_std = np.copy(X) X_std[:, 0] = (X[:, 0] - X[:, 0].mean()) / X[:, 0].std() X_std[:, 1] = (X[:, 1] - X[:, 1].mean()) / X[:, 1].std() ada = AdalineSGD(n_iter=15, eta=0.01, random_state=1) ada.fit(X_std, y) plot_decision_regions(X_std, y, classifier=ada) plt.title('Adaline - Stochastic Gradient Descent') plt.xlabel('sepal length [standardized]') plt.ylabel('petal length [standardized]') plt.legend(loc='upper left') plt.tight_layout() #plt.savefig('./adaline_4.png', dpi=300) plt.show() plt.plot(range(1, len(ada.cost_) + 1), ada.cost_, marker='o') plt.xlabel('Epochs') plt.ylabel('Average Cost') plt.tight_layout() # plt.savefig('./adaline_5.png', dpi=300)
# トレーニングデータをモデルに適合させる from sklearn.linear_model import Perceptron ppn = Perceptron(eta0=0.01, random_state=0, shuffle=True, n_iter_no_change=40)#n_iter=40, ppn.fit(X_train_std, y_train) # テストデータで予測を実施 # 誤分類のサンプルの個数を表示 y_pred = ppn.predict(X_test_std) print('Misclassified samples: %d' % (y_test != y_pred).sum()) # 分類の正解率を表示 from sklearn.metrics import accuracy_score print('Accuracy: %.2f' % accuracy_score(y_test, y_pred)) # プロット from ClassDecisionRegions import plot_decision_regions import matplotlib.pyplot as plt # トレーニングデータとテストデータの特徴量を行方向に結合 X_combined_std = np.vstack((X_train_std, X_test_std)) # トレーニングデータとテストデータのクラスラベルを結合 y_combined = np.hstack((y_train, y_test)) # 決定領域のプロット plot_decision_regions(X=X_combined_std, y=y_combined, classifier=ppn, test_idx=range(105,150)) # 軸ラベルの設定 plt.xlabel('petal length [standardized]') plt.ylabel('petal width [standardized]') # 凡例の設定 plt.legend(loc='upper left') # グラフの表示 plt.show()