やりたい事
kNN法による分類をを変化させてグラフを書いてみます。
データを訓練データとテストデータに分割
引数stratifyに均等に分割させたいデータ(多くの場合は正解ラベル)を指定すると、そのデータの値の比率が一致するように分割されます。
# データを訓練データとテストデータに分割 X_train, X_test, y_train, y_test = train_test_split( cancer.data, cancer.target, stratify=cancer.target, random_state=66)
ソース
import matplotlib.pyplot as plt from sklearn.model_selection import train_test_split from sklearn.neighbors import KNeighborsClassifier from sklearn.datasets import load_breast_cancer #データセットの生成 cancer = load_breast_cancer() # データを訓練データとテストデータに分割 X_train, X_test, y_train, y_test = train_test_split( cancer.data, cancer.target, stratify=cancer.target, random_state=66) # 訓練データ、テストデータの精度を記録するための配列 training_accuracy = [] test_accuracy = [] # n_neighborsを1から11まで試す neighbors_settings = range(1, 11) for n_neighbors in neighbors_settings: clf = KNeighborsClassifier(n_neighbors=n_neighbors).fit(X_train, y_train) # 訓練データの精度を記録 training_accuracy.append(clf.score(X_train, y_train)) # テストデータの精度を記録 test_accuracy.append(clf.score(X_test, y_test)) plt.plot(neighbors_settings, training_accuracy, label="training accuracy") plt.plot(neighbors_settings, test_accuracy, label="test accuracy") plt.ylabel("Accuracy") plt.xlabel("n_neighbors") plt.legend()
偉人の名言
努力した者が全て報われるとは限らん。
しかし! 成功した者は皆すべからく努力しておる!!
鴨川源二
動画
なし