ud730ネタ。
off-the-shelf classifierとしてsklearn.linear_modelを使う。
from sklearn.linear_model import LogisticRegression # でっかいデータセットから1000サンプルだけ訓練データを取り出す。 train_dataset = all_data["train_dataset"] train_labels = all_data["train_labels"] mini_len = 1000 mini_train = train_dataset[0:mini_len] mini_train_labels = train_labels[0:mini_len] # ロジスティック回帰で訓練データにフィッティングさせる。 classifier = LogisticRegression() # 28x28の画像データの長さ1000の配列を、画像データを1次元化した長さ1000の配列にreshape X = mini_train.reshape(len(mini_train), 28*28) y = mini_train_labels classifier.fit(X, y) # テストデータをとってきてみて、頭の100個で予測結果を出す。 test_dataset = all_data["test_dataset"] d = test_dataset.reshape(len(test_dataset), 28*28) test_labels = all_data["test_labels"] cnt = 0 ok_cnt = 0 for i in range(100): predicted_value = classifier.predict(d[i].reshape(1,-1)) #print("predicted:", predicted_value, ", and expected:", test_labels[i]) if predicted_value == test_labels[i]: ok_cnt += 1 cnt += 1 print("accuracy:", ok_cnt/cnt)
accuracy: 0.82
わーぉ、意味も分からずに機械学習できちゃったぞ!
まぁ、なんかお叱りも出てるけどよく分からんよと思ったので「.reshape(1,-1)」を付け加えた。
/xxx/anaconda3/envs/py35/lib/python3.5/site-packages/sklearn/utils/validation.py:386: DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and willraise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample. DeprecationWarning)